Migrate issue from 3.x.x to 4.0.0 beta
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:
- How huge is the change we must perform? So far we only refactor the packages to
io.agora.rtc2then change some constants. We also updated theonRemoteAudioStateChangedcallback 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)
- What is the replacement for
Constants.REMOTE_VIDEO_STATE_DECODING? We are using it inonRemoteVideoStateChanged. - What is the replacement for
Constants.USER_PRIORITY_NORMAL, we saw thisUSER_PRIORITY_NORANLbut not sure if this is the equivalent and just a typographical error. - What is the replacement for
VideoCanvas.RENDER_MODE_FILL? - What is the replacement for deprecated
CreateRendererVieworCreateTextureViewand what is the diffrences between using SurfaceView and TextureView forRtcEngine? -
RtcEnginevsRtcEngineEx
Thanks you for the time and understanding!
@ArcherEmiya05 there are 2 options you can choose when migrating
- 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
- 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.
@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?
and to answer your questions,
- 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.
- it's equivalent to first time the remote video state change to playing while reason is local unmuted.
- i think it's typo. i will report to team.
- the VideoCanvas has its renderMode, the equivalent is RENDER_MODE_HIDDEN
- 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.
- 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.
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
@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.
@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
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.
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.