修复开播图片后摄像头卡住问题

This commit is contained in:
zlzw 2024-09-13 14:26:32 +08:00
parent a454a97c58
commit d63cba7db1
2 changed files with 35 additions and 10 deletions

View File

@ -5,13 +5,16 @@ import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.hardware.camera2.CameraManager;
import android.net.Uri; import android.net.Uri;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.SurfaceView; import android.view.SurfaceView;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import androidx.annotation.NonNull;
import androidx.core.content.res.ResourcesCompat; import androidx.core.content.res.ResourcesCompat;
import com.blankj.utilcode.util.LogUtils;
import com.yunbao.common.CommonAppConfig; import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext; import com.yunbao.common.CommonAppContext;
import com.yunbao.common.bean.SwTokenModel; import com.yunbao.common.bean.SwTokenModel;
@ -69,6 +72,7 @@ public class SWManager extends BaseCacheManager {
private ImageTrackOptions imageTrackOptions = null; private ImageTrackOptions imageTrackOptions = null;
private onDrPkJoinSuccessListener onDrPkJoinSuccessListener; private onDrPkJoinSuccessListener onDrPkJoinSuccessListener;
String openCameraId = "1";
public void setOnDrPkJoinSuccessListener(SWManager.onDrPkJoinSuccessListener onDrPkJoinSuccessListener) { public void setOnDrPkJoinSuccessListener(SWManager.onDrPkJoinSuccessListener onDrPkJoinSuccessListener) {
this.onDrPkJoinSuccessListener = onDrPkJoinSuccessListener; this.onDrPkJoinSuccessListener = onDrPkJoinSuccessListener;
@ -253,7 +257,20 @@ public class SWManager extends BaseCacheManager {
*/ */
public void switchCamera() { public void switchCamera() {
if (mRtcEngine != null) { if (mRtcEngine != null) {
mRtcEngine.switchCamera(); if (openCameraId.equals("0")) {
mRtcEngine.switchCamera("1");
openCameraId = "1";
} else {
mRtcEngine.switchCamera("0");
openCameraId = "0";
}
}
}
public void resetCamera() {
LogUtils.e("重置摄像头", openCameraId);
if (mRtcEngine != null && !TextUtils.isEmpty(openCameraId)) {
mRtcEngine.switchCamera(openCameraId);
} }
} }
@ -525,6 +542,9 @@ public class SWManager extends BaseCacheManager {
}); });
} }
public void release() {
}
public interface onRtcEngineListener { public interface onRtcEngineListener {
void onOpenSuccess(String channel, int uid); void onOpenSuccess(String channel, int uid);

View File

@ -370,7 +370,7 @@ public class LivePushSwViewHolder extends AbsRyLivePushViewHolder implements ITX
} }
switch (temp) { switch (temp) {
case 2: case 2:
swManager.joinChannelDrEx(dr2_preview, CommonAppConfig.getInstance().getUid(), CommonAppConfig.SWToken, uid, SWAuManager.getChannelName(uid),temp); swManager.joinChannelDrEx(dr2_preview, CommonAppConfig.getInstance().getUid(), CommonAppConfig.SWToken, uid, SWAuManager.getChannelName(uid), temp);
swManager.updateMyChannelView(dr1_preview); swManager.updateMyChannelView(dr1_preview);
mBigContainer.removeAllViews(); mBigContainer.removeAllViews();
@ -379,7 +379,7 @@ public class LivePushSwViewHolder extends AbsRyLivePushViewHolder implements ITX
break; break;
case 3: case 3:
drpkUid3 = uid; drpkUid3 = uid;
swManager.joinChannelDrEx(dr4_preview, CommonAppConfig.getInstance().getUid(), CommonAppConfig.SWToken, uid, SWAuManager.getChannelName(uid),temp); swManager.joinChannelDrEx(dr4_preview, CommonAppConfig.getInstance().getUid(), CommonAppConfig.SWToken, uid, SWAuManager.getChannelName(uid), temp);
dr3_preview.setVisibility(View.GONE); dr3_preview.setVisibility(View.GONE);
dr4_preview.setVisibility(View.VISIBLE); dr4_preview.setVisibility(View.VISIBLE);
break; break;
@ -387,9 +387,9 @@ public class LivePushSwViewHolder extends AbsRyLivePushViewHolder implements ITX
dr3_preview.setVisibility(View.VISIBLE); dr3_preview.setVisibility(View.VISIBLE);
//先退出这个主播的直播间在进入该直播间视图问题暂时這樣處理 //先退出这个主播的直播间在进入该直播间视图问题暂时這樣處理
swManager.exitChannelToUid(Integer.parseInt(CommonAppConfig.getInstance().getUid()), drpkUid3); swManager.exitChannelToUid(Integer.parseInt(CommonAppConfig.getInstance().getUid()), drpkUid3);
swManager.joinChannelDrEx(dr3_preview, CommonAppConfig.getInstance().getUid(), CommonAppConfig.SWToken, drpkUid3, SWAuManager.getChannelName(drpkUid3),temp); swManager.joinChannelDrEx(dr3_preview, CommonAppConfig.getInstance().getUid(), CommonAppConfig.SWToken, drpkUid3, SWAuManager.getChannelName(drpkUid3), temp);
swManager.joinChannelDrEx(dr4_preview, CommonAppConfig.getInstance().getUid(), CommonAppConfig.SWToken, uid, SWAuManager.getChannelName(uid),temp); swManager.joinChannelDrEx(dr4_preview, CommonAppConfig.getInstance().getUid(), CommonAppConfig.SWToken, uid, SWAuManager.getChannelName(uid), temp);
break; break;
} }
dr_pk_view.setVisibility(View.VISIBLE); dr_pk_view.setVisibility(View.VISIBLE);
@ -399,7 +399,7 @@ public class LivePushSwViewHolder extends AbsRyLivePushViewHolder implements ITX
} }
public void anchorClose() { public void anchorClose() {
swManager.exitChannelToUid(Integer.parseInt(CommonAppConfig.getInstance().getUid()),pkUid1); swManager.exitChannelToUid(Integer.parseInt(CommonAppConfig.getInstance().getUid()), pkUid1);
swManager.updateMyChannelView((FrameLayout) mBigContainer); //用户主动断开连麦再退出画面 swManager.updateMyChannelView((FrameLayout) mBigContainer); //用户主动断开连麦再退出画面
mPkContainer.setVisibility(View.GONE); mPkContainer.setVisibility(View.GONE);
pkUid1 = null; pkUid1 = null;
@ -504,8 +504,9 @@ public class LivePushSwViewHolder extends AbsRyLivePushViewHolder implements ITX
public void onResume() { public void onResume() {
mPaused = false; mPaused = false;
Log.i("摄像头", "onResume: " + isNeedOpenCamera); Log.i("摄像头", "onResume: " + isNeedOpenCamera);
swManager.resetCamera();
if (isNeedOpenCamera) { if (isNeedOpenCamera) {
RCRTCEngine.getInstance().getDefaultVideoStream().startCamera(new IRCRTCResultDataCallback<Boolean>() { /*RCRTCEngine.getInstance().getDefaultVideoStream().startCamera(new IRCRTCResultDataCallback<Boolean>() {
@Override @Override
public void onSuccess(Boolean data) { public void onSuccess(Boolean data) {
//设置摄像头最大缩放比例 //设置摄像头最大缩放比例
@ -519,7 +520,7 @@ public class LivePushSwViewHolder extends AbsRyLivePushViewHolder implements ITX
public void onFailed(RTCErrorCode errorCode) { public void onFailed(RTCErrorCode errorCode) {
Log.i("摄像头", "onFailed: 打开摄像头失败 " + errorCode); Log.i("摄像头", "onFailed: 打开摄像头失败 " + errorCode);
} }
}); });*/
} }
} }
@ -550,6 +551,7 @@ public class LivePushSwViewHolder extends AbsRyLivePushViewHolder implements ITX
super.release(); super.release();
Bus.getOff(this); Bus.getOff(this);
onDestroy(); onDestroy();
SWManager.get().release();
LiveHttpUtil.cancel(LiveHttpConsts.LINK_MIC_TX_MIX_STREAM); LiveHttpUtil.cancel(LiveHttpConsts.LINK_MIC_TX_MIX_STREAM);
rtcRoom = null; rtcRoom = null;
} }
@ -667,17 +669,20 @@ public class LivePushSwViewHolder extends AbsRyLivePushViewHolder implements ITX
} }
} }
public void closeLive(){ public void closeLive() {
if (swManager != null) { if (swManager != null) {
swManager.exitChannelAll(); swManager.exitChannelAll();
} }
} }
public interface onDrPkJoinSuccessListener{ public interface onDrPkJoinSuccessListener {
void joinSuccess1(); void joinSuccess1();
void joinSuccess2(); void joinSuccess2();
void joinSuccess3(); void joinSuccess3();
void joinSuccess4(); void joinSuccess4();
} }