I want to integrate the Zoom into my Android App

I am looking for a way to integrate Zoom with my Android App.

I want to enable video communication with a my Android App using mobile SDK of Zoom. By the way, when I look at the Zoom document, all video calls appear to be possible only on Zoom’s App.
I think that I cannot modify the Zoom’s mobileRTC even I need to modify the UI of the video call viewing screen.
Do not you provide APIs such as Tokbox or Vidyo?

Hi, We plan to release a new Android SDK package in this month which support to customize meeting video UI. We will upload the new SDK package to github once it is ready.

Hello All,

Hello

Osuobeni James,

I want to remove password dialog on zoom app when anyone use meeting as password protected i.e when we go for personal meeting id section then select require password option, if we enable that option, meeting will not create on guest side and an dialog generated on zoom application for guest side showing enter your password. I want to remove that password dialog , so that i will provide that password option on my app and when i request any meeting from my app with password, on zoom app it directly create meeting without showing any dialog.

I explained u in detail :-

I don’t want to remove the password from personal meeting room because i want user to enter that password manually from my another. After that zoom app opens from my app. But i don’t want to show password dialog , after all user join meeting directly without interrupt of dialog.**

Example in my app,

Two edit text fields are there:-

Enter your meeting id

Enter your meeting password

After user will submit above information, then zoom app will opens and i want to join meeting without interrupt of dialog.

I have integrated zoom already but i want to remove that password dialog.

Hi bhaskar,

Thanks for using Zoom SDK. You can collect and pass the meeting password as a meeting parameter before joining/starting a meeting. As long as the meeting password is correct, the password dialog will not appear. If the password is incorrect, then the dialog will pop-up.

You can follow the instruction in the doc:

JoinMeetingParams params = new JoinMeetingParams();

params.displayName = DISPLAY_NAME;
params.meetingNo = meetingNo;
params.password = meetingPassword;

Hope this helps. Thanks!

Hello all,

Thanks a lot! You resolved my issue.

I have another query regarding zoom camera. I will tell you in briefly:-

I am currently opening zoom from my app. But there is an problem of camera occupy and release on zoom because my app already occupy camera, but when i start zoom from my app i release camera of my app so that camera will available for zoom. But there is an issue produced on zoom, so that zoom can’t release there camera ,so that my app got on struck state and then last option are reboot the system. So can you tell me how can i occupy and release camera on zoom, so that i will proceed with my implementation.

Hi,
Thanks for the reply. The issue might be caused by the release camera process of our Zoom SDK was not complete while you request for camera again. At the time that you leave a meeting or exit the Zoom SDK, there is a at most 1-2 second process to stop the service and release the camera. You can try to place a 0.5 - 1 second delay in the onResume() method of the Activity that you activate after the Zoom SDK Activity.

Hope this helps. Thanks!

Hello,

Can you describe me in brief. From where this call back is used onMeetingLeaveComplete?

With Regards

Bhaskar Sharma

Hello all,

Can u also provide me the code of meeting left.

With Regards

Bhaskar Sharma

Hi,
If you refer to the following diagram(https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle):


If your Activity that uses the camera is running, then you will be in the “green button” in the middle. When you trigger the Zoom SDK, then the Activity of our Zoom SDK comes to the foreground, which is the state “Another activity comes into the foreground”.

When you finish using Zoom services, then it comes to “User returns to the activity”, the onResume() method will be triggered. At the time that the onResume() method is being triggered, the leave meeting process of the Zoom services might not complete yet, and the camera might not be released yet. If you place a delay/timeout in this onResume() method, wait for the leave meeting process to complete and wait for the camera to be released.

Hope this helps. Thanks!

Hello all,

We have an android device in which we have to change the resolution on run time. So that we have to change SO file on run time. And then an command is fire from our system side so that if zoom application is running it will be kill through command. But camera of zoom is not release at that time . So i want, whenever i fired command for killed the zoom app through my app , so that if zoom app will killed then zoom camera will release too.

