无法使用 quickblox 在 android 6 上进行视频通话

Posted

技术标签:

【中文标题】无法使用 quickblox 在 android 6 上进行视频通话【英文标题】:Can't make video call on android 6 with quickblox 【发布时间】:2016-03-07 12:18:18 【问题描述】:

我正在尝试使用 quickblox v2.5 构建视频聊天应用程序。

我的聊天应用在 ios9.2 和 android 4+、5+ 上运行良好。

但它不适用于 android 6。:(

我使用的是 Nexus 5 和三星 Galaxy s4、s5。

当我使用 Nexus5 进行测试时,它在 iOS 到 android、android-android 之间运行良好。

但我无法在 android 和 iOS 之间进行视频通话。 (仅限工作音频通话)。

当我使用三星 galax 时,它并非适用于所有情况(ios-android、android-android、android-ios)。

这几天google调试,发现这个问题是在和对方创建会话的时候出现的。

QBRTCSession newSessionWithOpponents = rtcClient.createNewSessionWithOpponents(
                getOpponentsIds(opponents), qbConferenceType);

以下是 logcat 的一部分。

03-06 14:45:31.901 15892-16599/com.quickblox.sample.groupchatwebrtc D/VideoRendererGui:VideoRendererGui.onSurfaceChanged:1056 x 1056 03-06 14:45:31.901 15892-16599/com.quickblox.sample.groupchatwebrtc D/VideoRendererGui:ID:0。YuvImageRenderer.setScreenSize:1056 x 1056 03-06 14:45:31.903 15892-16591/com.quickblox.sample.groupchatwebrtc D/AudioRecordJni:EnableBuiltInAEC@[tid=16591] 03-06 14:45:31.904 15892-16591/com.quickblox.sample.groupchatwebrtc D/WebRtcAudioRecord: EnableBuiltInAEC(真)03-06 14:45:31.908 15892-16574/com.quickblox.sample.groupchatwebrtc D/RTCClient.PeerFactoryManager:对等连接工厂从 线程 1060 03-06 14:45:32.320 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBRTCSession:onLocalStreamNeedAdd 为对手 2436257 03-06 14:45:32.321 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBMediaStreamManager:初始化本地媒体流03-06 14:45:32.321 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBMediaStreamManager:添加视频流 03-06 14:45:32.323 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBRTCSession:对手通道中的 onError 2436257,未找到视频输入设备 03-06 14:45:32.323 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor:请求 Looper 执行。 03-06 14:45:32.323 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor: POST.Run on thread:1056 for QBRTCClient 03-06 14:45:32.323 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel:呼叫 hangUp 给对手 2436257 03-06 14:45:32.323 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel:关闭 03-06 14:45:32.323 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel.PeerChannelLifeCycleTimers:停止 拨号定时器 03-06 14:45:32.323 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel.PeerChannelLifeCycleTimers:停止WaitTimer 03-06 14:45:32.323 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel.PeerChannelLifeCycleTimers:停止 断开定时器 03-06 14:45:32.323 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor:请求 Looper 执行。 03-06 14:45:32.324 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor: POST.Run on thread:1062 for QBPeerChannel 03-06 14:45:32.325 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel:关闭对等连接开始。 03-06 14:45:32.326 15892-16592/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel.SDPObserver:: SDP创建成功 03-06 14:45:32.326 15892-16592/com.quickblox.sample.groupchatwebrtc D/RTCClient.RTCMediaUtils:generateLocalDescription:audioCodec=ISAC 03-06 14:45:32.328 15892-16592/com.quickblox.sample.groupchatwebrtc D/RTCClient.RTCMediaUtils:找到 ISAC rtpmap 103,首选 m=audio 9 RTP/SAVPF 111 103 9 102 0 8 106 105 13 127 126 03-06 14:45:32.328 15892-16592/com.quickblox.sample.groupchatwebrtc D/RTCClient.RTCMediaUtils:更改媒体描述:m=audio 9 RTP/SAVPF 103 111 9 102 0 8 106 105 13 127 126 03-06 14:45:32.328 15892-16592/com.quickblox.sample.groupchatwebrtc D/RTCClient.RTCMediaUtils: generateLocalDescription: videoCodec=VP8 03-06 14:45:32.330 15892-16592/com.quickblox.sample.groupchatwebrtc D/RTCClient.RTCMediaUtils: 发现 VP8 rtpmap 100,首选 m=video 9 RTP/SAVPF 100 116 117 96 03-06 14:45:32.330 15892-16592/com.quickblox.sample.groupchatwebrtc D/RTCClient.RTCMediaUtils:更改媒体描述:m=video 9 RTP/SAVPF 100 116 117 96 03-06 14:45:32.331 15892-16592/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel.PCObserver::onIceConnectionChange 为 CLOSED 03-06 14:45:32.331 15892-16592/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel.PCObserver::onIceGatheringChange 到 完成 03-06 14:45:32.331 15892-16592/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel.PCObserver:: onSignalingChange 为 CLOSED 03-06 14:45:32.332 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBRTCSession:onChannelConnectionClosed 为对手 2436257 03-06 14:45:32.332 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor:请求 Looper 执行。 03-06 14:45:32.332 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor: POST.Run on thread:1056 for QBRTCClient 03-06 14:45:32.332 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor:请求 Looper 停止。在 QBPeerChannel 上 03-06 14:45:32.332 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor:Looper 线程完成。 03-06 14:45:32.332 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel: onExecutorStop.PeerChannel 成功 于 03-06 14:45:32.333 停止 15892-16406/com.quickblox.sample.groupchatwebrtc D/ConversationFragment:getViewForOpponent 持有者用户 ID 为:2436257 03-06 14:45:32.333 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBRTCSession: 检查会话是否需要关闭 03-06 14:45:32.333 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBRTCSession: Session isNeedToClose true 03-06 14:45:32.333 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBRTCSession:closeSession 03-06 14:45:32.333 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor:请求 Looper 执行。 03-06 14:45:32.334 15892-16406/com.quickblox.sample.groupchatwebrtc D/SessionClosedListener:onSessionStartClose 03-06 14:45:32.334 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor:请求 Looper 执行。 03-06 14:45:32.334 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor: POST.Run on thread:1060 for PeerFactoryManager 03-06 14:45:32.334 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBRTCSession.SessionWaitingTimers:停止WaitTimer 03-06 14:45:32.334 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBRTCSession:通知会话回调计数:2 03-06 14:45:32.335 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor:请求 Looper 执行。 03-06 14:45:32.335 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor: POST.Run on thread:1060 for PeerFactoryManager 03-06 14:45:32.335 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.: onSessionClosed 03-06 14:45:32.335 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor: EXECUTE.Run on thread:1056 for QBRTCClient 03-06 14:45:32.335 15892-16574/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBMediaStreamManager:视频源启动配置 03-06 14:45:32.335 15892-16574/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBMediaStreamManager:视频源为空 03-06 14:45:32.335 15892-16574/com.quickblox.sample.groupchatwebrtc D/RTCClient.PeerFactoryManager:开始配置Peer factory 03-06 14:45:32.336 15892-15892/com.quickblox.sample.groupchatwebrtc D/CallActivity:会话 31edba93-27cb-4e51-82a1-f8e0839e6aeb 开始 停止会话 03-06 14:45:32.336 15892-15892/com.quickblox.sample.groupchatwebrtc D/CallActivity:停止 会话 03-06 14:45:32.384 15892-15892/com.quickblox.sample.groupchatwebrtc D/OpponentsFragment: onCreate() 来自 OpponentsFragment 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/OpenSLESPlayer: 终止@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/OpenSLESPlayer: 停止播放@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/AudioRecordJni: 终止@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/AudioRecordJni: 停止录制@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/AudioManager: 关闭@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/WebRtcAudioManager: dispose@[name=Thread-1067, id=1067] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/AudioRecordJni: ~dtor@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/AudioRecordJni: 终止@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/AudioRecordJni: 停止录制@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/JVM: GlobalRef::dtor@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/JVM: NativeRegistration::dtor@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/JVM: JNIEnvironment::dtor@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/JVM: AttachCurrentThreadIfNeeded::dtor@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/OpenSLESPlayer: dtor@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/OpenSLESPlayer: 终止@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/OpenSLESPlayer: 停止播放@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/OpenSLESPlayer: DestroyAudioPlayer 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/OpenSLESPlayer: DestroyMix 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/OpenSLESPlayer: 毁灭引擎 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/AudioManager: ~dtor@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/AudioManager: 关闭@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/AudioManager: JavaAudioManager::dtor@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/JVM: GlobalRef::dtor@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/JVM: NativeRegistration::dtor@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/JVM: JNIEnvironment::dtor@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/JVM: AttachCurrentThreadIfNeeded::dtor@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/JVM:分离 来自 JVM 的线程 03-06 14:45:32.696 15892-16592/com.quickblox.sample.groupchatwebrtc W/art:本机线程 在没有调用 DetachCurrentThread 的情况下退出(也许它会 使用 pthread_key_create 析构函数?): 线程[42,tid=16592,Native,Thread*=0xaeb55500,peer=0x94f730a0,"signaling_threa - 16592"] 03-06 14:45:32.699 15892-16574/com.quickblox.sample.groupchatwebrtc D/RTCClient.PeerFactoryManager:处理 Peer 工厂完成 03-06 14:45:32.699 15892-16574/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor:请求 Looper 停止。在 PeerFactoryManager 上 03-06 14:45:32.699 15892-16574/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor:Looper线程完成。

在这一行,应用程序崩溃了。所以通话活动无法启动。

任何人,请帮助我。

【问题讨论】:

【参考方案1】:

您应该在运行时请求权限。CAMERA 权限在您的情况下。 请阅读更多here。

【讨论】:

嗨弗拉基米尔感谢您的快速回复。我在运行时请求了许可。我还测试了手动授予权限。但它没有用。 :( @YaborHabarov 您是否也尝试询问存储权限?而且有很多日志,但是我没有找到类似错误日志的东西,你能发布最终的错误日志(crush log)吗? 弗拉基米尔,再次感谢您的回复。我对我的应用程序给予了以下许可。 “相机”、“MODIFY_AUDIO_SETTINGS”、“RECORD_AUDIO”、“INTERNET”、“WRITE_EXTERNAL_STORAGE”、“VIBRATE”、“READ_PHONE_STATE”、“ACCESS_WIFI_STATE”。你可以在这里找到完整的 logcat 文件。 link希望很快收到您的来信。谢谢

以上是关于无法使用 quickblox 在 android 6 上进行视频通话的主要内容,如果未能解决你的问题,请参考以下文章

无法解决:com.quickblox:quickblox-android-sdk-chat:2.6.1

用户无法在 Android Quickblox 聊天应用中接收离线消息

无法将 Quickblox Sdk 2.4 指向或配置到 android 应用程序中的新(跟踪)实例

Android:quickblox 来电视频通话收不到

无法在 Quickblox Javascript 中接听视频通话

为啥只能在 Android SDK QuickBlox 上进行第一次视频通话?