How can I detect AudioStatus.isTalking changed true to false?

Description
I’m trying to implement Zoom Video SDK to my app. (Android)
I found that when AudioStatus.isTalking changed true to false,
onAudioStatusChanged callback won’t fired.

I want to dismiss mute icon on remote user, so I want a timig that talking ended.

For workaround, I create background loop with 1 second delay,
and detect it in this loop.

Are there any way to detect isTalking change False.
Or another settings?

Regards,
Jiro

Which Mobile Video SDK version?
zoom-instant-sdk-android-1.0.2.zip

To Reproduce(If applicable)
nothing

Screenshots
nothing

Smartphone (please complete the following information):

  • Device: Pixel 3a
  • OS: Android 11
    And other Android 10-12 devices.

Hi @Jiro, thanks for the post.

The onAudioStatusChanged callback is not going to tell you when a user starts/stops talking. It will only be invoked when a user mutes/unmutes.

The callback you are looking for is onUserActiveAudioChanged.

Thanks!

Thanks for your reply.

OK. mute/unmute fires onAudioStatusChanged.

But onUserActiveAudioChanged seemd to be fired until someone begin talking.
I want to detect a user stopped talking.

Polling works but not so good way.
Is there a better way?

Hi @Jiro,

You should see this callback when the active audio of any user in the session changes, and can query whether or not each user is talking with the isTalking method.

Thanks!

Hi,

OK, Thanks.

It seemd like polling and query is a only way to detect stop talking.

Thanks,
Jiro

Hi @Jiro,

Are you certain that the callback is not triggered when a user stops talking? Please note that there may be background noise present which could still be transmitted.

Thanks!

Hi,

Sorry for late reply.

Now, I can’t get any callback when a user stops talking.

I created a polling task that checks isTalking() once in a second. The task got isTalking()=false when a user stops talking.

Hi @Jiro,

No worries on the delay, we aren’t going anywhere! :slightly_smiling_face:

Thanks for the information. We will need to investigate this further to see if this is working as intended. If it is not, we will need to identify a fix. Either way I will keep you updated as soon as I have any more information.

Thanks!

Hi @Jiro,

Actually, looking into this it appears to be working correctly. When I stop talking on one device, all other devices receive the callback correctly.

Thanks!

Hi jon,

Thanks for your reply.
I checked the source code of Sample App and found that you are correct.

When someone starts talking, onUserActiveAudioChanged will be called with the list with him.
When he stops talking, onUserActiveAudioChanged will be called with empty list.

I thought that somone stops talking, callback includes the user’s information.
But I was wrong.
My app ignored empty list. That was my problem.

Anyway I can detect stop talking without polling.

Thanks for your support.


p.s.

Sorry again.

Above report is for Android.
On iOS sdk, I could’t get callback.

Hi @Jiro,

That makes sense, I am glad to hear it’s working correctly now! And yes, your understanding is correct that the list will be empty when there are no longer any active speakers.

If you are still having issues with the iOS SDK, would you mind creating a new post for that? It will allow other developers to more easily find a solution if they run into a similar issue. :slightly_smiling_face:

Thanks!