Hi
you can mute you video when you leave meeting activity. and unmute when you back to meeting activity.
API : InMeetingVideoController muteMyVideo

Hello all,

Can you tell with my above query that where i will find out object of camera also?

With Regards

Bhaskar Sharma

Hi,
Based on your description, you are using a system command to kill the Zoom process while you are in the meeting instead of leaving the meeting with normal process like pressing the “Leave Meeting” button or call the “Leave Meeting” interface? If you do not end the Zoom meeting in a regular way, then it is hard to control the resource(like the camera) when the process has been killed.

You can try to play around with the Camera object provided by Android, here are some related links:

But I highly doubt that would work. If the Zoom process has been killed in a not normal way, then there is nothing we can do to release the resource. Can you try to leave the meeting and end the Zoom SDK process with the regular procedure? In that way, the camera will be released after leaving the meeting.

Thanks!

Hello all,

Is there any way to resolved this issue? Because i have a requirement to kill the app via command.

With Regards

Bhaskar Sharma

Hi,

Could you share what kind of method or which command line do you use to kill the app? We can see if there is a workaround based on the exact operation.

Thanks!

Hi

General kill app process Android system will automatically release camera resources.
are you using custom devices? What is your system version and device info?

you can leave meeting or muteMyVideo before you send the kill app command .

Hello,

I have provided adb shell am force-stop <pacakage_name_zoom_app> to our system side. I will call system side by sending response whenever i need to kill the app. They fire adb shell am force-stop <pacakage_name_zoom_app> command and kill the zoom app by using the package name of zoom app.

With Regards

Bhaskar Sharma

Hello ,

Can we schedule a call regarding this? I will explain all the queries regarding that issue on call. If you have any suitable time on monday morning nearly at 10 ‘o’ clock.

With regards

Bhaskar Sharma

Hi,
As Fred said, if you kill the app process in a general way, the Android system will automatically release the resources. If you happen to know when you will be killing the app, you can leave meeting or muteMyVideo before you send the kill app command.

Regarding the command that you are using:

adb shell am force-stop <package_name>

When you call this command, the Am class fires up, then you will find out the Force-Stop command is calling this method(https://android.googlesource.com/platform/frameworks/base/+/742a67127366c376fdf188ff99ba30b27d3bf90c/cmds/am/src/com/android/commands/am/Am.java?autodive=0#521):

    private void runForceStop() throws Exception {
        mAm.forceStopPackage(nextArgRequired());
    }

The mAm is a ActivityManager, which directs to the following method:(https://android.googlesource.com/platform/frameworks/base/+/742a67127366c376fdf188ff99ba30b27d3bf90c/core/java/android/app/ActivityManagerNative.java#2945)

    public void forceStopPackage(String packageName) throws RemoteException {
        Parcel data = Parcel.obtain();
        Parcel reply = Parcel.obtain();
        data.writeInterfaceToken(IActivityManager.descriptor);
        data.writeString(packageName);
        mRemote.transact(FORCE_STOP_PACKAGE_TRANSACTION, data, reply, 0);
        reply.readException();
        data.recycle();
        reply.recycle();
    }

If you dig deeper, you will find the forceStopPackage method in the ActivityManagerService class is involved(https://android.googlesource.com/platform/frameworks/base/+/4f868ed/services/core/java/com/android/server/am/ActivityManagerService.java#5444);
By ananlyzing the force stop methods in the Android source code, you can see ideally the data and the resources are being recyled when the force stop is completed.

However, it is possible that the resource is not being released and recycled on time, there are 2 possible solutions for this:

  1. Use the kill command instead of the force-stop command, per the Android doc,(https://developer.android.com/studio/command-line/adb#am) “kill - This command kills only processes that are safe to kill and that will not impact the user experience”.

  2. Implement an unCaughtExceptionHandler like the following to see if that helps:

    private static void unCaughtExceptionHandler() {
    Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
        public void uncaughtException(final Thread thread, final Throwable ex) {
            ex.printStackTrace();
            releaseCamera();
        }
    });
}

The following links could be helpful:

Hope this helps. Thanks!