Black screen after join the meeting

Description
May I know what should I do for the black screen? It is ok when using your demo app, however, it appears black screen when integrated into my own app.

ps: normally, it is working as i can hear the sound and speak in the black screen.

Step:

  1. Join the meeting in portrait
  2. Click the “open video icon” without response (still in red color)
  3. Click the screen in the middle. Show black screen as attached.
  4. Make the phone in landscape
  5. Everything resume normal
  6. Make the phone in portrait
  7. Everything resume normal

It seems I need to refresh something in order to make the layout show in a normal way. Do you have any advise?

Which version?
v4.6.21666.0429

Screenshots

Hi @shingshing6,

Thanks for the post. As you have tried as well, I tried to follow your steps with our demo app and everything is working. May I inquire the following:

  1. Is this user join the meeting successfully? If you use other devices to join this meeting, are you able to see this user’s video and info well? (If yes, then it will be just a local video view presenting issue, otherwise, it might be an issue that this user is not able to join the meeting)
  2. Could you share any code snippet or SDK log for us to further investigate?

Thanks!

Dear Carson,

Please find the log in the below link:

log

  1. The user can join the meeting successfully as i mentioned before, just the screen is black. It seems the audio is ok but video is fail.

  2. Coding:

MyActivity.java:
public class MyActivity extends Activity implements InitAuthSDKCallback,
MeetingServiceListener, UserLoginCallback.ZoomDemoAuthenticationListener {

private final static String TAG = "ZoomSDKExample";

private View layoutJoin;
private View mProgressPanel;
private ZoomSDK mZoomSDK;

private String meeting_id = "";
private String meeting_pw = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Bundle extras = getIntent().getExtras();

    meeting_id = meeting_id;
    meeting_pw = meeting_pw;

    mZoomSDK = ZoomSDK.getInstance();
    if (mZoomSDK.isLoggedIn()) {
        finish();
        return;
    }

    setContentView(R.layout.init_auth_sdk);

    mProgressPanel = (View) findViewById(R.id.progressPanel);

    layoutJoin = findViewById(R.id.layout_join);
    mProgressPanel.setVisibility(View.VISIBLE);

    JSONObject jObj = new JSONObject();
    try {
        jObj.put("jwtToken","JWTTOKEN");
    } catch (JSONException e) {
        e.printStackTrace();
    }

    InitAuthSDKHelper.getInstance().initSDK(this, this, jObj);

    if (mZoomSDK.isInitialized()) {
        layoutJoin.setVisibility(View.INVISIBLE);
        ZoomSDK.getInstance().getMeetingService().addListener(this);
        ZoomSDK.getInstance().getMeetingSettingsHelper().enable720p(true);

        onClickJoin();
    } else {
        layoutJoin.setVisibility(View.GONE);
    }
}

@Override
public void onZoomSDKInitializeResult(int errorCode, int internalErrorCode) {
    Log.i(TAG, "onZoomSDKInitializeResult, errorCode=" + errorCode + ", internalErrorCode=" + internalErrorCode);

    if (errorCode != ZoomError.ZOOM_ERROR_SUCCESS) {
        Toast.makeText(this, R.string.fail_init_zoom, Toast.LENGTH_LONG).show();
        finish();
    } else {
        ZoomSDK.getInstance().getMeetingSettingsHelper().enable720p(true);
        ZoomSDK.getInstance().getMeetingSettingsHelper().enableShowMyMeetingElapseTime(true);
        ZoomSDK.getInstance().getMeetingSettingsHelper().setVideoOnWhenMyShare(true);
        ZoomSDK.getInstance().getMeetingService().addListener(this);

        onClickJoin();
    }
}

@Override
public void onZoomSDKLoginResult(long result) {
    if ((int) result == ZoomAuthenticationError.ZOOM_AUTH_ERROR_SUCCESS) {
        finish();
    } else {
        showProgressPanel(false);
    }
}

@Override
public void onZoomSDKLogoutResult(long result) {

}

@Override
public void onZoomIdentityExpired() {
    if (mZoomSDK.isLoggedIn()) {
        mZoomSDK.logoutZoom();
    }
}

