android,视频通话,解决方案

上传人:bin****86 文档编号:56672065 上传时间:2018-10-14 格式:DOCX 页数:20 大小:24.85KB
返回 下载 相关 举报
android,视频通话,解决方案_第1页
第1页 / 共20页
android,视频通话,解决方案_第2页
第2页 / 共20页
android,视频通话,解决方案_第3页
第3页 / 共20页
android,视频通话,解决方案_第4页
第4页 / 共20页
android,视频通话,解决方案_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《android,视频通话,解决方案》由会员分享,可在线阅读,更多相关《android,视频通话,解决方案(20页珍藏版)》请在金锄头文库上搜索。

1、android,android,视频通话视频通话, ,解决方案解决方案篇一:Android 平台的 JAVA 视频通话代码如何用 java 代码实现 Android 的视频通话 最近学习 Android 平台下跨平台音视频通信开发,虽然网上有很多开源项目供我们参考学习,但音视频效果很一般,还有很多不稳定的因素,毕竟是开源嘛。在国内我找到了一个比较好音视频通信解决方案(百度下载官方网站/ Anychat for Android 的 demo ) ,该案例提供了纯 Java 语言接口供我们调用,随后我参照官方 android demo 程序和开发文档并结合自己的见解写了一个 android音频通信

2、软件,200 行以内代码就搞定了(难以相信吧) 。其实我只是调用其相关 API 即可实现。以下是我自己写的Java 代码,以备大家互相学习: 1. /* 2. * Android 视频聊天 3. * 1、初始化 SDK 2、连接服务器、 3、用户登录;4、进入房间;5、打开本地视频;6、请求对方视频 4. */ 5. public class VideoChatActivity extends Activity implements AnyChatBaseEvent 6. 7. private AnyChatCoreSDK anychat;/ 核心 SDK 8. private Surface

3、View remoteSurfaceView; / 对方视频 9. private SurfaceView localSurfaceView;/ 本地视频 10. private ConfigEntity configEntity; 11. private boolean bSelfVideoOpened = false;/ 本地视频是否已打开 12. private boolean bOtherVideoOpened = false; / 对方视频是否已打开 13. private TimerTask mTimerTask;/ 定时器 14. private Timer mTimer = n

4、ew Timer(true); 15. private Handler handler; / 用 Handler 来不间断刷新即时视频 16. private List userlist = new ArrayList();/保存在线用户列表 17. private int userid; / 用户 ID 18. Override 19. public void onCreate(Bundle savedInstanceState) 20. (savedInstanceState); (_video_chat); = (SurfaceView) findViewById(_remote); =

5、 (SurfaceView) findViewById(_local); = (this);/加载视频通话设置 ();/ 初始化 SDK 连接服务器 = new TimerTask() 28. public void run() 29. Message mesasge = new Message();30. (mesasge); 31. 32.; (mTimerTask, 1000, 100); = new Handler() 35. Override 36. public void handleMessage(Message msg) 37. VideoChat();/ 不间断显示即时视频通

6、话画面 38. (msg); 39. 40.; 41. 42. / 初始化 SDK 连接服务器 43. private void loginSystem() (anychat = null) 45. anychat = new AnyChatCoreSDK(); 46. (this);/ 设置基本事件回调函数 47. if ( != 0) / 使用 ARMv6 指令集 48. (AnyChatDefine. 49. BRAC_SO_CORESDK_USEARMV6LIB, 1); 50. (_INT, 0); / 初始化 SDK 51. (“, 8906);/ 连接服务器 53. 54. /

7、显示即时视频通话画面 55. public void VideoChat() (!bOtherVideoOpened) 57. if (userid) = 2 58. 60. (_565); 61. (userid), 62. (userid); 63. Surface s = ();/ 获得视频画面 64. (userid, s, 0, 0, 0, 0); / 调用 API 显示视频画面 65. bOtherVideoOpened = true; 66. 67. (!bSelfVideoOpened) 69. if (-1) = 2 70. 72. (_565); 73. (-1),74.

