public class SingleVideoView extends ConstraintLayout {
private PaasPlusRederView bigUserWindow;
private ImageView ivAvatar;
private SmallUserWindow smallUserWindow;
private User user;
private String remoteUserId;
public SingleVideoView(@NonNull @NotNull Context context) {
this(context, null);
}
public SingleVideoView(@NonNull @NotNull Context context, @Nullable @org.jetbrains.annotations.Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public SingleVideoView(@NonNull @NotNull Context context, @Nullable @org.jetbrains.annotations.Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context);
}
private void initView(Context context) {
View view = LayoutInflater.from(context).inflate(R.layout.layout_single_video, this);
bigUserWindow = view.findViewById(R.id.ppv_big);
ivAvatar = view.findViewById(R.id.iv_avatar);
smallUserWindow = view.findViewById(R.id.ppv_small);
smallUserWindow.getRenderView().setZOrderMediaOverlay(true);
}
public void switchRemoteCamera(boolean isCameraOpen) {
if (isCameraOpen) {
if (MeetingManager.getInstance().getUser(remoteUserId).isVideoStream()) {
bigUserWindow.setRenderViewVisibility(true);
bigUserWindow.setVisibility(View.VISIBLE);
ivAvatar.setVisibility(View.GONE);
} else {
cameraDisable();
}
} else {
cameraDisable();
}
}
private void cameraDisable() {
bigUserWindow.setRenderViewVisibility(false);
bigUserWindow.setVisibility(View.GONE);
ivAvatar.setVisibility(View.VISIBLE);
}
public void setVisible(boolean isVisible) {
if (isVisible) {
if (isVisible()) {
return;
}
setVisibility(View.VISIBLE);
getSmallUserWindow().switchCamera(MeetingManager.getInstance().getUser(user.getUserId()).isOpenCamera());
setRemoteStream();
setRemoteUserInfo();
} else {
if (!isVisible()) {
return;
}
setVisibility(View.GONE);
if (!TextUtils.isEmpty(remoteUserId)) {
if (MeetingManager.getInstance().getUser(remoteUserId).isAvailableStream()) {
MeetingManager.getInstance().stopPlay(remoteUserId, bigUserWindow);
}
}
}
}
public boolean isVisible() {
return getVisibility() == View.VISIBLE;
}
public void setRemoteStream() {
for (Map.Entry<String, MeetingUserInfo> userInfoEntry : MeetingManager.getInstance().getAllUser().entrySet()) {
if (userInfoEntry.getKey().equals(user.getUserId())) {
continue;
}
if (userInfoEntry.getValue().isAvailableStream()) {
remoteUserId = userInfoEntry.getKey();
MeetingManager.getInstance().startPlay(remoteUserId, PaasPlusSDKStreamType.VIDEO, bigUserWindow);
break;
}
}
}
public void setRemoteUserInfo() {
for (Map.Entry<String, MeetingUserInfo> userInfoEntry : MeetingManager.getInstance().getAllUser().entrySet()) {
if (userInfoEntry.getKey().equals(user.getUserId())) {
continue;
}
GlideShowUtil.showCircleImage(getContext(), ivAvatar, userInfoEntry.getValue().getAvatarUrl());
break;
}
}
public SmallUserWindow getSmallUserWindow() {
return smallUserWindow;
}
public void setUser(User user) {
this.user = user;
}
}