Customize of zoom android sdk issues

Description
Hello, I’m doing so customize of zoom android sdk for the app and there are some needs.

  1. Is it possible to know the duration of current meeting when a new user came into a meeting?Like, A and B are having a meeting and it last 10 mins, suddenly C join in the meeting, can zoom android sdk provide some api that C can know the meeting has already last 10 mins?

  2. Its it possible to know that the current meeting has 40 mins limits? I notice that for free user If the meeting have more than 3 people, there will be a 40 mins limit and the pro user have no such limit. So it possible to know this info from the android sdk after a user join into the meeting? I want to inform user in advance.

  3. Does the zoom have some kind of time out mechanism when a user disconnect for quite a while? And can the sdk tell if the user still in a particular meeting? Let’s say user A is having a meeting but suddenly somehow app crash, when the user restarts the app, can the zoom sdk tell us that user A have been inside a meeting that not finish yet? So that then can guide user to rejoin the meeting. And if he leave meeting because of timeout, or the meeting is already over, We’ll not guide the user.

  4. I notice that when user is having a meeting, whenever someone come and leave, the sdk will notify by the user id. Is this id can be considered not the user’s identity and it’s something like id only use in the meeting? I tested and found that say user A join a meeting and got his id 123, and then A left, then A join again, then I got his id 456. And sometimes it keep 123. So this is a little bit confused, can give more information about this?

  5. Why the email field in the user info can be some random string? Our company have bought the business license and there are some account under the “main account?” and I tested and found out that when I try to get the user info from these accounts, the email field will return some random string, but these account surely have proper email address. And I test my free personal account and I can get XXX@gmail.com. For those accounts under the main account I’m sure they all have the proper email address like XXX@XX.com. So how does these happen? Can I restore the “random string” to the original account by some method?

  6. Our company had bought the zoom’s service and there’s some account (with devices?) can create meeting in the meeting room. For those meeting create by devices, first time we try to join with joinMeeting api with JoinMeetingParams but fail and we think it’s because for JoinMeetingParams it lack of authenticate info. So we try to call startMeetingWithParams with StartMeetingParams(it need to pass the token and zak) to join a device host meeting and it work! However, later we found that the StartMeetingParams cannot pass the password, only JoinMeetingParams can, so when the device host meeting needs the password, both way fail. For JoinMeetingParams we lack of authenticate info, for StartMeetingParams we lack of password, so how to solve this?

Sorry to ask many questions at a time, but I’m really need your help.
Look forward to the reply, thanks in advance.

Which version?
latest

To Reproduce(If applicable)
None

Screenshots
None

Smartphone (please complete the following information):
None

Additional context
None

BTW I post the same post 3 days ago, and It be comes hidden, it it appear again please help to delete the duplicated post thanks.

->
Our automated spam filter, Akismet, has temporarily hidden your post in Customize of zoom android sdk issues for review.

A staff member will review your post soon, and it should appear shortly.

Hi John Doe,

Thanks for the post. I will work with the engineers regarding your questions and get back to you asap.

Thanks!

Thanks, finally have a response.
Hope to solve these problems soon, I’ve been stuck here for quite a while and it’s really frustrated.

Hi John_Doe,

Thanks for the reply. Regarding your questions:

  1. Is it possible to know the duration of current meeting when a new user came into a meeting?Like, A and B are having a meeting and it last 10 mins, suddenly C join in the meeting, can zoom android sdk provide some api that C can know the meeting has already last 10 mins?

Our Android SDK does not have the API for the scenario you are describing. You may use Zoom API to retrieve participant information:https://marketplace.zoom.us/docs/api-reference/zoom-api/reports/reportmeetingparticipants

  1. Its it possible to know that the current meeting has 40 mins limits? I notice that for free user If the meeting have more than 3 people, there will be a 40 mins limit and the pro user have no such limit. So it possible to know this info from the android sdk after a user join into the meeting? I want to inform user in advance.

Our SDK has handled this for you. When the 40 mins limit is approaching, there will be an alert saying that the meeting is approaching 40 mins. So you don’t need to take care of this part.

  1. Does the zoom have some kind of time out mechanism when a user disconnect for quite a while? And can the sdk tell if the user still in a particular meeting? Let’s say user A is having a meeting but suddenly somehow app crash, when the user restarts the app, can the zoom sdk tell us that user A have been inside a meeting that not finish yet? So that then can guide user to rejoin the meeting. And if he leave meeting because of timeout, or the meeting is already over, We’ll not guide the user.

