请确保 SDK 已集成,快速集成SDK。
在开启 Activity 时, SDK需要获取Android 设备的摄像头和麦克风等使用权限。
private static final String[] REQUEST_PERMISSIONS = new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.MODIFY_AUDIO_SETTINGS,
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_ADMIN
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_chat_view);
if (checkSelfPermission(REQUESTED_PERMISSIONS[0], PERMISSION_REQ_ID) &&
checkSelfPermission(REQUESTED_PERMISSIONS[1], PERMISSION_REQ_ID) &&
checkSelfPermission(REQUESTED_PERMISSIONS[2], PERMISSION_REQ_ID)) {
// 获取权限后,初始化 SDK,并加入频道。
}
}
private boolean checkSelfPermission(String permission, int requestCode) {
if (ContextCompat.checkSelfPermission(this, permission) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, REQUESTED_PERMISSIONS, requestCode);
return false;
}
return true;
}
调用 createEngine 创建并初始化 ThunderEngine 对象。
public static synchronized ThunderEngine createEngine(ThunderEngineConfig config)
public class ThunderEngineConfig {
public Context context = null; // Android Application 的上下文
public String appId = ""; // 为应用程序签发的 AppId
public long sceneId = 0; // 开发者自定义场景 Id,用以细分业务场景;如果不需要,可以填 0
public int areaType = 0; // 指定区域,默认为中国大陆,详见 ThunderRtcConstant.AreaType
public int serverDomain = 0; // 预留参数
public ThunderEventHandler handler = null; // 事件回调缺省抽象类
public ThunderEngineConfig() {
}
}
根据场景设置 handler 属性来注册 ThunderEventHandler 类事件回调,以监听相关事件和错误码。常用事件回调如下:
调用 setAudioConfig设置音频参数和应用场景。
ThunderEngine.setAudioConfig(int profile, int commutMode, int scenarioMode);
调用 joinRoom 并设置 Token,加入房间,收到 onJoinRoomSuccess 表示加入房间成功。
ThunderEngine.joinRoom(byte[] token, String roomName, String uid);
调用 stopLocalAudioStream 开播,开始推送本地音频流。远端将收到onRemoteAudioStopped 回调事件。
ThunderEngine.stopLocalAudioStream(false);
调用 stopLocalAudioStream 停播,停止推送本地音频流。远端将收到onRemoteAudioStopped 回调事件。
ThunderEngine.stopLocalAudioStream(true);
当需要结束通话、关闭 App 或 切换 App 至后台时,可以调用 leaveRoom 接口离开当前房间。
当调用 joinRoom 方法后,必须调用 leaveRoom 结束通话,否则无法开始下一次通话。
int ret = mThunderEngine.leaveRoom();