我正在尝试为我的应用程序实现一个eKYC,它包括3个摄像头屏幕(2个屏幕带背面摄像头,1个屏幕带前端摄像头)
在一些Android设备上(三星Note 8,小米Redmi Pro 8,Vsmart Joy 3,...),第三个屏幕的摄像头(前置摄像头)无法工作(黑屏)。
我试图从Android logcat中读取错误,但收到以下错误:
2021-01-11 12:29:00.704 3973-13086/com.******.vn W/CameraBase: An error occurred while connecting to camera 1: Status(-8): '8: connectHelper:1648: Too many cameras already open, cannot open camera "1"'我尝试过的东西:当当前屏幕被聚焦时,使用NavigationEvents和withNavigationFocus来渲染相机
const [isFocus, setFocus] = useState<boolean>(false)<NavigationEvents onWillFocus={onFocus} onWillBlur={onBlur}></NavigationEvents>{isFocus && props.isFocused && (
<RNCamera
ref={refCamera}
style={styles.preview}
type={RNCamera.Constants.Type.front}
captureAudio={false}
onCameraReady={() => console.log('oncameraready')}
onFacesDetected={onFaceDetected}>
<View style={styles.progressBarContainer}>
<Progress.Bar
color={Colors.asEastOcean}
progress={progress}
width={200}
style={styles.progressBar}
borderColor={Colors.white}
unfilledColor={Colors.white}
/>
</View>
</RNCamera>
)}但是第三个屏幕上的摄像头(前侧摄像头)仍然不工作。另外两个运行得很好。有没有办法解决这个问题,非常感谢提前!
注:如果我更改顺序并先渲染第三个屏幕,前端摄像头工作正常。
发布于 2021-08-19 14:46:11
我找到了一种解决问题的方法:在以下react-native-camera文件中:android/src/main/java/com/google/android/cameraview/Camera1.java
我对pausePreview函数进行了如下修改:
@Override
public void pausePreview() {
synchronized(this){
mIsPreviewActive = false;
mShowingPreview = false;
if(mCamera != null){
mCamera.stopPreview();
}
releaseCamera();
}
}如果我有两个使用RNCamrera组件的连续屏幕,我使用的是navigation.replace()而不是navigation.navigate()。
https://stackoverflow.com/questions/65662581
复制相似问题