When an SDK app suddenly crashed or being closed by the user in an unexpected way, the user will show in the participant’s list for a few more seconds until the server. Our server has the mechanism to detect whether a user is active or not, so you don’t need to handle this part as well. Once the user restarts the app, then you can join the same meeting again. For a Zoom meeting, there is no “finished” concept, as long as the host has not ended the meeting/or the min limit has not been reached, then any user can join the meeting again to continue the conversation.

  1. I notice that when user is having a meeting, whenever someone come and leave, the sdk will notify by the user id. Is this id can be considered not the user’s identity and it’s something like id only use in the meeting? I tested and found that say user A join a meeting and got his id 123, and then A left, then A join again, then I got his id 456. And sometimes it keep 123. So this is a little bit confused, can give more information about this?

The User ID you are mentioning are the in-meeting participant ID, it is not the UUID of a specific user. The user ID here is randomly assigned in each meeting(so it could be different in different meetings) and can be used to pass to SDK interface to perform operations for a user.

  1. Why the email field in the user info can be some random string? Our company have bought the business license and there are some account under the “main account?” and I tested and found out that when I try to get the user info from these accounts, the email field will return some random string, but these account surely have proper email address. And I test my free personal account and I can get XXX@gmail.com. For those accounts under the main account I’m sure they all have the proper email address like XXX@XX.com. So how does these happen? Can I restore the “random string” to the original account by some method?

Could you provide more information on this one? The description sounds unexpected. What is the SDK version are you using? Are you able to reproduce this with our demo app? Could you provide the steps to reproduce this?

  1. Our company had bought the zoom’s service and there’s some account (with devices?) can create meeting in the meeting room. For those meeting create by devices, first time we try to join with joinMeeting api with JoinMeetingParams but fail and we think it’s because for JoinMeetingParams it lack of authenticate info. So we try to call startMeetingWithParams with StartMeetingParams(it need to pass the token and zak) to join a device host meeting and it work! However, later we found that the StartMeetingParams cannot pass the password, only JoinMeetingParams can, so when the device host meeting needs the password, both way fail. For JoinMeetingParams we lack of authenticate info, for StartMeetingParams we lack of password, so how to solve this?

Are you trying to use Android SDK app to join the meetings created by Zoom Room? The StartMeeting is designed for the host to start meeting thus it is not ideal to ask the host for the meeting password. What kind of errors are you getting when trying to join the meeting?

Hope this helps. Thanks!

Hi Carson_Chen,

Thank you so much for your reply and it really helps.

And there’s some thing might need to further discuss.

2.When 40 mins limit approaching, what will zoom alert user? By dialog? Toast? Is there any ways to customize this part? Our PM might have their own plan. Will zoom sdk give us some callback or something?

3.I understand the no “finished” concept now, thanks. So when the user restart the app, how can we get the info of whether the meeting is ended(maybe by 40 mins limit or everyone leave the meeting)? I notice there’s a Api https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meeting can check the meeting status, can we use this to decide whether the meeting is ended?

5.For this case I check with our server and found out that this is the userId indeed. We have migrate the sdk to our app and there’s large part handle by server so I think it cannot be reproduce on demo app. But I can explain the as the flowing:
In our app, we start a meeting with by the following code:
zoomSdk.meetingService.startMeetingWithParams(context,StartMeetingParamsWithoutLogin().apply {
userId = serverReturnUserId
zoomToken = serverReturnZoomToken
zoomAccessToken = serverReturnZoomAccessToken
userType = MeetingService.USER_TYPE_API_USER
displayName = myDisplayName
})
The first three params are retrieve by our server.
And when sdk callback the status is inMeeting, we call Log.d(TAG, “my email:” + zoomSdk.inMeetingService.myUserInfo?.email) and it will return some “random string” -> my email:7iOdbzqbT7Wm9F5-SLYHPA(we later found that it’s the userId), for these account the email should be lirui@seafroup.com. Is is expected? Although it’s kinda weird to put it in email field but it’s ok now, we can ask the server to parse userId to email. So this can be consider solved. Thanks anyway.

