• 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

    0
    105
    10.24MB
    2020-07-10
    10
  • provide.zip

    ContentProvider方法封装,便于多表集中处理和调用,只需要继承ProvideCall类并传入必填参数,然后执行new Provide.Sub().construct();便可以轻松调用

    0
    48
    16KB
    2020-01-02
    10
  • A星算法在二维地图中简单应用

    在地图中选好起始点,然后调用A星算法规划出最优路线,此Demo对A*算法中一些细节进行了相应的优化大大提升了检索的效率

    0
    268
    3.33MB
    2017-09-26
    16
  • android权限检测(简单明了)

    使用的是google提供的库文件easypermissions进行的权限检测,简单好用

    0
    1255
    22.54MB
    2017-08-18
    50
  • androidMP4转换成gif动图

    android中实现将MP4文件转换成gif动图

    5
    300
    31.65MB
    2017-08-16
    32
  • android增量更新工具库文件

    android增量更新的所需的库文件

    0
    56
    746KB
    2017-08-16
    10
  • android事件总线eclipse版demo

    android事件总线eclipse版测试demo

    0
    78
    2.84MB
    2016-03-30
    11
  • 文字转语音

    轻松实现文字转语音的操作,发音人主要是科大讯飞的发音人

    0
    69
    28.45MB
    2015-08-26
    0
  • android 二维码实现源码

    android二维码实现源码,通过地址生成对应的二维码

    0
    54
    2.23MB
    2014-09-11
    10
  • android仿Iphone时间选择器源码

    样式可以根据自己的需求进行修改,下下来就可以使用到自己的工程中,仿iphone时间选择器

    5
    103
    1.58MB
    2014-08-22
    9
  • 求知

    发布1个问题
  • 分享精英

    成功上传11个资源即可获取
  • 创作能手

    授予每个自然周发布1篇到3篇原创IT博文的用户
关注 私信
上传资源赚积分or赚钱