对拍照时本机视觉相机冻结做出反应

Meh*_*ill 2 react-native react-native-camera

我只需要拍摄并存储一张照片。我正在使用react-native-vision-camera,但是当我拍照时,使用.takePhoto()方法。它冻结了。

我还使用“质量优先级:“速度”。

我正在 Android 模拟器上测试它。

const CameraPage = () => {
  const devices = useCameraDevices()
  const device = devices.back
  const isFocused = useIsFocused()
  const camera = useRef(null)

  const onPressButton = async () => {
    console.log(camera.current)
    console.log(123)
    const photo = await camera.current.takePhoto({
      flash: 'off',
      qualityPrioritization: "speed"
    })

    console.log(photo)

  }
  
  if (device == null) return <View><Text>Loading</Text></View>
  return (
        <View style={{flex: 1}}>
          <Camera
          ref={camera}
          style={StyleSheet.absoluteFill}
          device={device}
          isActive={isFocused}
          photo={true}
          />
           <View style={styles.buttonContainer}>
            <TouchableOpacity 
              style={styles.camButton}
              onPress={onPressButton}
              >
                <Text>Click me</Text>
              </TouchableOpacity>
          </View>
        </View>

  ) 
Run Code Online (Sandbox Code Playgroud)

小智 5

我遇到了同样的问题,这就是我解决它的方法。

结论

如果您只需要在 Android 模拟器上进行演示takeSnapshot(...),则可以使用。

解释

让我们回到react-native-vision-cameratakePhoto()的指南。

就在它的正下方takeSnapshot(),有一张纸条,上面写着:

如果您关心速度,您可以使用相机takeSnapshot(...)功能(仅限 Android),它只是拍摄相机视图的快照,而不是通过相机镜头实际拍照

我猜react-native-vision-camera会冻结的问题可能是因为android模拟器没有真正的相机镜头。

所以我尝试了takeSnapshot(...),效果非常好。

仅此而已,希望能有所帮助。