app/build.gradle
, add dependencies to the TRTC SDK.dependencies {// ...Other project dependencies implementation 'com.tencent.liteav:LiteAVSDK_TRTC:latest.release' // Add TRTC SDK dependencies }
app/build.gradle
, specify the CPU architecture of the project in defaultConfig to support devices with armeabi-v7a/arm64-v8a architecture.android { defaultConfig {// ...Other project dependenciesndk {abiFilters "armeabi-v7a", "arm64-v8a" // Support armeabi-v7a and arm64-v8a architectures} } }
Sync Now
, the TRTC SDK will automatically integrate into the target project.AndroidManifest.xml
, add the permissions required for the TRTC SDK.<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.RECORD_AUDIO" /><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /><uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.CAMERA" /><uses-feature android:name="android.hardware.camera.autofocus" />
android: hardwareAccelerated = "false"
. When hardware acceleration is turned off, the other party's video stream cannot be rendered.proguard-rules.pro
, add the TRTC SDK-related classes to the "non-obfuscation" list.-keep class com.tencent.** { *; }
private TRTCCloud mCloud; // Declare member variables// Create a TRTC instance and set up a listenermCloud = TRTCCloud.sharedInstance(getApplicationContext()); mCloud.setListener(new TRTCCloudListener() { @Override public void onError(int errCode, String errMsg, Bundle extraInfo) { super.onError(errCode, errMsg, extraInfo); // Handling Error eventsString notificaiton = "Error Code: " + errCode + ", Error Message: " + errMsg + ", extraInfo: " + extraInfo; Toast.makeText(getApplicationContext(), notificaiton, Toast.LENGTH_LONG).show(); } @Override public void onEnterRoom(long result) { super.onEnterRoom(result);// Processing the result of entering the roomif(result > 0) { Toast.makeText(getApplicationContext(), "Enter Room successfully!", Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(), "Enter Room Failed!", Toast.LENGTH_LONG).show(); } } });
private static final int REQUEST_CAMERA_AND_MICROPHONE = 1; // Required parameter `requestCode` for `ActivityCompat.requestPermissions()`protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Request camera and microphone accessrequestCameraAndMicrophonePermission();}private void requestCameraAndMicrophonePermission() {String[] permissions = {android.Manifest.permission.CAMERA, android.Manifest.permission.RECORD_AUDIO};ActivityCompat.requestPermissions(this, permissions, REQUEST_CAMERA_AND_MICROPHONE);}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if (requestCode == REQUEST_CAMERA_AND_MICROPHONE) {boolean allPermissionsGranted = true;for (int grantResult : grantResults) {if (grantResult != PackageManager.PERMISSION_GRANTED) {allPermissionsGranted = false;break;}}if (allPermissionsGranted) {// After the device permissions successfully applied for, create a TRTC instance and use the functions supported by TRTC} else {// If the permissions failed to be applied for, a prompt could be displayedToast.makeText(getApplicationContext(), "Permissions request failed!", Toast.LENGTH_LONG).show();}}}
TRTCParams
and call enterRoom
to successfully enter the room, which is usually called after clicking the Start Call button.Parameter | Type | Description |
sdkAppId | number | |
userId | string | User ID specified by you. |
userSig | string | |
roomId | number | Room ID specified by you, usually a unique room ID. |
// Modify the following parameters to your ownTRTCCloudDef.TRTCParams trtcParams = new TRTCCloudDef.TRTCParams();trtcParams.sdkAppId = 1400000123;trtcParams.userId = "denny";trtcParams.userSig = "xxx";trtcParams.roomId = 123321;// For multi-party video calls, `TRTC_APP_SCENE_LIVE` is recommendedmCloud.enterRoom(trtcParams, TRTCCloudDef.TRTC_APP_SCENE_LIVE);
TXCloudVideoView
view component to the layout file to display the video stream content.<com.tencent.rtmp.ui.TXCloudVideoView android:id="@+id/txcvv_main_local" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" />
setLocalRenderParams
for the local preview, and call startLocalPreview
for the local preview, and start the push after successfully calling enterRoom
.// Set the preview mode of the local screenTRTCCloudDef.TRTCRenderParams trtcRenderParams = new TRTCCloudDef.TRTCRenderParams();trtcRenderParams.fillMode = TRTCCloudDef.TRTC_VIDEO_RENDER_MODE_FILL; // The render mode set as FILLtrtcRenderParams.mirrorType = TRTCCloudDef.TRTC_VIDEO_MIRROR_TYPE_AUTO; // The image type set as AUTOmCloud.setLocalRenderParams(trtcRenderParams);// Start a preview of the local cameraTXCloudVideoView cameraVideo = findViewById(R.id.txcvv_main_local);mCloud.startLocalPreview(true, cameraVideo);
stopLocalPreview
to turn off the camera preview and stop pushing local video information.mCloud.stopLocalPreview();
// By default, the front camera is enabled and switch to the rear cameraTXDeviceManager manager = mCloud.getDeviceManager();if(manager.isFrontCamera()) {manager.switchCamera(false);}// Switch to the front cameraTXDeviceManager manager = mCloud.getDeviceManager();manager.switchCamera(true);
// If the automatic face recognition supported, enable the auto focus functionTXDeviceManager manager = mCloud.getDeviceManager();if (manager.isAutoFocusEnabled()) {manager.enableCameraAutoFocus(true);}// Disable the autofocus functionTXDeviceManager manager = mCloud.getDeviceManager();manager.enableCameraAutoFocus(false);
// The flash can be turned on when using the rear cameraTXDeviceManager manager = mCloud.getDeviceManager();manager.enableCameraTorch(true);// Turn off the flashTXDeviceManager manager = mCloud.getDeviceManager();manager.enableCameraTorch(false);
startLocalAudio
to turn on microphone capture. Select one of the following sound Quality
parameters according to your requirements.// Enable microphone acquisition and set the current scene to: Voice mode// For high noise suppression capability, strong and weak network resistancemCloud.startLocalAudio(TRTCCloudDef.TRTC_AUDIO_QUALITY_SPEECH );
// Enable microphone acquisition, and set the current scene to: Music mode (// For high fidelity acquisition, low sound quality loss, recommended to use with professional sound cardsmCloud.startLocalAudio(TRTCCloudDef.TRTC_AUDIO_QUALITY_MUSIC);
stopLocalAudio
to turn off microphone collection and stop pushing local audio information.mCloud.stopLocalAudio
();
onUserVideoAvailable(userId, true)
notification, it means that there are video frames available to play in the road screen.startRemoteView
to play the video content collected by the remote side.// Play the remote videoTXCloudVideoView cameraVideo = findViewById(R.id.txcvv_main_local);mCloud.startRemoteView("denny", TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG, cameraVideo); // Play remote capture video content with high definition large screen
stopRemoteView
to stop the remote video.// Stop the videomCloud.stopRemoteView("denny", TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG); // Only stop playing the denny screenmCloud.stopAllRemoteView(); // Stop all videos
muteRemoteAudio
to choose to play or stop the remote sound.// MutemCloud.muteRemoteAudio("denny", true); // Only mute dennymCloud.muteAllRemoteAudio(true); // Mute all remote users
// UnmutemCloud.muteRemoteAudio("denny", false); // Only unmute dennymCloud.muteAllRemoteAudio(false); // Unmute all remote users
exitRoom
to exit the current room, and the TRTC SDK will notify you after check-out via the onExitRoom
callback event.// Exit current roommCloud.exitRoom();// Listen for the `onExitRoom` callback to get the reason for room exit@Overridepublic void onExitRoom(int reason) {if (reason == 0) {Log.d(TAG, "Exit current room by calling the 'exitRoom' api of sdk ...");} else if (reason == 1) {Log.d(TAG, "Kicked out of the current room by server through the restful api...");} else if (reason == 2) {Log.d(TAG, "Current room is dissolved by server through the restful api...");}}
info_rtc@tencent.com
.
Was this page helpful?