如何实现 Quickblox 视频聊天
Posted
技术标签:
【中文标题】如何实现 Quickblox 视频聊天【英文标题】:How To implement Quickblox video chat 【发布时间】:2018-07-05 06:14:34 【问题描述】:我想将 quickblox videochat 集成到我的 android 应用程序中,但我找不到合适的文档,我已经浏览了 quickblox 网站,但它没有帮助且不容易理解,如果有人帮助我将不胜感激。
【问题讨论】:
【参考方案1】:首先,您需要启用信令。使用以下代码,您可以拨打或接听电话。
QBRTCClient.getInstance(context).prepareToProcessCalls();
QBChatService.getInstance().getVideoChatWebRTCSignalingManager()
.addSignalingManagerListener(new QBVideoChatSignalingManagerListener()
@Override
public void signalingCreated(QBSignaling qbSignaling, boolean createdLocally)
if (!createdLocally)
QBRTCClient.getInstance(context).addSignaling((QBWebRTCSignaling) qbSignaling);
);
然后,您需要添加会话回调来帮助您来电
QBRTCClient.getInstance(context).addSessionCallbacksListener(this);
现在,它覆盖了一个onReceiveNewSession,在这个方法中,当对手打电话给你时,你会收到一个电话。
要拨打电话,
QBRTCTypes.QBConferenceType qbConferenceType = QB_CONFERENCE_TYPE_VIDEO;
List<Integer> opponents = new ArrayList<Integer>();
opponents.add(userid); //12345 - QBUser ID
//Set user information
Map<String, String> userInfo = new HashMap<>();
userInfo.put("key", "value");
//Init session
QBRTCSession session = QBRTCClient.getInstance(this).createNewSessionWithOpponents(opponents, qbConferenceType);
//Start call
session.startCall(userInfo);
接听电话
@Override
public void onReceiveNewSession(QBRTCSession qbrtcSession)
qbrtcSession.acceptCall(qbrtcSession.getUserInfo());
【讨论】:
我在添加 quickblox 依赖项时遇到错误,错误:-程序类型已经存在:org.webrtc.CameraEnumerationAndroid$CaptureFormat 消息kind=ERROR,文本=程序类型已经存在:org.webrtc.CameraEnumerationAndroid $CaptureFormat,sources=[未知源文件],工具名=Optional.of(D8) 它太长了,我如何分享我的代码,我刚刚添加了 quickblox 依赖项:实现 "com.quickblox:quickblox-android-sdk-videochat-webrtc:3.7.0" 并得到了错误 仅共享构建。 gradle 文件(项目和应用程序模块)足以指导我解决这个问题。 无法在评论中发送所有 gradle 代码,您知道其他选项吗?【参考方案2】:出现错误 - 程序类型已存在:org.webrtc.CameraEnumerationAndroid$CaptureFormat Messagekind=ERROR, text=程序类型已存在:org.webrtc.CameraEnumerationAndroid$CaptureFormat, sources=[Unknown源文件],工具名=Optional.of(D8)
这是我的应用程序级别 GRADLE
buildscript
repositories
maven url 'https://maven.fabric.io/public'
dependencies
classpath 'io.fabric.tools:gradle:1.+'
apply plugin: 'com.android.application'
repositories
maven url 'https://maven.fabric.io/public'
android
compileSdkVersion 27
buildToolsVersion '27.0.3'
defaultConfig
applicationId "com.mindinfo.xchangemall.xchangemall"
minSdkVersion 16
targetSdkVersion 27
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-
rules.pro'
dexOptions
javaMaxHeapSize "4g"
repositories
mavenCentral()
dataBinding
enabled = true
compileOptions
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
dependencies
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2',
exclude group: 'com.android.support', module: 'support-annotations'
)
implementation('com.google.api-client:google-api-client-android:1.23.0')
exclude group: 'org.apache.httpcomponents'
implementation('com.google.apis:google-api-services-drive:v2-rev295-1.23.0')
exclude group: 'org.apache.httpcomponents'
//noinspection GradleCompatible
implementation 'com.android.support:multidex:1.0.3'
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.google.android.gms:play-services-location:15.0.1'
implementation 'com.google.android.gms:play-services-gcm:15.0.1'
implementation 'com.google.android.gms:play-services-auth:15.0.1'
implementation 'com.google.android.gms:play-services-maps:15.0.1'
implementation 'com.google.android.gms:play-services-places:15.0.1'
implementation 'com.google.android.gms:play-services-plus:15.0.1'
implementation 'com.loopj.android:android-async-http:1.4.9'
implementation 'com.facebook.android:facebook-android-sdk:4.27.0'
implementation 'de.hdodenhof:circleimageview:2.2.0'
implementation 'com.yahoo.mobile.client.android.util.rangeseekbar:rangeseekbar-
library:0.1.0'
testImplementation 'junit:junit:4.12'
implementation 'com.github.stfalcon:multiimageview:0.1'
implementation 'com.lorentzos.swipecards:library:1.0.9'
implementation 'com.github.midorikocak:currency-picker-android:1.1.9'
implementation 'com.baoyz.pullrefreshlayout:library:1.2.0'
implementation 'com.google.firebase:firebase-core:16.0.0'
implementation 'com.google.firebase:firebase-analytics:16.0.0'
implementation 'com.google.firebase:firebase-crash:16.0.0'
implementation 'com.google.firebase:firebase-messaging:17.0.0'
implementation 'com.google.firebase:firebase-config:16.0.0'
implementation 'com.google.firebase:firebase-invites:16.0.0'
implementation 'com.futuremind.recyclerfastscroll:fastscroll:0.2.5'
implementation 'me.relex:circleindicator:1.2.2@aar'
implementation('com.crashlytics.sdk.android:crashlytics:2.7.1@aar')
transitive = true
implementation 'com.github.bumptech.glide:glide:4.7.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
implementation "com.quickblox:quickblox-android-sdk-videochat-webrtc:3.8.1"
apply plugin: 'com.google.gms.google-services'
apply plugin: 'io.fabric'
这是我的项目级别 GRADLE:-
buildscript
// ext.kotlin_version = '1.2.30'
// ext.roomVersion = '1.0.0'
repositories
mavenCentral()
google()
jcenter()
maven
url 'https://maven.google.com/'
maven
url 'https://maven.fabric.io/public'
maven url "https://raw.githubusercontent.com/HyphenateInc/Hyphenate-
SDK-Android/master/repository"
dependencies
classpath 'com.android.tools.build:gradle:3.1.2'
classpath 'com.google.gms:google-services:3.0.0'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
classpath 'io.fabric.tools:gradle:1.25.4'
allprojects
repositories
mavenCentral()
jcenter()
maven
url "https://github.com/QuickBlox/quickblox-android-sdk-
releases/raw/master/"
maven
url 'https://maven.google.com/'
maven url "https://raw.githubusercontent.com/HyphenateInc/Hyphenate-
SDK-Android/master/repository"
maven url "https://jitpack.io"
task clean(type: Delete)
delete rootProject.buildDir
【讨论】:
以上是关于如何实现 Quickblox 视频聊天的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 WEB SDK 在 QuickBlox 中创建房间