API-Examples icon indicating copy to clipboard operation
API-Examples copied to clipboard

Migrate issue from 3.x.x to 4.0.0 beta

Open ArcherEmiya05 opened this issue 3 years ago • 9 comments

Good day, we had a project that haven't touch in a long time and wanting to migrate from 3.4.2 to the latest SDK. We read the migration documentation but does not answer the questions below:

  1. How huge is the change we must perform? So far we only refactor the packages to io.agora.rtc2 then change some constants. We also updated the onRemoteAudioStateChanged callback from
@Override
    public void onRemoteAudioStateChanged(int uid, int state, int reason, int elapsed) {
        runOnUiThread(() -> {
            if (state == Constants.REMOTE_AUDIO_STATE_STOPPED && reason == Constants.REMOTE_AUDIO_REASON_REMOTE_MUTED)
                onRemoteUserMute(uid, true);
            if (state == Constants.REMOTE_AUDIO_STATE_DECODING && reason == Constants.REMOTE_AUDIO_REASON_REMOTE_UNMUTED)
                onRemoteUserMute(uid, false);
        });
    }

to this

@Override
    public void onRemoteAudioStateChanged(int uid, IRtcEngineEventHandler.REMOTE_AUDIO_STATE state, IRtcEngineEventHandler.REMOTE_AUDIO_STATE_REASON reason, int elapsed) {
        runOnUiThread(() -> {
            if (state == IRtcEngineEventHandler.REMOTE_AUDIO_STATE.REMOTE_AUDIO_STATE_STOPPED && reason == IRtcEngineEventHandler.REMOTE_AUDIO_STATE_REASON.REMOTE_AUDIO_REASON_REMOTE_MUTED)
                onRemoteUserMute(uid, true);
            if (state == IRtcEngineEventHandler.REMOTE_AUDIO_STATE.REMOTE_AUDIO_STATE_DECODING && reason == IRtcEngineEventHandler.REMOTE_AUDIO_STATE_REASON.REMOTE_AUDIO_REASON_REMOTE_UNMUTED)
                onRemoteUserMute(uid, false);
        });
    }

(Please let us know if the code above is not the equivalent of the first sample)

  1. What is the replacement for Constants.REMOTE_VIDEO_STATE_DECODING? We are using it in onRemoteVideoStateChanged.
  2. What is the replacement for Constants.USER_PRIORITY_NORMAL, we saw this USER_PRIORITY_NORANL but not sure if this is the equivalent and just a typographical error.
  3. What is the replacement for VideoCanvas.RENDER_MODE_FILL?
  4. What is the replacement for deprecated CreateRendererView or CreateTextureView and what is the diffrences between using SurfaceView and TextureView for RtcEngine?
  5. RtcEngine vs RtcEngineEx

Thanks you for the time and understanding!

ArcherEmiya05 avatar Jun 25 '22 08:06 ArcherEmiya05

@ArcherEmiya05 there are 2 options you can choose when migrating

  1. migrate to 3.7.0, this is the latest version of our stable release build, and the change should be minimal for you to upgrade from 3.4.x
  2. migrate to 4.0.0-beta. this is a beta version, you may refer to this branch https://github.com/AgoraIO/API-Examples/tree/4.0.0-beta to find the corresponding api example. the change could be bigger comparing to option 1.

If there're no blocker features that you want to have which is only available in 4.x, i would recommend you to use 3.7.x first. There will be a stable version of 4.x GA within next 2 months.

plutoless avatar Jun 27 '22 02:06 plutoless

@ArcherEmiya05 there are 2 options you can choose when migrating

1. migrate to 3.7.0, this is the latest version of our stable release build, and the change should be minimal for you to upgrade from 3.4.x

2. migrate to 4.0.0-beta. this is a beta version, you may refer to this branch https://github.com/AgoraIO/API-Examples/tree/4.0.0-beta to find the corresponding api example. the change could be bigger comparing to option 1.

If there're no blocker features that you want to have which is only available in 4.x, i would recommend you to use 3.7.x first. There will be a stable version of 4.x GA within next 2 months.

