0

I m trying to build video chat app with quickblox v2.5.

My chat app working well on iOS9.2 and android 4+, 5+.

But it does not work on android 6. :(

I used Nexus 5 and Samsung galaxy s4, s5.

When I use Nexus5 for the test, it working well between iOS to android, android-android.

But I can't make a video call between android to iOS. (only work audio call).

When I use Samsung galax, it's not worked on all cases (ios-android, android-android, android-ios).

Few days of googling and debugging, I found that this issue happened when to create a session with the opponent.

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

Following is part of 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(true) 03-06 14:45:31.908 15892-16574/com.quickblox.sample.groupchatwebrtc D/RTCClient.PeerFactoryManager: Peer connection factory initiated from thread1060 03-06 14:45:32.320 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBRTCSession: onLocalStreamNeedAdd for opponent 2436257 03-06 14:45:32.321 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBMediaStreamManager: Init local media stream 03-06 14:45:32.321 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBMediaStreamManager: Add video stream 03-06 14:45:32.323 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBRTCSession: onError in peer channel for opponent 2436257, No device for video input was found 03-06 14:45:32.323 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor: Request Looper execute. 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: Call hangUp to opponent 2436257 03-06 14:45:32.323 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel: close 03-06 14:45:32.323 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel.PeerChannelLifeCycleTimers: Stop DialingTimer 03-06 14:45:32.323 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel.PeerChannelLifeCycleTimers: Stop WaitTimer 03-06 14:45:32.323 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel.PeerChannelLifeCycleTimers: Stop DisconnectTimer 03-06 14:45:32.323 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor: Request Looper execute. 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: Closing peer connection start. 03-06 14:45:32.326 15892-16592/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel.SDPObserver:: SDP successfully created 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: Found ISAC rtpmap 103, prefer at 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: Change media description: 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: Found VP8 rtpmap 100, prefer at m=video 9 RTP/SAVPF 100 116 117 96 03-06 14:45:32.330 15892-16592/com.quickblox.sample.groupchatwebrtc D/RTCClient.RTCMediaUtils: Change media description: 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 to CLOSED 03-06 14:45:32.331 15892-16592/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel.PCObserver:: onIceGatheringChange to COMPLETE 03-06 14:45:32.331 15892-16592/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel.PCObserver:: onSignalingChange to CLOSED 03-06 14:45:32.332 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBRTCSession: onChannelConnectionClosed for opponent 2436257 03-06 14:45:32.332 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor: Request Looper execute. 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: Request Looper stop. On QBPeerChannel 03-06 14:45:32.332 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor: Looper thread finished. 03-06 14:45:32.332 15892-16578/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBPeerChannel: onExecutorStop.PeerChannel succesfully stoped 03-06 14:45:32.333 15892-16406/com.quickblox.sample.groupchatwebrtc D/ConversationFragment: getViewForOpponent holder user id is : 2436257 03-06 14:45:32.333 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBRTCSession: Check is session need close 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: Request Looper execute. 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: Request Looper execute. 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: Stop WaitTimer 03-06 14:45:32.334 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBRTCSession: Notify sesions callbacks in count of:2 03-06 14:45:32.335 15892-16406/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor: Request Looper execute. 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: Video source start dispose 03-06 14:45:32.335 15892-16574/com.quickblox.sample.groupchatwebrtc D/RTCClient.QBMediaStreamManager: Video source is null 03-06 14:45:32.335 15892-16574/com.quickblox.sample.groupchatwebrtc D/RTCClient.PeerFactoryManager: start dispose Peer factory 03-06 14:45:32.336 15892-15892/com.quickblox.sample.groupchatwebrtc D/CallActivity: Session 31edba93-27cb-4e51-82a1-f8e0839e6aeb start stop session 03-06 14:45:32.336 15892-15892/com.quickblox.sample.groupchatwebrtc D/CallActivity: Stop session 03-06 14:45:32.384 15892-15892/com.quickblox.sample.groupchatwebrtc D/OpponentsFragment: onCreate() from OpponentsFragment 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/OpenSLESPlayer: Terminate@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/OpenSLESPlayer: StopPlayout@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/AudioRecordJni: Terminate@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/AudioRecordJni: StopRecording@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/AudioManager: Close@[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: Terminate@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/AudioRecordJni: StopRecording@[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: Terminate@[tid=16591] 03-06 14:45:32.693 15892-16591/com.quickblox.sample.groupchatwebrtc D/OpenSLESPlayer: StopPlayout@[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: DestroyEngine 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: Close@[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: Detaching thread from JVM 03-06 14:45:32.696 15892-16592/com.quickblox.sample.groupchatwebrtc W/art: Native thread exiting without having called DetachCurrentThread (maybe it's going to use a pthread_key_create destructor?): Thread[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: dispose Peer factory done 03-06 14:45:32.699 15892-16574/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor: Request Looper stop. On PeerFactoryManager 03-06 14:45:32.699 15892-16574/com.quickblox.sample.groupchatwebrtc D/RTCClient.LooperExecutor: Looper thread finished.

On this line, the app crashed. So call activity can't launch.

Anyone, please help me.

Ravi Gadipudi
  • 1,446
  • 1
  • 17
  • 30
gstream
  • 525
  • 6
  • 18

1 Answers1

0

You should Request Permissions at RunTime.
CAMERA Permission in your case. Please read more here.

Volodymyr Kulyk
  • 6,455
  • 3
  • 36
  • 63
  • Hi Vladimir Thanks for your quick reply. I requested permission at runtime. Also I've tested with manual grant permission. But it's not worked. :( – gstream Mar 07 '16 at 12:27
  • @YaborHabarov have you tried to ask Storage Permissions as well? And there are a lot of logs, but I did not find something like error log, could you post final Error log (crush log)? – Volodymyr Kulyk Mar 07 '16 at 12:33
  • Vladimir, Thanks for your reply again. I gave following permission to my app. "Camera", "MODIFY_AUDIO_SETTINGS", "RECORD_AUDIO", "INTERNET", "WRITE_EXTERNAL_STORAGE", "VIBRATE", "READ_PHONE_STATE", "ACCESS_WIFI_STATE". You can find full logcat file on here. [link](https://www.dropbox.com/s/m8cbaxnqg21ywob/log1.txt?dl=0) Hope to hearing from you soon. Thanks – gstream Mar 07 '16 at 12:38