8、(-1); 75. Surface s = (); 76. (-1, s, 0, 0, 0, 0); 77. bSelfVideoOpened = true; 78. 79. 80. 81. public void OnAnyChatConnectMessage(boolean bSuccess) (!bSuccess) 83. (, “连接服务器失败,自动重连,请稍 后.“, _SHORT).show(); 84. (“android“, “);/ 服务器连接成功 用户登录 86. 87. public void OnAnyChatLoginMessage(int dwUserId, int

9、 dwErrorCode) (dwErrorCode = 0) 89. (this, “登录成功!“, _SHORT).show(); 90. (1, “);/ 用户登录成功 进入房间 91. ApplyVideoConfig(); 92. else 93. (this, “登录失败,错误代码: “ + dwErrorCode, _SHORT).show(); 94. 95. 96. public void OnAnyChatEnterRoomMessage(int dwRoomId, int dwErrorCode) (dwErrorCode = 0) / 进入房间成功 打开本地音视频 98

10、. (this, “进入房间成功“, _SHORT).show(); 99. (-1, 1); / 打开本地视频 100. (-1, 1); / 打开本地音频 101. else 102. (this, “进入房间失败,错误代码: “ + dwErrorCode, _SHORT).show(); 103. 104. 105. public void OnAnyChatOnlineUserMessage(int dwUserNum, int dwRoomId) (dwRoomId = 1) 107. int user = (); 108. if ( != 0) 109. for (int i =

11、 0; i (useri+“); 111. 112. String temp =(0); 113. userid = (temp); 114. (userid, 1);/ 请求用户视频115. (userid, 1); / 请求用户音频 116. 117. else 118. (, “当前没有在线用户 “, _SHORT).show(); 119. 120. 121. 122. public void OnAnyChatUserAtRoomMessage(int dwUserId, boolean bEnter) (bEnter) /新用户进入房间 124. (dwUserId+“); 125

12、. /用户离开房间 127. if (dwUserId = userid) 128. 129. (, “视频用户已下线 “, _SHORT).show(); 130. (userid, 0);/ 关闭用户视频 131. (userid, 0); / 关闭用户音频 132. (userid+“); /移除该用户 133. if () != 0) 134. temp =(0); = (temp); (userid, 1);/ 请求其他用户视频 (userid, 1); / 请求其他用户音频 139. 140. 141. else 142. (dwUserId+“); /移除该用户 143. 144

13、. 145. 146. public void OnAnyChatLinkCloseMessage(int dwErrorCode) (, “连接关闭,error: “ + dwErrorCode, _SHORT).show(); 148. 149. Override 150. protected void onDestroy() /程序退出 (-1); /离开房间 (); /注销登录 ();/释放资源 (); ();156. 157. / 根据配置文件配置视频参数 158. private void ApplyVideoConfig() ( = 1) / 自定义视频参数配置 160. 161

14、. / 设置本地视频编码的码率(如果码率为 0,则表示使用质量优先模式) 162. (_SO_LOCALVIDEO_BITRATECTRL,configEn ); 163. if ( = 0) 164. 165. / 设置本地视频编码的质量 166. (_SO_LOCALVIDEO_QUALITYCTRL,conf ); 167. 168. / 设置本地视频编码的帧率 169. (_SO_LOCALVIDEO_FPSCTRL,configEntity .videoFps); 170. / 设置本地视频编码的关键帧间隔 171. (_SO_LOCALVIDEO_GOPCTRL,configEnt

15、ity .videoFps * 4); 172. / 设置本地视频采集分辨率 173. (_SO_LOCALVIDEO_WIDTHCTRL,configEnti _width); 174. (_SO_LOCALVIDEO_HEIGHTCTRL,configEnt _height); 175. / 设置视频编码预设参数(值越大,编码质量越高,占用 CPU 资源也会越高) 176. (_SO_LOCALVIDEO_PRESETCTRL,configEnt ); 177. 178./ 让视频参数生效 (_SO_LOCALVIDEO_APPLYPARAM,configEntity. configMode); 180./ P2P 设置 (_SO_NETWORK_P2PPOLITIC, bleP2P); 182./ 本地视频 Overlay 模式设置 (_SO_LOCALVIDEO_OVERLAY, eoOverlay); 184./ 回音消除设置 (_SO_AUDIO_ECHOCTRL, EC); 186./ 平台硬件编码设置 篇二:即时通讯 手机音视频技术开发方案“SDK 即时通讯平台”是一套跨平台的即时通讯解决方案,基于先进的视频编码标准、AAC 音频编

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号