
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 | 字符串 | eJyrVareCeYrSy1SslI... | |
roomId | 数字 | 数字类型的房间号。如果您想使用字符串形式的房间号,请使用 TRTCParams 中的 strRoomId。 | 29834 |
//示例代码:发布本地的音视频流mTRTCCloud.setLocalViewFillMode(TRTC_VIDEO_RENDER_MODE_FIT);mTRTCCloud.startLocalPreview(mIsFrontCamera, localView);//设置本地视频编码参数TRTCCloudDef.TRTCVideoEncParam encParam = new TRTCCloudDef.TRTCVideoEncParam();encParam.videoResolution = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_960_540;encParam.videoFps = 15;encParam.videoBitrate = 1200;encParam.videoResolutionMode = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_MODE_PORTRAIT;mTRTCCloud.setVideoEncoderParam(encParam);mTRTCCloud.startLocalAudio();
role为 TRTCCloudDef.TRTCRoleAnchor,表示当前用户的角色为主播。roomId的值为房间号的音视频房间,并指定**appScene**参数: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, TRTCCloudDef.TRTC_APP_SCENE_LIVE);}@Overridepublic void onEnterRoom(long result) {if (result > 0) {toastTip("进房成功,总计耗时[\\(result)]ms")} else {toastTip("进房失败,错误码[\\(result)]")}}
role为TRTCCloudDef.TRTCRoleAudience,表示当前用户的角色为观众。roomId代指的音视频房间,并指定**appScene**参数:userId调用 startRemoteView(userId, view) 即可显示主播的画面。userId调用 便可显示主播的画面。//示例代码:观众上麦mTrtcCloud.switchRole(TRTCCloudDef.TRTCRoleAnchor);mTrtcCloud.startLocalAudio();mTrtcCloud.startLocalPreview(mIsFrontCamera, localView);//示例代码:观众下麦mTrtcCloud.switchRole(TRTCCloudDef.TRTCRoleAudience);mTrtcCloud.stopLocalAudio();mTrtcCloud.stopLocalPreview();
roomId和userId拼装成格式为{"roomId": "978","userId": "userB"}的参数传递给接口函数。connectOtherRoom()与房间“002”中的主播 B 拉通跨房通话后, 房间“001”中的用户会收到主播 B 的onUserVideoAvailable(B, true)回调和onUserAudioAvailable(B, true)回调。 房间“002”中的用户会收到主播 A 的onUserVideoAvailable(A, true) 回调和onUserAudioAvailable(A, true)回调。//示例代码:跨房连麦 PKmTRTCCloud.ConnectOtherRoom(String.format("{\\"roomId\\":%s,\\"userId\\":\\"%s\\"}", roomId, username));
// 调用退房后请等待 onExitRoom 事件回调mTRTCCloud.exitRoom()@Overridepublic void onExitRoom(int reason) {Log.i(TAG, "onExitRoom: reason = " + reason);}
onExitRoom回调后再启动其它音视频 SDK,否则可能会遇到硬件占用问题。文档反馈