general
SDK татаж авах
app/libs/libijkplayer.aar, app/libs/libqrtc.aar file-уудыг өөрийн төсөл дотор libs folder-т байршуулахapp/src/main/java/com/qrtc/ folder-г өөрийн төсөл дотор src/main/java/com folder-т байршуулах
- SDK-г ашигласан жишээ код: Доор байрлах Github repository-н src/main/java/com/suhang/meeting/MeetingMainActivity.java
AndroidSDK --> https://gitlab.com/callpromn/platform-rtc/PlatformRTC-Android
Шаардлагатай сангууд суулгах
build.gradle дээр бусад нэмэх сан, тохиргоонууд
// Шинэ хувилбарыг (version) дэмжихгүй байх магадлалтай тул доорх хувилбарын дагуу суулгана уу
android {
compileSdk 33
defaultConfig {
minSdkVersion 21
targetSdk 33
versionCode 2
versionName "1.2.6"
}
buildTypes {
release {
minifyEnabled false
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
// build.gradle дээр нэмэгдэх сангууд
dependencies {
implementation files('libs/libqrtc.aar')
implementation files('libs/libijkplayer.aar') // Зөвхөн video дуудлага ашиглах үед
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'com.google.android.material:material:1.6.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation 'com.tencent.bugly:crashreport:3.1.0'
implementation 'com.tencent.bugly:nativecrashreport:3.7.0'
implementation 'com.tencent:mmkv-static:1.2.2'
implementation 'com.squareup.retrofit2:retrofit:2.2.0'
implementation 'com.squareup.retrofit2:converter-gson:2.2.0'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.blankj:utilcode:1.30.7'
implementation 'me.dm7.barcodescanner:zxing:1.8.4'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
implementation 'de.hdodenhof:circleimageview:3.1.0'
//for libqrtc.aar lib
implementation 'com.squareup.okhttp3:logging-interceptor:4.3.0'
implementation "androidx.core:core:1.10.1"
implementation 'org.xutils:xutils:3.5.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.6'
implementation 'com.linkedin.android.spyglass:spyglass:1.4.0'
implementation 'com.lovedise:permissiongen:0.0.6'
implementation 'com.nabinbhandari.android:permissions:3.8'
implementation 'com.getkeepsafe.relinker:relinker:1.4.0'
implementation 'com.alibaba:fastjson:1.2.73'
}
AndroidManifest.xml дээр нэмэгдэх permission
<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<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.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />
<uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" android:exported="true"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
...
</manifest>
Sdk-г үүсгэж, ашиглах
Анхаарах зүйлс
1. Дараах method-г App үүсэх үед дуудаж global-р үүсгэнэ: ( Зөвхөн video дуудлага ашиглах үед үүсгэнэ )
PeerConnectionUtils.InitEglContext(EglBase.create(),this)
2. QRTCMeetingDelegate class-г implement хийн listener-н method-уудыг удамшуулна. ( com.qrtc.meeting.QRTCMeetingDelegate )
- listener-н method-уудыг ашиглах гэж буй class дотроо override хийж ашиглана.
Жишээ нь:
public class MeetingMainActivity extends AppCompatActivity implements QRTCMeetingDelegate, View.OnClickListener {
@Override
public void onDisplayNameChanged(String userId,String displayName) {
...
}
}
3. QRTCMeeting class-н sharedInstance method-г ашиглан QRTCMeeting-н шинэ объект үүсгэнэ ( Sdk-г ашиглах Activity дотор )
QRTCMeeting mQRTCMeeting = QRTCMeeting.sharedInstance(context);
4. login method-г дуудан method-уудыг ашиглахад бэлэн болно.
mQRTCMeeting.login(sdkAppId, userId, userName, userSig, callback);
sdkAppId: String - ( RTC-dash-с үүсгэж өгсөн appId )
userId: String - Өрөөнд нэвтрэх хэрэглэгчийн Id ( Өрөөний Id + "_" + тухайн app дээрх хэрэглэгчийн ID roomId_userId )
userName: String - Хурлын өрөөнд бусад хэрэглэгчдэд харагдах хэрэглэгчийн нэр
userSig: String - Одоогоор ашиглагдахгүй байгаа тул хувьсагчийн утгыг хоосон дамжуулах ( "" )
callback: login method хийгдэж дууссаны дараа хийгдэх функц ( new QRTCMeetingCallback.ActionCallback()-г ашиглах )
new QRTCMeetingCallback.ActionCallback() {
@Override
public void onCallback(int code, String msg) {
... // Жишээ нь: startCreateOrEnterMeeting();
}
}
5. Өрөөнд нэвтрэхээс өмнө бичлэгний encode болон дууны чанарыг тохируулах.
Sdk-г идэвхгүй болгох
QRTCMeeting.destroySharedInstance()
Өрөөнд нэвтрэх
mQRTCMeeting.enterRoom(roomId, serverUrl, acceptLanguage, xConferenceToken, avatarUrl, callback)
roomId: String - RTC-dash-с үүсгэж өгсөн appId дээр хурлын нэрийг залгасан ID ( appId_roomName )
serverUrl: String - video болон audio-г дамжуулах server-н url ( Тестийн сервер: wss://platform-test.callpro.mn/ )
xConferenceToken: String - Өрөөнд нэвтрэхэд ашиглагдах Token. Back-end дээр үүсгэнэ. (https://www.npmjs.com/package/rtc-token)
acceptLanguage, avatarUrl: String - Одоогоор ашиглагдахгүй байгаа тул хувьсагчийн утгыг хоосон дамжуулах ( "" )
callback: login method хийгдэж дууссаны дараа хийгдэх функц ( new QRTCMeetingCallback.ActionCallback()-г ашиглах )
new QRTCMeetingCallback.ActionCallback() {
@Override
public void onCallback(int code, String msg) {
... // Жишээ нь: startCreateOrEnterMeeting();
}
}
Өрөөнөөс гарах
mQRTCMeeting.exitRoom(callback)
- callback: Өрөөнөөс гарсны дараа хийгдэх функц ( new QRTCMeetingCallback.ActionCallback()-г ашиглах )
Өрөөнд байгаа хэрэглэгчид рүү msg илгээх
mQRTCMeeting.sendRoomTextMsg(msg, callback)
msg: String - хэрэглэгчид рүү илгээх мессеж
callback: мессеж илгээгдсний дараа хийгдэх функц ( new QRTCMeetingCallback.ActionCallback()-г ашиглах )
Бусад хэрэглэгчдэд харагдах нэрээ солих
mQRTCMeeting.changeDisplayName(displayName, callback)
displayName: String - Бусад хэрэглэгчдэд харагдах нэр
callback: Нэр солигдсны дараа хийгдэх функц ( new QRTCMeetingCallback.ActionCallback()-г ашиглах )
CL200A төхөөрөмжийн товчлуур тохируулах
26: power button
130: Recording key
133: Light keys
134: fn function key
135: Videos
284: SOS button
285: PTT key
// Ашиглах activity дээрээ receiver үүсгэх
private BroadcastReceiver sosReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
try {
if (intent.getAction().equals("android.intent.action.SIDE_KEY_INTENT")) {
switch( intent.getIntExtra("key_code",0) ){
case 284: {
Log.i(TAG, "Sos button pressed");
... // SOS товчлуур дарагдахад хийгдэх зүйлс
break;
}
}
}
}
catch (Exception e){
Log.e(TAG,e.toString());
}
}
};
// onCreate хэсэгт нэмэгдэх code
@Override
protected void onCreate(Bundle savedInstanceState) {
...
IntentFilter filter = new IntentFilter("android.intent.action.SIDE_KEY_INTENT");
registerReceiver(sosReceiver, filter);
}
Listener
Өрөө устгагдах үед
onRoomDestroy( String roomId )
- roomId: String - Устгагдсан өрөөний Id
Бусад хэрэглэгч өрөөнд нэвтрэх үед
onRemoteUserEnterRoom(String userId, String userName)
userId: String - Өрөөнд нэвтэрсэн хэрэглэгчийн Id ( Өрөөний Id + "_" + тухайн app дээрх хэрэглэгчийн ID roomId_userId )
userName: String - Хурлын өрөөнд бусад хэрэглэгчдэд харагдах тухайн хэрэглэгчийн нэр
Бусад хэрэглэгч өрөөнөөс гарах үед
onRemoteUserLeaveRoom(String userId)
- userId: String - Өрөөнөөс гарсан хэрэглэгчийн Id ( Өрөөний Id + "_" + тухайн app дээрх хэрэглэгчийн ID roomId_userId )
Хэрэглэгчдэд харагдах нэр өөрчлөгдөх үед
onDisplayNameChanged(String userId,String displayName)
userId: String - Дэлгэцний нэр нь солигдсон хэрэглэгчийн Id ( Өрөөний Id + "_" + тухайн app дээрх хэрэглэгчийн ID roomId_userId )
displayName: String - Хурлын өрөөнд бусад хэрэглэгчдэд харагдах тухайн хэрэглэгчийн өөрчлөгдсөн нэр
Бусад хэрэглэгчээс мессеж ирэх үед
onRecvRoomTextMsg(String message, QRTCMeetingDef.UserInfo userInfo)
message: Бусад хэрэглэгчээс ирсэн мессеж
userInfo: Хэрэглэгчийн мэдээлэл агуулсан объект
userInfo.userId: Хэрэглэгчийн ID
userInfo.userName: Хэрэглэгчийн мэдээлэл агуулсан string