6.Yes we are trying to use Android SDK app to join the meeting created by Zoom Room I think so.
So if we use
zoomSdk.meetingService.joinMeetingWithParams(context, JoinMeetingParams().apply{
meetingNo = zoomRoomMeetingNo
displayName = myDisplayName
}
will recieved a onMeetingFail callback, errorCode and internalErrorCode are: 20 23
I check the doc that it’s “User needs to login if the user wants to join the webinar”
However it’s an api user we can only join with token.
If we use startMeetingWithParams and pass zoomToken and zoomAccessToken, we can join into the Zoom Room, so we use it instead.
And I didn’t find place to set password or lock the meeting in the Zoom Room Pad, so password problem can be ignore, for now?

And there’s some more issue.
7.Did the zoom sdk provide the “disable sound” feature? I mean enable or disable the audio track from the meeting room. It’s not mute my voice, it’s disable the voice from other people in the meeting. Did zoom sdk provide this feature? Or I have to mute the android system sound to achieve this goal?

8.When user join into or leave the meeting, it looks like it will have some ring-tone like “ding-ling”, can we disable that?

Thanks again for your reply, it really helps!

Hi John_Doe,

Thanks for the reply. Regarding your questions:

2.When 40 mins limit approaching, what will zoom alert user? By dialog? Toast? Is there any ways to customize this part? Our PM might have their own plan. Will zoom sdk give us some callback or something?

It will be a dialog, when there are 10 minutes left, it will show this:


When the 40 minutes limit has reached, it will show this:

This is part is not customizable. When the meeting reaches 40 minutes limit, the meeting will end, you can implement the onMeetingStatusChanged and get notifications when the meeting ends.

3.I understand the no “finished” concept now, thanks. So when the user restart the app, how can we get the info of whether the meeting is ended(maybe by 40 mins limit or everyone leave the meeting)? I notice there’s a Api https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meeting can check the meeting status, can we use this to decide whether the meeting is ended?

You can retrieve meeting status info from meetingService.getMeetingStatus(), and the available status is here:MeetingStatus (Zoom.us SDK API Document). You can refer to the implementation in the demo app: https://github.com/zoom/zoom-sdk-android/blob/master/mobilertc-android-studio/example2/src/main/java/us/zoom/sdkexample2/MainActivity.java#L116

5.For this case I check with our server and found out that this is the userId indeed. We have migrate the sdk to our app and there’s large part handle by server so I think it cannot be reproduce on demo app. But I can explain the as the flowing:
In our app, we start a meeting with by the following code:
zoomSdk.meetingService.startMeetingWithParams(context,StartMeetingParamsWithoutLogin().apply {
userId = serverReturnUserId
zoomToken = serverReturnZoomToken
zoomAccessToken = serverReturnZoomAccessToken
userType = MeetingService.USER_TYPE_API_USER
displayName = myDisplayName
})
The first three params are retrieve by our server.
And when sdk callback the status is inMeeting, we call Log.d(TAG, “my email:” + zoomSdk.inMeetingService.myUserInfo?.email) and it will return some “random string” → my email:7iOdbzqbT7Wm9F5-SLYHPA(we later found that it’s the userId), for these account the email should be lirui@seafroup.com. Is is expected? Although it’s kinda weird to put it in email field but it’s ok now, we can ask the server to parse userId to email. So this can be consider solved. Thanks anyway.

Thanks for the details. We will look into this.

6.Yes we are trying to use Android SDK app to join the meeting created by Zoom Room I think so.
So if we use
zoomSdk.meetingService.joinMeetingWithParams(context, JoinMeetingParams().apply{
meetingNo = zoomRoomMeetingNo
displayName = myDisplayName
}
will recieved a onMeetingFail callback, errorCode and internalErrorCode are: 20 23
I check the doc that it’s “User needs to login if the user wants to join the webinar”
However it’s an api user we can only join with token.
If we use startMeetingWithParams and pass zoomToken and zoomAccessToken, we can join into the Zoom Room, so we use it instead.
And I didn’t find place to set password or lock the meeting in the Zoom Room Pad, so password problem can be ignore, for now?

Even though the Zoom Client and Zoom Room can join the same meeting, but in fact, they are 2 separated products. Our Client SDK is for the Zoom Client and we have not tested the scenarios you are mentioning. For the error code you are mentioning, are you getting 20&23 or 2023?

And there’s some more issue.

7.Did the zoom sdk provide the “disable sound” feature? I mean enable or disable the audio track from the meeting room. It’s not mute my voice, it’s disable the voice from other people in the meeting. Did zoom sdk provide this feature? Or I have to mute the android system sound to achieve this goal?

Zoom Room is an individual product and our Client SDK does not have the ability to control Zoom Room. You might need to contact the Zoom Room team for further support on this.

8.When user join into or leave the meeting, it looks like it will have some ring-tone like “ding-ling”, can we disable that?

You could use InMeetingService (Zoom.us SDK API Document) to disable this sound.

Hope this helps. Thanks!

Thank you so much, it helps a lot!

For 6. use android sdk to join Zoom Room, Sorry I didn’t explain clearly, we got errorCode=20, internalErrorCode=23 on onMeetingFail callback. So for now we use startMeeting api to join Zoom Room. It’s the only way for now as the api user. Hope that there might be a proper method in the future.

There’s no more problems for now.
Thank you so much!

Hi,

Thanks for the reply. We will continue investigate the scenario you are mentioning. Glad to hear that the problems are all clear at the moment.

Thanks!

Hi Carson_Chen, I need your help again.
Is the android sdk have callback on 10 minutes left from free meeting like IOS?

I’m looking for this callback in IOS:

MobileRTCMeetingServiceDelegate -> (void) - onFreeMeetingReminder:canFreeUpgrade:completion
Inform user that free meeting will be ended in 10 minutes.
(https://zoom.github.io/zoom-sdk-ios/protocol_mobile_r_t_c_meeting_service_delegate_01-p.html#a9275d5bb8ce9f683d9689e2dffc01076)

in android side.
Thanks!

Hi John_Doe,

Thanks for the reply. On Android, the name is a little bit different, you may find it here:https://zoom.github.io/zoom-sdk-android/us/zoom/sdk/MeetingActivity.html#handleConfPayReminder-boolean-

Hope this helps. Thanks!

Hi Carson_Chen,

Thanks for your reply. Since we are using full customize UI so we won’t use MeetingActivity. However I dig into the source code and found “ConfUI” it has a listener callback on onConfStatusChanged2, in this callback, by my test, cmd 96 is indicated the remaining free seconds for this meeting. So for now we use this callback. Thanks anyway.

And another issue comes:
Previously I’m asking how to disable the sound when user enter&leave meeting room, but it seems doesn’t work.
I tested on demo project of version(4.4.55130.0712), the procedures are following:

1.add following code to the end of MyMeetingActivity’s onCreate function:

mVideoListView.postDelayed(new Runnable() {
            @Override
            public void run() {
                Log.d("xxxxxx", " result:" + (
                        mInMeetingService.setPlayChimeOnOff(false) == MobileRTCSDKError.SDKERR_SUCCESS));
            }
        }, 30*1000L);//delay 30sec to wait for fully enter the meeting room

2.run demo project, click email user login, login with email and password
3.click setting, enable Customized UI
4.start instant meeting and wait for 30 sec, logcat print: us.zoom.sdkexample D/xxxxxx: result:true
5.use desktop zoom app to join this meeting
6.phone produce the “ding-ling” sound

Did I miss something?
We need some ways to disable the sound.

Looking for your reply, thanks!

Hi John_Doe,

Thanks for the reply and thanks for the time working on the source code. However, the callback onConfStatusChanged is not a public SDK callback and directly using the methods in the source code is not recommended. Please note that we will not be responsible or be able to provide support for this unrecommended usage. I will pass this use case as a feature request to our engineering team and we will investigate the possibility to add a callback for your scenarios.

And regarding the chime on/off case, the setPlayChimeOnOff(false) only works if there are 2+ people in the meeting. When the first attendee joins, we need the chime sound to do echo detection. If you turn the chime off, when the later attendee joins, the sound won’t play.

Hope this helps.Thanks!

Hi Carson_Chen,

Thank you so much for the reply. We’ll consider about it.

And I have a new question:
I saw the call back “onHostAskUnMute” in InMeetingServiceListener, that is, if I under stand correctly,

When I’m mute, then the host call

inMeetingService.inMeetingAudioController.muteAttendeeAudio(false,  myId)

I’ll received onHostAskUnMute callback, right?

But, I don’t find the relative callback on video. That’s to say:
When I turn off my camera

inMeetingVideoController.muteMyVideo(true)

Then the host call:

inMeetingService.inMeetingVideoController.askAttendeeStartVideo(myId)

will I receive any callback?

Looking for your reply, thanks!

Hi John_Doe,

Thanks for the reply. Currently, we do not have such callback for the event when the host mute/unmute the attendee’s video. I have passed this as a feature request to our engineering team and we will investigate the possibility of adding this. I will keep you updated on this.

Thanks!

Understood Carson_Chen, thank you so much for that!

Hi Carson_Chen,

There’s a new issue needed your help.
I notice that, if I join a meeting, then suddenly kill my app, then quickly start the app to join the previous meeting, I can see my previous account still existed in the meeting, and disappear after a while. Is that expected?

I can reproduce on Zoom Android App (from googleplay).

1.Start a meeting from desktop zoom client. Meeting number is 123.
2.Join the meeting(123) from zoom android app, now there’s only two people in the meeting room
3.Kill the zoom app, and quickly start app again then join the meeting(123), I can see three people in the app, there’s two “me”.
4.For a while(like 30 seconds?), one of “me” will leave the meeting automatically.

So my question is, how will this happened? Is this behaviour expected? Is there’s a way to reuse the “previous account” when I join the meeting?

Looking for your reply, thanks!

Hi John_Doe,

Thanks for the reply and the info. Yes, this is expected. When the Zoom app is being killed by the system, it does not have a chance to let the server know it is being killed. So the server will not know until the user is not responding for a long time. Since we do not collect any personally identifiable information, so we do not know that the user that is not responding is the same user as the later one. This is by design.

Hope this helps. Thanks!

Thanks Carson_Chen, we will find other ways to solve this.

1 Like

Thanks Carson for the help!

-Tommy