博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android端实时音视频开发指南
阅读量:5127 次
发布时间:2019-06-13

本文共 4186 字,大约阅读时间需要 13 分钟。

简介

yun2win-sdk-Android提供Android端完整解决方案,方便客户快速集成实时音视频功能. SDK 提供的能力如下:

  • 发起
  • 加入
  • AVClient
  • Channel
  • AVMember

 

开发准备

  • 到  下载 及demo
  • 下载源码详解

    app为主体显示Module uikit为公共服务Module

    app下libs的yun2win-av-0.1.jar为音视频,屏幕共享SDK

    主体Module结构图

    base文件夹:app初始相关类

    Bridge文件夹:推送连接、接收和发送

    common文件夹:公共配置等

    db文件夹:数据库管理

    entities文件夹:实体集合

    manage文件夹:模型实体管理

    model文件夹:模型集合

    service文件夹:服务管理

    ui文件夹:界面相关

  • 配置信息

    在清单文件AndroidManifest.xml里加入以下权限,以及写上你注册的appkey

    权限配置(实际开发中可能需要更多的权限,可参考demo):

    复制

    关于YUN2WIN_APP_KEY对应的value获取,在创建应用后,申请APPKEY并进行相关配置。

  • app打包混淆

    在proguard文件中加入以下keep

    -keep class com.yun2win.** {*;}

    -dontwarn com.yun2win.**

初始化

将以下代码复制到项目Application类onCreate()中

复制
AVClient.init(this);

发起

调用以下代码创建频道:

复制
private void createChannel(){ avClient = new AVClient(currentUser.getEntity().getId(), currentUser.getEntity().getName(), currentUser.getEntity().getAvatarUrl(),currentUser.getImToken().getAccessToken()); //创建频道 avClient.createChannel(new AVBack.Result() { @Override public void onSuccess(Channel channel) { avChannel = channel; avChannel.setOnMembersChangedListener(new MembersChangedListener()); avChannel.setOnVideoListener(new VideoListener()); avChannel.setOnAudioListener(new AudioListener()); avChannel.setOnScreenListener(new ScreenListener()); avChannel.join();//加入通知 memberNotice(memberIds); if(callType.equals(EnumManage.AvCallType.video.toString())){ handler.sendEmptyMessage(Oper.OpenVideo); handler.sendEmptyMessage(Oper.OpenAudio); }else{ handler.sendEmptyMessage(Oper.OpenAudio); } } @Override public void onError(Integer integer) { noticeShow("创建频道失败"); } }); }

加入

调用以下代码加入频道:

复制
private void getChannel(String channelId){ avClient = new AVClient(currentUser.getEntity().getId(),currentUser.getEntity().getName(), currentUser.getEntity().getAvatarUrl(), currentUser.getImToken().getAccessToken()); //获取频道 avClient.getChannel(channelId, new AVBack.Result() { @Override public void onSuccess(Channel channel) { avChannel = channel; avChannel.setOnMembersChangedListener(new MembersChangedListener()); avChannel.setOnVideoListener(new VideoListener()); avChannel.setOnAudioListener(new AudioListener()); avChannel.setOnScreenListener(new ScreenListener()); avChannel.join();//加入通知 if (callType.equals(EnumManage.AvCallType.video.toString())) { handler.sendEmptyMessage(Oper.OpenVideo); handler.sendEmptyMessage(Oper.OpenAudio); } else { handler.sendEmptyMessage(Oper.OpenAudio); } } @Override public void onError(Integer integer) { noticeShow("获取频道失败"); } }); }

提醒

加入方法必须填入需要加入的channelId。

Channel

频道类:主要方法,其他查看API手册

复制
join()加入频道 void leave() 离开频道 void openAudio() 开启语音 void openVideo() 开启视频 void setMute(boolean mute) 设置静音 void setOnAudioListener(Channel.OnAudioListener onAudioListener) 设置音频监听 void setOnMembersChangedListener(Channel.OnMembersChangedListener onMembersChangedListener) 设置成员变更监听 void setOnScreenListener(Channel.OnScreenListener onScreenListener) 设置屏幕共享监听 void setOnVideoListener(Channel.OnVideoListener onVideoListener) 设置视频监听 void setSpeaker(boolean speaker) 设置扬声器 void switchCamera() 转摄像头

AVMember

频道成员类:主要方法,其他查看API手册

复制
org.webrtc.VideoTrack getScreenTrack() 获取屏幕共享流 java.lang.String getUid() 获取成员唯一标识码 org.webrtc.VideoTrack getVideoTrack() 获取视频流 boolean isAudioMuted() 是否开启静音 boolean isAudioOpened() 是否开启语音 boolean isScreenOpened() 是否开屏幕共享 boolean isVideoOpened() 是否开启视频 void setAudioMuted(boolean audioMuted) 设置是否静音 void setAudioOpened(boolean audioOpened) 设置是否开启语音 void setScreenOpened(boolean screenOpened) 设置屏幕共享 void setScreenTrack(org.webrtc.VideoTrack screenTrack) 设置屏幕共享流 void setUid(java.lang.String uid) 设置成员唯一标识码 void setVideoOpened(boolean videoOpened) 设置是否开启视频 void setVideoTrack(org.webrtc.VideoTrack videoTrack) 设置视频流 从类继承的方法 java.lang.Object

注意事项

复制
1.创建或者获取Channel对象后,都需要调用join方法加入频道进行实时通讯. 2.为确保接收到所有回调,设置相应监听应该在调用join方法之前. 3.SDK不会自动开启音频视频屏幕共享和白板功能,开发时根据需求调用各功能. 4.屏幕共享功能在移动端暂时不能主动发起.

用户手册

 

 

转载于:https://www.cnblogs.com/yun2win/p/5780872.html

你可能感兴趣的文章
NIOS II 中直接调用Modelsim仿真
查看>>
XPath 实例
查看>>
JavaScript操作符(布尔操作符、乘性操作符和加性操作符)
查看>>
浅谈JavaScript的事件(事件处理程序)
查看>>
前端知识小总结3
查看>>
curl模拟调用接口
查看>>
网页如何获取手机屏幕宽度
查看>>
WebGL中的函数及内置属性介绍
查看>>
【css学习整理】css基础(样式,语法,选择器)
查看>>
poj1450 Gridland
查看>>
站立会议(11月26日)
查看>>
hadoop学习之yarn资源管理
查看>>
PAT乙级1009.说反话(20)
查看>>
仿《雷霆战机》飞行射击手游开发--项目总览
查看>>
jmeter函数简介
查看>>
eclipse 快捷键
查看>>
md5和base64加密解密
查看>>
[ HNOI 2006 ] 公路修建问题
查看>>
[Paper] LCS: An Efficient Data Eviction Strategy for Spark
查看>>
2748: [HAOI2012]音量调节 bzoj
查看>>