首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在react-native-qrcode-scanner中关闭摄像头/扫描仪?

如何在react-native-qrcode-scanner中关闭摄像头/扫描仪?
EN

Stack Overflow用户
提问于 2020-02-20 18:42:32
回答 3查看 3.4K关注 0票数 4

当前代码:

代码语言:javascript
复制
import QRCodeScanner from 'react-native-qrcode-scanner';
function ScanScreen({ navigation }) {
  return (
    
       navigation.navigate('Third', {target:data.data})}
      />
    
  );
}

它可以工作,但这是我想要做的:用户可以在屏幕之间导航,其中一个是二维码扫描器。在扫描时,我需要解除扫描器的抖动,这样它就不会一直生成onRead事件。用户可以a)在不读取QR码的情况下在扫描屏幕中开始扫描并手动导航到另一屏幕。b)读取QR并自动移动到另一个屏幕进行处理,然后返回再次扫描。出于这个原因,我需要在一段合理的时间后重新启用扫描仪。我不能只是将reactivate设置为false,因为在我重新启动应用程序之前,QR扫描仪将处于非活动状态。问题是,当用户停留在另一个屏幕上时,QR扫描仪在超时后重新激活,并在不需要时尝试扫描。理想情况下,我想要做的是在用户不在扫描屏幕时停用QR扫描仪,并在用户进入扫描屏幕时使用上述参数重新激活它。有什么方法可以做到这一点吗?谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-03-20 15:12:38

我几乎也有同样的问题。扫描仪在显示另一个视图时不会停止扫描(使用reactivate={true})。我正在使用react导航,所以我想出了以下解决方案。

您可以使用以下命令来了解您的视图发生了什么变化focusblur..。

代码语言:javascript
复制
this.props.navigation.addListener('focus', () => {
    this.setState({viewFocused: true});
});

this.props.navigation.addListener('blur', () => {
    this.setState({viewFocused: false});
});

注意:将这段代码放在componentDidMount或者使用React.useEffect..。

基于状态viewFocused您可以呈现二维码扫描器。

代码语言:javascript
复制
this.state.viewFocused && (
     );

这有助于我解决我的问题。在显示其他视图时不进行扫描,但在再次显示该视图时进行扫描。积分到github.com上的pkyeck

票数 3
EN

Stack Overflow用户

发布于 2021-02-18 17:31:24

正如文档中所解释的,您可以程序化地执行此操作

代码语言:javascript
复制
{ this.scanner = node }}  <-- add this
    />

在您的方法中(例如,在Alert或onPress按钮中),按如下方式重新激活扫描仪:

代码语言:javascript
复制
onPress: () => {
      this.scanner.reactivate()
    },
票数 0
EN

Stack Overflow用户

发布于 2021-02-25 04:49:53

与上面在功能组件或使用钩子中提到的事情相同

import React, {useEffect, useState} from 'react';

代码语言:javascript
复制
const ScannerCamera = ({navigation, route}) => {
  let uuId = null;
  const [viewFocused, setViewFocused] = useState(false);

  useEffect(() => {
    const onFocus = navigation.addListener('focus', () => {
      setViewFocused(true);
    });

    const onBlur = navigation.addListener('blur', () => {
      setViewFocused(false);
    });

    return {onFocus, onBlur};
  }, [navigation]);

  return (
    viewFocused && (
      
    )
  );
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60318078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档