webex / webex-android-sdk-example

A developer friendly sample implementation of Webex client SDK and showcases all SDK features.
MIT License
13 stars 23 forks source link

Receiving "can't call void com.webex.wseclient.WseSurfaceView.disableSurfaceStatListener() on null object" #90

Closed azfx closed 3 months ago

azfx commented 3 months ago

I am using the Webex Android SDK 3.12.0 to test the dial feature. The sdk is used inside flutter, though all the ui is within the Android side.

While making webex.phone.dial call, I am receiving the following error: Any ideas ? Note: I am able to initiate a call to a user logged in to the official webex app on another device. The app using the webex sdk is able to establish connection and send video momentarily before crashing with the error below.

F/libc    (28520): Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 28731 (Timer:LocusComb), pid 28520 (x_skill_example)
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'google/tangorpro/tangorpro:14/AP2A.240605.024/11860263:user/release-keys'
Revision: 'MP1.0'
ABI: 'arm64'
Timestamp: 2024-07-14 11:17:17.295394457-0400
Process uptime: 87s
pid: 28520, tid: 28731, name: Timer:LocusComb  >>> com.brilliantmode.brilliant_webex_skill_example <<<
uid: 10266
tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
Abort message: 'JNI DETECTED ERROR IN APPLICATION: can't call void  com.webex.wseclient.WseSurfaceView.disableSurfaceStatListener() on null object 
    in call to CallVoidMethodV
    from void com.ciscowebex.androidsdk.internal.IOmniusServiceBridge.setVideoRenderViewsNative(java.lang.String, java.lang.Object, java.lang.Object)'

Code used:

 private fun dialPerson(webex: Webex, email: String) {
        Log.d("WebexSurfaceView", "Ready to dial $email")
        val mediaOption: MediaOption
        // mediaOption = MediaOption.audioVideoSharing(Pair(binding.localView, binding.remoteView), binding.screenShareView)
        mediaOption = MediaOption.audioVideo(Pair(localView,remoteView))

        webex.phone.dial(email, mediaOption, CompletionHandler { result ->
            val call = result.data
            Log.d("WebexSurfaceView", "Call result $call")

            call?.setObserver(object : CallObserver {
                override fun onRinging(call: Call?) {
                    super.onRinging(call)
                    Log.d("WebexSurfaceView", "Call Ringing")
                }

                override fun onConnected(call: Call?) {
                    super.onConnected(call)
                    Log.d("WebexSurfaceView", "Call Connected")
                }

                override fun onDisconnected(event: CallObserver.CallDisconnectedEvent?) {
                    super.onDisconnected(event)
                    Log.d("WebexSurfaceView", "Call Disconnected")
                }
            })
        })
    }

Whole log file for reference is available here

azfx commented 3 months ago

Was able to resolve this issue by using the MediaRenderView instead of a SurfaceRendererView

jbenyovs commented 3 months ago

Great to hear that the issue is resolved @azfx 👍