This tutorial mainly introduces how to implement a basic audio and video call.
Prerequisites
Android Studio 4.0 or later.
Android 4.4 (SDK API level 19) or later.
Integration guideline
Step 1. Import the SDK
1. In app/build.gradle, add dependencies to the TRTC SDK.
dependencies {
implementation 'com.tencent.liteav:LiteAVSDK_TRTC:latest.release'
}
2. Inapp/build.gradle, specify the CPU architecture of the project in defaultConfig to support devices with armeabi-v7a/arm64-v8a architecture.
android {
defaultConfig {
ndk {
abiFilters "armeabi-v7a", "arm64-v8a"
}
}
}
After the above configuration completed, click Sync Now, the TRTC SDK will automatically integrate into the target project.
Step 2. Configure project
1. In 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" />
Note:
Do not set the android: hardwareAccelerated = "false". When hardware acceleration is turned off, the other party's video stream cannot be rendered.
2. Inproguard-rules.pro, add the TRTC SDK-related classes to the "non-obfuscation" list.
-keep class com.tencent.** { *; }
Step 3. Create TRTC instance
To use the audio and video functions, you need to request camera and microphone permissions. It is recommended that you create a TRTC instance after a successful request.
private TRTCCloud mCloud;
mCloud = TRTCCloud.sharedInstance(getApplicationContext());
mCloud.addListener(new TRTCCloudListener() {
@Override
public void onError(int errCode, String errMsg, Bundle extraInfo) {
super.onError(errCode, errMsg, extraInfo);
String 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);
if(result > 0) {
Toast.makeText(getApplicationContext(), "Enter Room successfully!", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Enter Room Failed!", Toast.LENGTH_LONG).show();
}
}
});
Step 4. Enter the room
1. Request camera and microphone permissions before entering the room.
private static final int REQUEST_CAMERA_AND_MICROPHONE = 1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestCameraAndMicrophonePermission();
}
private void requestCameraAndMicrophonePermission() {
String[] permissions = {android.Manifest.permission.CAMERA, android.Manifest.permission.RECORD_AUDIO};
ActivityCompat.requestPermissions(this, permissions, REQUEST_CAMERA_AND_MICROPHONE);
}
@Override
public 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) {
} else {
Toast.makeText(getApplicationContext(), "Permissions request failed!", Toast.LENGTH_LONG).show();
}
}
}
2. Set the entry parameter TRTCParams and call enterRoom to successfully enter the room, which is usually called after clicking the Start Call button.
|
sdkAppId | number | The sdkAppId of the audio and video application you created in TRTC Console. |
userId | string | User ID specified by you. |
userSig | string | |
roomId | number | Room ID specified by you, usually a unique room ID. |
For more detailed parameter descriptions, please refer to the interface document enterRoom 。
TRTCCloudDef.TRTCParams trtcParams = new TRTCCloudDef.TRTCParams();
trtcParams.sdkAppId = 1400000123;
trtcParams.userId = "denny";
trtcParams.userSig = "xxx";
trtcParams.roomId = 123321;
mCloud.enterRoom(trtcParams, TRTCCloudDef.TRTC_APP_SCENE_LIVE);
Step 5. Turn on/off Camera
1. Add the 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" />
2. Set the render parameter setLocalRenderParams for the local preview, and call startLocalPreview for the local preview, and start the push after successfully calling enterRoom.
TRTCCloudDef.TRTCRenderParams trtcRenderParams = new TRTCCloudDef.TRTCRenderParams();
trtcRenderParams.fillMode = TRTCCloudDef.TRTC_VIDEO_RENDER_MODE_FILL;
trtcRenderParams.mirrorType = TRTCCloudDef.TRTC_VIDEO_MIRROR_TYPE_AUTO;
mCloud.setLocalRenderParams(trtcRenderParams);
TXCloudVideoView cameraVideo = findViewById(R.id.txcvv_main_local);
mCloud.startLocalPreview(true, cameraVideo);
Call stopLocalPreview to turn off the camera preview and stop pushing local video information.
mCloud.stopLocalPreview();
3. Perform other extended device functions such as "Switch front and rear cameras", "Set focus Mode", and "Flash".
TXDeviceManager manager = mCloud.getDeviceManager();
if(manager.isFrontCamera()) {
manager.switchCamera(false);
}
TXDeviceManager manager = mCloud.getDeviceManager();
manager.switchCamera(true);
TXDeviceManager manager = mCloud.getDeviceManager();
if (manager.isAutoFocusEnabled()) {
manager.enableCameraAutoFocus(true);
}
TXDeviceManager manager = mCloud.getDeviceManager();
manager.enableCameraAutoFocus(false);
TXDeviceManager manager = mCloud.getDeviceManager();
manager.enableCameraTorch(true);
TXDeviceManager manager = mCloud.getDeviceManager();
manager.enableCameraTorch(false);
Step 6. Turn on/off microphone
Call the startLocalAudio to turn on microphone capture. Select one of the following sound Quality parameters according to your requirements.
mCloud.startLocalAudio(TRTCCloudDef.TRTC_AUDIO_QUALITY_SPEECH );
mCloud.startLocalAudio(TRTCCloudDef.TRTC_AUDIO_QUALITY_MUSIC);
Call stopLocalAudio to turn off microphone collection and stop pushing local audio information.
Step 7. Play/stop video streaming
1. Listen to onUserVideoAvailable before entering the room. When you receive the onUserVideoAvailable(userId, true) notification, it means that there are video frames available to play in the road screen. 2. Call startRemoteView to play the video content collected by the remote side.
TXCloudVideoView cameraVideo = findViewById(R.id.txcvv_main_local);
mCloud.startRemoteView("denny", TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG, cameraVideo);
Call stopRemoteView to stop the remote video.
mCloud.stopRemoteView("denny", TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG);
mCloud.stopAllRemoteView();
Step 8. Play/stop the audio stream
By default, the SDK will play remote audio automatically, so you don't need to call any apis to play it manually.
But when you don't like autoplay audio, you can call muteRemoteAudio to choose to play or stop the remote sound.
mCloud.muteRemoteAudio("denny", true);
mCloud.muteAllRemoteAudio(true);
mCloud.muteRemoteAudio("denny", false);
mCloud.muteAllRemoteAudio(false);
Step 9. Exit the room
Call exitRoom to exit the current room, and the TRTC SDK will notify you after check-out via the onExitRoom callback event.
mCloud.exitRoom();
@Override
public 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...");
}
}
FAQs
Contact us
If you have any suggestions or feedback, please contact info_rtc@tencent.com.