1) 设置必要音视频参数,参考代码如下:
~~~
AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_AUTOROTATION, 1);
~~~
2) 摄像头硬件初始化
该操作需要在显示视频 activity 的 oncreate 中执行(注意:必须是 OnCreate 方法中初始化 Camera 设备),参考代码如下:
~~~
// 启动AnyChat传感器监听
anychat.mSensorHelper.InitSensor(this);
// 初始化Camera上下文句柄
AnyChatCoreSDK.mCameraHelper.SetContext(this);
//设置SURFACE_TYPE_PUSH_BUFFERS模式
mSurfaceLocal.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFER
S);
// 打开本地视频预览,开始采集本地视频数据
mSurfaceLocal.getHolder().addCallback(AnyChatCoreSDK.mCameraHelper);
~~~
3) 打开本地音视频(需要进入房间)
调用UserCameraControl打开视频,调用 UserSpeakControl打开音频。打开本地音视频数据需要在进入房间成功之后才有效,即在收到 OnAnyChatEnterRoom回调。参考代码如下:
~~~
//打开本地视频, 第一个参数用-1表示本地,也可以用本地的真实userid
anychat.UserCameraControl(-1, 1);
//打开本地音频
anychat.UserSpeakControl(-1, 1);
~~~
4) 关闭本地音视频
打开本地音视频后,可以在音视频交互的过程中选择关闭本地音视频。同时,还可以在关闭之后重新打开本地音视频。参考代码如下:
~~~
//关闭本地视频,第一个参数用-1表示本地,也可以用本地的真实userid
anychat.UserCameraControl(-1, 0);
//关闭本地音频
anychat.UserSpeakControl(-1, 0);
~~~
5) 请求远程音视频
请求通话目标用户的音视频数据,调用 UserCameraControl 打开视频,调用UserSpeakControl 打开音频,bindVideo、SetVideoUser 绑定显示视频的 surfaceview (mSurfaceRemote 为指定显示远程视频的
~~~
// mRemoteUserid为通话目标对象的userId;
int index = anychat.mVideoHelper.bindVideo(mSurfaceRemote.getHolder());
anychat.mVideoHelper.SetVideoUser(index,mRemoteUserid);
anychat.UserCameraControl(mRemoteUserid, 1);
anychat.UserSpeakControl(mRemoteUserid, 1);
~~~
在触发 OnAnyChatOnlineUser 或者 OnAnyChatEnterRoom 并判断通话目标对象已经进入当前房间之后,该操作才有效
6) 关闭远程音视频
请求远程音视频后,可以在音视频交互的过程中选择关闭远程音视频。同时,还可以在关闭之后重新请求远程音视频;在音视频交互结束之后需要调用该操作,释放远程音视频资源,参考代码如下:
~~~
//关闭远程视频, mRemoteUserid为通话目标的userid
anychat.UserCameraControl(mRemoteUserid, 0);
//关闭远程音频,
anychat.UserSpeakControl(mRemoteUserid, 0);
~~~
7) 离开房间
释放当前房间内的音视频资源。参考代码如下:
~~~
//离开指定房间,-1表示离开当前所在房间
anychat.LeaveRoom(roomid);
~~~
在音视频交互结束后,可调用该操作。离开当前房间之后,可再次选择进入指定房间。
8) 退出登录
断开与 AnyChat 通讯服务器连接。参考代码如下:
~~~
//断开与服务器的连接
anychat.Logout();
~~~
在需要断开跟AnyChat服务器通讯连接的时候,可调用该操作。退出之后,可以再次调用连接、登录服务器。
9) 释放资源
释放整个 SDK 资源。参考代码如下:
~~~
//释放资源
anychat.Release();
~~~
建议在退出整个应用程序的时候调用该操作。释放 SDK 之后,需要重新初始化 SDK 之后才能进行连接、登录、进入房间等操作。