in AliRTC2.5/Android/RtcSample/app/src/main/java/com/aliyun/rtcdemo/activity/AliRtcChatActivity.java [233:283]
private void updateRemoteDisplay(String uid, AliRtcEngine.AliRtcAudioTrack at, AliRtcEngine.AliRtcVideoTrack vt) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (null == mAliRtcEngine) {
return;
}
AliRtcRemoteUserInfo remoteUserInfo = mAliRtcEngine.getUserInfo(uid);
// 如果没有,说明已经退出了或者不存在。则不需要添加,并且删除
if (remoteUserInfo == null) {
// remote user exit room
Log.e(TAG, "updateRemoteDisplay remoteUserInfo = null, uid = " + uid);
return;
}
//change
AliRtcEngine.AliRtcVideoCanvas cameraCanvas = remoteUserInfo.getCameraCanvas();
AliRtcEngine.AliRtcVideoCanvas screenCanvas = remoteUserInfo.getScreenCanvas();
//视频情况
if (vt == AliRtcVideoTrackNo) {
//没有视频流
cameraCanvas = null;
screenCanvas = null;
} else if (vt == AliRtcVideoTrackCamera) {
//相机流
screenCanvas = null;
cameraCanvas = createCanvasIfNull(cameraCanvas);
//SDK内部提供进行播放的view
mAliRtcEngine.setRemoteViewConfig(cameraCanvas, uid, AliRtcVideoTrackCamera);
} else if (vt == AliRtcVideoTrackScreen) {
//屏幕流
cameraCanvas = null;
screenCanvas = createCanvasIfNull(screenCanvas);
//SDK内部提供进行播放的view
mAliRtcEngine.setRemoteViewConfig(screenCanvas, uid, AliRtcVideoTrackScreen);
} else if (vt == AliRtcVideoTrackBoth) {
//多流
cameraCanvas = createCanvasIfNull(cameraCanvas);
//SDK内部提供进行播放的view
mAliRtcEngine.setRemoteViewConfig(cameraCanvas, uid, AliRtcVideoTrackCamera);
screenCanvas = createCanvasIfNull(screenCanvas);
//SDK内部提供进行播放的view
mAliRtcEngine.setRemoteViewConfig(screenCanvas, uid, AliRtcVideoTrackScreen);
} else {
return;
}
ChartUserBean chartUserBean = convertRemoteUserInfo(remoteUserInfo, cameraCanvas, screenCanvas);
mUserListAdapter.updateData(chartUserBean, true);
}
});
}