Thanks, but can we already use 4.x.x beta at this time? Already tried it with video but it seems not working correctly despite implementing their respective constant (guess). Also is it okay if you answer the listed question above?

ArcherEmiya05 avatar Jun 27 '22 02:06 ArcherEmiya05

and to answer your questions,

  1. 4.0.0 is a big release that we have improved a lot of things, while at same time we try to keep the api as same as possible comparing to 3.x. So the change should not be too significant when you are upgrading.
  2. it's equivalent to first time the remote video state change to playing while reason is local unmuted.
  3. i think it's typo. i will report to team.
  4. the VideoCanvas has its renderMode, the equivalent is RENDER_MODE_HIDDEN
  5. From 4.0 we no longer recommend to create surface/texture view via our sdk apis. instead you can create your own view and set it to our canvas. for differences between surface view and texture view take a look at this thread https://stackoverflow.com/questions/16916877/whats-differences-between-surfaceview-and-textureview textureView is usually useful when you want to transform/animate the view.
  6. RtcEngineEx is mainly used when you want to join multiple channels. These are mainly new apis which does not exist in 3.x versions, so we create a new Ex file to accommodate them.

plutoless avatar Jun 27 '22 03:06 plutoless

you may find most of the answers in our doc site. take a look if you are interested. https://docs.agora.io/en/video-call-4.x-beta/landing-page?platform=Android

plutoless avatar Jun 27 '22 03:06 plutoless

@ArcherEmiya05 there are 2 options you can choose when migrating

1. migrate to 3.7.0, this is the latest version of our stable release build, and the change should be minimal for you to upgrade from 3.4.x

2. migrate to 4.0.0-beta. this is a beta version, you may refer to this branch https://github.com/AgoraIO/API-Examples/tree/4.0.0-beta to find the corresponding api example. the change could be bigger comparing to option 1.

If there're no blocker features that you want to have which is only available in 4.x, i would recommend you to use 3.7.x first. There will be a stable version of 4.x GA within next 2 months.

Thanks, but can we already use 4.x.x beta at this time? Already tried it with video but it seems not working correctly despite implementing their respective constant (guess). Also is it okay if you answer the listed question above?

yes. it's ok to use it for sure.

plutoless avatar Jun 27 '22 03:06 plutoless

@ArcherEmiya05 there are 2 options you can choose when migrating

1. migrate to 3.7.0, this is the latest version of our stable release build, and the change should be minimal for you to upgrade from 3.4.x

2. migrate to 4.0.0-beta. this is a beta version, you may refer to this branch https://github.com/AgoraIO/API-Examples/tree/4.0.0-beta to find the corresponding api example. the change could be bigger comparing to option 1.

If there're no blocker features that you want to have which is only available in 4.x, i would recommend you to use 3.7.x first. There will be a stable version of 4.x GA within next 2 months.

Thanks, but can we already use 4.x.x beta at this time? Already tried it with video but it seems not working correctly despite implementing their respective constant (guess). Also is it okay if you answer the listed question above?

yes. it's ok to use it for sure.

Is there a huge changes from 3.x.x to beta 4 when it comes to Video call? We can no longer see the remote video and closing the channel make the app hang and crash. Using io.agora.rtc:agora-full-beta:4.0.0-beta.1

ArcherEmiya05 avatar Jun 27 '22 21:06 ArcherEmiya05

there're changes for sure. is the userJoined callback successfully called? is setRemoteVideo properly called? if you can provide a channel name and timestamp when the issue happened i can also help take a look.

plutoless avatar Jun 28 '22 01:06 plutoless

there're changes for sure. is the userJoined callback successfully called? is setRemoteVideo properly called? if you can provide a channel name and timestamp when the issue happened i can also help take a look.

I created a channel named Sample yesterday. I also file a bug where the sample project for Video call is also not working. The two device can join the channel, it will work for less than 5 seconds then crash. Now on our project we rollback to io.agora.rtc:full-sdk:3.7.0 from beta 4 and the video call is now work just like before even with the changes for deprecated constant and CreateRendererView. This leads us to believe that beta 4 SDK is not in a working stage as of the moment since even the sample project is not working properly.

ArcherEmiya05 avatar Jun 29 '22 01:06 ArcherEmiya05