
app/build.gradle文件,即可完成 SDK 集成:dependencies {compile 'com.tencent.liteav:LiteAVSDK_TRTC:latest.release'}
defaultConfig {ndk {abiFilters "armeabi-v7a", "arm64-v8a"}}
AndroidManifest.xml文件中添加摄像头、麦克风以及网络的申请权限。<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /><uses-permission android:name="android.permission.BLUETOOTH" /><uses-feature android:name="android.hardware.camera" /><uses-feature android:name="android.hardware.camera.autofocus" />
TRTCCloud实例。// 创建 trtcCloud 实例mTRTCCloud = TRTCCloud.sharedInstance(getApplicationContext());mTRTCCloud.setListener(new TRTCCloudListener(){// 回调处理...});
setListener属性注册事件回调,并监听相关事件和错误通知。// 错误通知监听,错误通知意味着 SDK 不能继续运行@Overridepublic void onError(int errCode, String errMsg, Bundle extraInfo) {Log.d(TAG, "sdk callback onError");if (activity != null) {Toast.makeText(activity, "onError: " + errMsg + "[" + errCode+ "]" , Toast.LENGTH_SHORT).show();if (errCode == TXLiteAVCode.ERR_ROOM_ENTER_FAIL) {activity.exitRoom();}}}
参数名称 | 字段类型 | 补充说明 | 填写示例 |
sdkAppId | 数字 | 1400000123 | |
userId | 字符串 | 只允许包含大小写英文字母(a-z、A-Z)、数字(0-9)及下划线和连词符。建议结合业务实际账号体系自行设置。 | test_user_001 |
userSig | 字符串 | 基于 userId 可以计算出 userSig,计算方法请参见 [如何计算及使用 UserSig]](https://www.tencentcloud.com/document/product/647/35166)。 | eJyrVareCeYrSy1SslI... |
roomId | 数字 | 数字类型的房间号。如果您想使用字符串形式的房间号,请使用 TRTCParams 中的 strRoomId。 | 29834 |
roomId代指的音视频房间。如果该房间不存在,SDK 会自动创建一个以字段roomId的值为房间号的新房间。appScene 参数,使用错误可能会导致卡顿率或画面清晰度不达预期。TRTC_APP_SCENE_VIDEOCALL。TRTC_APP_SCENE_AUDIOCALL。onEnterRoom(result)事件。其中,参数result大于0时表示进房成功,具体数值为加入房间所消耗的时间,单位为毫秒(ms);当result小于0时表示进房失败,具体数值为进房失败的错误码。public void enterRoom() {TRTCCloudDef.TRTCParams trtcParams = new TRTCCloudDef.TRTCParams();trtcParams.sdkAppId = sdkappid;trtcParams.userId = userid;trtcParams.roomId = 908;trtcParams.userSig = usersig;mTRTCCloud.enterRoom(trtcParams, TRTC_APP_SCENE_VIDEOCALL);}@Overridepublic void onEnterRoom(long result) {if (result > 0) {toastTip("进房成功,总计耗时[\\(result)]ms")} else {toastTip("进房失败,错误码[\\(result)]")}}
onError事件,并返回参数errCode(错误码)、errMsg(错误原因)以及extraInfo(保留参数)。exitRoom()退出当前房间,才能进入下一个房间。view关联起来。@Overridepublic void onUserVideoAvailable(String userId, boolean available) {TXCloudVideoView remoteView = remoteViewDic[userId];if (available) {mTRTCCloud.startRemoteView(userId, remoteView);mTRTCCloud.setRemoteViewFillMode(userId, TRTC_VIDEO_RENDER_MODE_FIT);} else {mTRTCCloud.stopRemoteView(userId);}}
onUserVideoAvailable()事件回调后没有立即调用startRemoteView()订阅视频流,SDK 将在5s内停止接收来自远端的视频数据。//示例代码:发布本地的音视频流mTRTCCloud.setLocalViewFillMode(TRTC_VIDEO_RENDER_MODE_FIT);mTRTCCloud.startLocalPreview(mIsFrontCamera, mLocalView);mTRTCCloud.startLocalAudio();
// 调用退房后请等待 onExitRoom 事件回调mTRTCCloud.exitRoom()@Overridepublic void onExitRoom(int reason) {Log.i(TAG, "onExitRoom: reason = " + reason);}
onExitRoom回调后再启动其它音视频 SDK,否则可能会遇到硬件占用问题。文档反馈