androidLanCal
加入speex回声降噪算法,接入方式:
android 局域网可视对讲 使用步骤: 一:将arr包导入app工程的libs包中
二:build.gradle中添加一下依赖 implementation fileTree(include: ['.jar','.aar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'org.ligboy.retrofit2:converter-fastjson-android:2.1.0'
implementation 'com.yanzhenjie:permission:2.0.0-rc4'
三:初始化aar库
NettyCore.me().init(targetIp, 8888, 9999);
四:初始化可视对讲 boolean isSend = true;
private SurfaceView localView;
private SurfaceView remoteView;
TenetCore.me().initCall(new KMessageCall() { @Override public void onTcpClientReceive(Object msg) { Log.e(TAG, "onMessageResponse:" + msg); } @Override public void onTcpServerReceive(Object msg) { Log.e(TAG, "onMessageResponse:" + msg);
}
@Override
public void onUdpServerReceive(Object msg) {
synchronized (msg) {
DatagramPacket packet = (DatagramPacket) msg;
ByteBuf buf = (ByteBuf) packet.copy().content(); //字节缓冲区
byte[] req = new byte[buf.readableBytes()];
buf.readBytes(req);
try {
String receiveMsg = new String(req, "UTF-8");
Log.e(TAG, "接收消息" + receiveMsg);
KMessage message = JSONObject.parseObject(receiveMsg, KMessage.class);
switch (message.getMsgtype()) {
case KMessage.MES_TYPE_NOMAL:
Log.e(TAG, "接收普通消息" + message.getMsgBody());
break;
case KMessage.MES_TYPE_VIDEO:
Log.e(TAG, "接收视频消息" + message.getFrame().length);
TenetCore.me().playVideo(message.getFrame());
break;
case KMessage.MES_TYPE_AUDIO:
Log.e(TAG, "接收音频消息" + message.getFrame().length);
TenetCore.me().playAudio(message.getFrame(), message.getFrame().length);
break;
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
},
localView, remoteView, new BaseCallBack() {
@Override
public void audioEncode(byte[] audioBytes) {
if (isSend) {
NettyCore.me().udpSend(audioBytes, KMessage.MES_TYPE_AUDIO);
}
}
@Override
public void cameraEncode(byte[] cameraBytes) {
if (isSend) {
Log.e(TAG, "发送视频消息");
NettyCore.me().udpSend(cameraBytes, KMessage.MES_TYPE_VIDEO);
}
}
@Override
public void cameraDecode(byte[] cameraBytes) {
Log.e(TAG, "222解码后视频长度" + cameraBytes.length+",content:"+ DataFormatUtil.bytes2HexString(cameraBytes));
}
});
五:启动编码
TenetCore.me().startEncode();
六:停止编码
TenetCore.me().stopEncode();
说明:想要源码扩展功能的的可以加Q1269396188
provide.zip
ContentProvider方法封装,便于多表集中处理和调用,只需要继承ProvideCall类并传入必填参数,然后执行new Provide.Sub().construct();便可以轻松调用
A星算法在二维地图中简单应用
在地图中选好起始点,然后调用A星算法规划出最优路线,此Demo对A*算法中一些细节进行了相应的优化大大提升了检索的效率
android权限检测(简单明了)
使用的是google提供的库文件easypermissions进行的权限检测,简单好用
androidMP4转换成gif动图
android中实现将MP4文件转换成gif动图
android增量更新工具库文件
android增量更新的所需的库文件
android事件总线eclipse版demo
android事件总线eclipse版测试demo
文字转语音
轻松实现文字转语音的操作,发音人主要是科大讯飞的发音人
android 二维码实现源码
android二维码实现源码,通过地址生成对应的二维码
android仿Iphone时间选择器源码
样式可以根据自己的需求进行修改,下下来就可以使用到自己的工程中,仿iphone时间选择器
android播放gif图片动画
可以实现gif动画播放,已经封装好jar包可以直接使用
android在线升级实现源码
可以实现带进度条的apk在线升级源码,有需要的可以参考下
async-http-client.jar包下载
用于android异步加载框架jar包,很实用async_http_client.jar
java been类从数据库查询反射出对应的been类集合
通过javabeen类从数据库中查询反射出对应的been类数据集合,写一个查询方法就可以通用
been对象反射出数据集合
通过been类直接从数据库查询反射出对应的been类数据集合,适合所有查询操作
ViewFlipper翻页效果
ViewFlipper加上动画效果实现数字的简单翻页效果
自定义TimePicker
自定义时间控件timePicker的样式
中英日在线翻译
通过百度翻译接口的调用,轻松实现在线网络翻译功能
openGl立方体纹理贴图
实现立方体各个面的贴图,对openGl的学习认识,openGl