首页 > 解决方案 > 在 QRcodeScanner React native 中打开/关闭手电筒 - 替代解决方案

问题描述

在 QRcodeScanner React native 中打开/关闭手电筒

我已按照上面的教程进行操作,但仍然无法正常工作。按下触摸不透明度时,它不会打开闪光灯。

问题与发送问题相同,但他的解决方案对我不起作用,不知道为什么。

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

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();
    }}>

标签: androidreact-nativeandroid-cameraqr-codeflashlight

解决方案


我的解决方案是: 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 的字段

这一步一步做的是启用从 react-native-qrcode-scanner 设置的flashMode 。

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

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


推荐阅读