I want to implement the same functionality of ‘share screen’ button as like that of Zoom.
My code for that is shown below.
share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
final EditText edittext = new EditText(MainActivity.this);
alert.setMessage(“\nEnter sharing key or Meeting ID to share to a Zoom Room”);
alert.setTitle(“\t\t\t\t\t\t\t\tShare Screen”);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
edittext.setLayoutParams(lp);
alert.setView(edittext);
alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//What ever you want to do with the value
final Editable YouEditTextValue = edittext.getText();
// MediaProjectionManager manager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
// if (manager != null) {
// Intent intent = manager.createScreenCaptureIntent();
// startActivityForResult(intent, REQUEST_SCREEN_CAPTURE);
// }
MeetingService meetingService1 = ZoomSDK.getInstance().getMeetingService();
JoinMeetingOptions options = new JoinMeetingOptions();
options.no_invite = true;
options.no_audio=true;
options.no_video=true;
options.no_bottom_toolbar = true;
options.no_dial_in_via_phone = true;
options.no_dial_out_to_phone = true;
//meetingService.addListener(meetingServiceListener);
JoinMeetingParams params1 = new JoinMeetingParams();
//params.displayName = "User Name";
params1.meetingNo = String.valueOf(YouEditTextValue);
params1.password = MeetingParams.getPassword();
meetingService1.joinMeetingWithParams(MainActivity.this, params1, options);
//InMeetingService inMeetingService = ZoomSDK.getInstance().getInMeetingService();
meetingService1.addListener(new MeetingServiceListener() {
@Override
public void onMeetingStatusChanged(MeetingStatus meetingStatus, int i, int i1) {
switch (meetingStatus) {
case MEETING_STATUS_CONNECTING:
// Meeting is connecting
break;
case MEETING_STATUS_INMEETING: {
startMediaProjectionRequest();
}
break;
}
}
@Override
public void onMeetingParameterNotification(MeetingParameter meetingParameter) {
}
});
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// what ever you want to do with No option.
}
});
alert.show();
}
});
}
private void startMediaProjectionRequest() {
if (mScreenInfoData == null) {
mediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
startActivityForResult(mediaProjectionManager.createScreenCaptureIntent(), MEDIA_PROJECTION_REQUEST_CODE);
} else {
startScreenShareService();
}
}
@SuppressLint(“NewApi”)
private void startShareScreen(Intent data) {
// Timber.e(“Start share screen %s”, data);
mScreenInfoData = data;
if (data == null) {
return;
}
if (Build.VERSION.SDK_INT >= 24) {
Intent intent = new Intent(“android.settings.action.MANAGE_OVERLAY_PERMISSION”, Uri.parse(“package:” + getPackageName()));
startActivityForResult(intent, REQUEST_SYSTEM_ALERT_WINDOW);
} else {
startScreenShareService();
}
}
private void startScreenShareService() {
MobileRTCSDKError error = ZoomSDK.getInstance().getInMeetingService().getInMeetingShareController().startShareScreenSession(mScreenInfoData);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
{
if (requestCode == MEDIA_PROJECTION_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
startShareScreen(data);
} else {
// Timber.e(“Screen share permission denied!”);
}
} else if (requestCode == REQUEST_SYSTEM_ALERT_WINDOW) {
ZoomSDK.getInstance().getInMeetingService().getInMeetingShareController().startShareScreenSession(mScreenInfoData);
}
}
In this code the share screen is not working. Can anyone review the code and please suggest a solution.