@Override
public void onZoomAuthIdentityExpired() {
    Log.e(TAG,"onZoomAuthIdentityExpired");
}

public void onClickJoin() {

    Context context = getApplicationContext();

    Intent intent = new Intent(context, MyMeetingActivity.class);
    Bundle bundle = new Bundle();
    bundle.putString("meeting_id",meeting_id);
    bundle.putString("meeting_pw",meeting_pw);
    intent.putExtras(bundle);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);
}

private void showProgressPanel(boolean show) {
    if (show) {
        mProgressPanel.setVisibility(View.VISIBLE);
        layoutJoin.setVisibility(View.GONE);
    } else {
        mProgressPanel.setVisibility(View.GONE);
        layoutJoin.setVisibility(View.VISIBLE);
    }
}

@Override
public void onMeetingStatusChanged(MeetingStatus meetingStatus, int errorCode, int internalErrorCode) {
    Log.d(TAG,"onMeetingStatusChanged "+meetingStatus);
    if(!ZoomSDK.getInstance().isInitialized()){
        showProgressPanel(false);
        return;
    }

    if (meetingStatus == MeetingStatus.MEETING_STATUS_DISCONNECTING){
        finish();
    }
}

@Override
public void onDestroy() {
    super.onDestroy();
    UserLoginCallback.getInstance().removeListener(this);

    if(null!= ZoomSDK.getInstance().getMeetingService()){
        ZoomSDK.getInstance().getMeetingService().removeListener(this);
    }
    InitAuthSDKHelper.getInstance().reset();
}

}

MyMeetingActivity:
public class MyMeetingActivity extends MeetingActivity {
private ZoomSDK mZoomSDK;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Bundle extras = getIntent().getExtras();

    String meeting_id = extras.getString("meeting_id","");
    String meeting_pw = extras.getString("meeting_pw","");

    mZoomSDK = ZoomSDK.getInstance();

    if (mZoomSDK.isLoggedIn()) {
        finish();
        return;
    }

    if (mZoomSDK.isInitialized()) {
        JoinMeetingParams params = new JoinMeetingParams();

        params.meetingNo = meeting_id;
        params.password = meeting_pw;

        JoinMeetingOptions opts = new JoinMeetingOptions();
        opts.no_invite = true;

        ZoomSDK.getInstance().getMeetingService().joinMeetingWithParams(this, params,opts);

        ZoomSDK.getInstance().getMeetingSettingsHelper().enable720p(true);
    } else {
        Toast.makeText(this,"SDK is not ready",Toast.LENGTH_LONG);
    }
}

@Override
public void onBackPressed() {
    onClickLeave();
}

}

Thanks.

Hi @shingshing6,

Thanks for the info. If seems like you are extending the MeetingActivity, so the transition to the meeting UI should be done by SDK. Using context.startActivity(intent) will result in issues. Please add the following to your config.xml and SDK will invoke your activity after successfully start/join the meeting:

<string name="zm_config_conf_activity">packageName.MyMeetingActivity </string>

Hope this helps. Thanks!

Dear Carson,

I have added the code above in config.xml already. However, the issue still happen.
Even though, I added my coding in the demo apps and updated zm_config_conf_activity, it still not working. Please help for it.

Thanks.

Hi @shingshing6,

Let me circle back to the engineering team on this and get back to you shortly. Thx

Dear Carson,

Thanks. Please help for it, I was already struggle it for 3 weeks.

Hi Carson,

May I know is there any update of this issue? Thanks.

Hi @shingshing6,

Thanks for the reply. Is it possible to request an apk of your app with the issue you are facing so that we could experience the issue and troubleshoot it from there? We are not able to reproduce this on our end.

Thanks!

Hi Carson,
Attached the source code for your debug.

Source

Please place the src folder under sample/src. Then, please update your API key, secret and then update your MEETING_ID and MEETING_PW inside the source code.

My workflow is init the SDK and auto join the Zoom via onClickJoinForMyActivity()

Thanks.