声网平行操控 SDK 支持主流的 Linux、Android 设备端平台,Windows、Web、Linux、Android、iOS、macOS 操控端平台。
本文介绍如何通过声网平行操控 SDK 在 Android 操控端实现主要功能。
基于如下技术框架图,你可以结合你的实际业务进行开发。
确保你的开发设备满足以下要求:
你需要联系销售获取平行操控 Android SDK。
点击建立项目查看如何建立一个 Android 项目并添加平行操控场景需要用到的网络及设备权限。
接收 YUV 格式或已编码的视频数据,详细步骤请参考实现视频通话逻辑。
1、创建并初始化 RtmClient
对象,并设置事件监听。
String app_id = getApplicationContext().getString(R.string.agora_app_id);
RtcEngineConfig config = new RtcEngineConfig();
config.mContext = getBaseContext();
config.mAppId = app_id;
config.mEventHandler = mRtcEventHandler;
RtcEngine mRtcEngine = RtcEngine.create(config);
RtmClient mRtmClient = RtmClient.create(); // 创建 RtmClient
RtmConfig rtmConfig = new RtmConfig(); // 配置 RtmClient
rtmConfig.mUserId = userId.toString(); // userId 中仅支持传入内容为数值的字符串,例如 "1234567"
rtmConfig.mUseStringUID = false;
rtmConfig.mEventHandler = mRtmEventHandler; // 设置事件监听程序
rtmConfig.mAppId = getApplicationContext().getString(R.string.agora_app_id);
mRtmClient.initialize(rtmConfig); // 初始化 RtmClient
2、创建 Stream Channel 并加入频道。在使用 StreamChannel
类中的任何 API 之前,你需要先调用 createStreamChannel
创建 Stream Channel。
// 创建 Stream Channel
StreamChannel mStreamChannel = mRtmClient.createStreamChannel(channelName.toString());
// 加入频道
JoinChannelOptions options = new JoinChannelOptions();
options.token = getApplicationContext().getString(R.string.agora_app_id);
int errorCode = mStreamChannel.join(options);
3、加入频道中的 Topic 并发布消息。成功加入 Topic 后,SDK 会自动将你注册为该 Topic 的消息发布者,你可以在该 Topic 中发送消息。成功发送后,SDK 会把该消息分发给该 Topic 的所有订阅者。
// 加入 Topic
JoinTopicOptions options = new JoinTopicOptions();
options.messageQos = RtmMessageQos.RTM_MESSAGE_QOS_ORDERED;
int errorCode = mStreamChannel.joinTopic(topicName.toString(), options);
// 在 Topic 中发布消息
String msg = "xxx";
byte[] message = msg.getBytes();
int errorCode = mStreamChannel.publishTopicMessage(topicName.toString(), message);
4、订阅 Topic 及 Topic 中的消息发送者。
ArrayList<String> mSubscribeUserList = new ArrayList<>();
mSubscribeUserList.add("xxx");
TopicOptions options = new TopicOptions();
options.users = mSubscribeUserList;
int errorCode = mStreamChannel.subscribeTopic(topicName.toString(), options);
5、通过 onMessageEvent
事件通知接收远端用户的消息。
// 继承 IRtmEventHandler 类
public class RtmEventHandler implements IRtmEventHandler {
@Override
// 监听消息事件
public void onMessageEvent(MessageEvent event) {
String message = new String(event.message);
logUtil.visualLog_CALLBACK("on message event, channel: " + event.channelName + ", channelType:" + event.channelType +
", topicName: " + event.topicName + ", publisher: " + event.publisher + ", message: " + message);
}
}
6、退出并释放资源。
Editable topicName = this.mTopicName.getText();
int errorCode = mStreamChannel.leaveTopic(topicName.toString()); // 退出 Topic
int errorCode = mStreamChannel.leave(); // 退出频道
mStreamChannel.release(); // 销毁 Stream Channel
RtmClient.release(); // 销毁 RtmClient
声网在 SDK 包中提供了以下示例项目供你参考:
├── sdk # 声网的 SDK 库文件和头文件
└── samples # 实时音视频示例代码
你可以参考以下 API 文档: