在 QRcodeScanner React native 中打开手电筒 on/off - 替代解决方案

Turn flashlight on/off In QRcodeScanner React native - Alternative Solution

我已经按照上面的教程操作了,但是还是不行。按下触摸不透明度不会打开闪光灯。

问题和发送的问题一样,但是他的解决方案对我不起作用,不知道为什么。

更新 我找到了一个解决方案,如果其他 post 不适合你,你应该逐步尝试这个。可能它会合并到 react-native-qrcode-scanner 的未来 PR 中,但现在这应该可以解决。

import QRCodeScanner from "react-native-qrcode-scanner";
import { RNCamera } from "react-native-camera"

QRCodeScanner 上的道具:

cameraStyle={{ height: SCREEN_HEIGHT }}
cameraProps{{ flashMode: this.state.isFlashOn ? RNCamera.Constants.FlashMode.torch : RNCamera.Constants.FlashMode.off, captureAudio: false }}
customerMarker={this.renderCustomMarker} />

按钮:

<TouchOpacity activeOpacity={1} onPress={() => {
       this.setState({isFlashOn: !this.state.isFlashOn});
       this.scanner.reactivate();
    }}>

我的解决方案是: https://github.com/moaazsidat/react-native-qrcode-scanner/issues/117

感谢@Albert0405!

这是@Albert0405 对我的问题的修复:

1)node_modules找到react-native-qrcode-scanner 文件夹并打开 index.js

2) 找到 _renderCamera() 然后在 Camera 组件上,改变这个

<Camera
   type={cameraType}
   flashMode={this.props.flashMode} // Just add this line
   style={[styles.camera, this.props.cameraStyle]}
   onBarCodeRead={this._handleBarCodeRead.bind(this)}
>
    {this._renderCameraMarker()}
</Camera>

3) 最后一步是在项目中使用 Flash

import QRCodeScanner from "react-native-qrcode-scanner";
import { RNCamera } from "react-native-camera";

<QRCodeScanner
    flashMode={this.state.isFlashOn ? RNCamera.Constants.FlashMode.torch : RNCamera.Constants.FlashMode.off}
/>

cameraProps 对我不起作用。所以我用上面的代码flashMode替换了它。

RNCamera.Constants.FlashMode.torch - 打开手电筒 RNCamera.Constants.FlashMode.off - 关闭手电筒 flashMode 是在 RNCamera 上设置 Flash 的字段

这一步的作用是启用 flashMode 从 react-native-qrcode-scanner.

设置

参考:https://github.com/react-native-community/react-native-camera/blob/master/docs/RNCamera.md

更新:react-native-qrcode-scanner 版本 1.2.2+ 已实施此更改。我的 PR 已合并并可供所有用户使用,要了解如何使用请阅读 git repo 的自述文件。