1. 程式人生 > >react-native-barcodescanner掃碼第二次進去黑屏

react-native-barcodescanner掃碼第二次進去黑屏

react-native(react-native-barcodescanner)掃碼第一次進去的時候正常但是之後出現黑屏,在網上的說是新場景要pop掉(可能是我的版本和網上的版本不一樣導致的),但是我pop掉了第二次進去還是黑屏,糾結了很久,猜測是呼叫了攝像頭沒有釋放掉導致的,無奈只能動barcodescanner的原始碼了,看了該專案中的檔案目錄如下:



期間修改過react-native-barcodescanner 專案中的這三個檔案很多其他的位置的程式碼(單例模式、去掉ReactBarcodeScannerView.java中setCameraType方法中的第一個if方法等),但是都不行,就不多說了,直接說在我的環境下修改的正確的方法:

修改ReactBarcodeScannerView.java中setCameraType方法,原始程式碼:

 public void setCameraType(String type) {
        if (mPrevCameraType.equals(type)) {
           
            return;
        }

 stopCamera();

        Camera.CameraInfo cameraInfo = new Camera.CameraInfo();


        mCameraId = -1;


        for (int cameraId = 0; cameraId < Camera.getNumberOfCameras(); cameraId++) {
            Camera.getCameraInfo(cameraId, cameraInfo);


            if (type.equals("back") && cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
                mCameraId = cameraId;
                break;
            }


            if (type.equals("front") && cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
                mCameraId = cameraId;
                break;
            }
        }


        startCamera(mCameraId);


        if (type.equals("back")) {
          setFlash(torchModeIsEnabled());
        }


        mPrevCameraType = type;
    }


修改之後的程式碼:

public void setCameraType(String type) {
        if (mPrevCameraType.equals(type)) {
            stopCamera();
            return;
        }



        Camera.CameraInfo cameraInfo = new Camera.CameraInfo();


        mCameraId = -1;


        for (int cameraId = 0; cameraId < Camera.getNumberOfCameras(); cameraId++) {
            Camera.getCameraInfo(cameraId, cameraInfo);


            if (type.equals("back") && cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
                mCameraId = cameraId;
                break;
            }


            if (type.equals("front") && cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
                mCameraId = cameraId;
                break;
            }
        }


        startCamera(mCameraId);


        if (type.equals("back")) {
          setFlash(torchModeIsEnabled());
        }


        mPrevCameraType = type;
    }


以上紅字的為修改的程式碼位置

相關推薦

react-native-barcodescanner第二進去

react-native(react-native-barcodescanner)掃碼第一次進去的時候正常但是之後出現黑屏,在網上的說是新場景要pop掉(可能是我的版本和網上的版本不一樣導致的),但是我pop掉了第二次進去還是黑屏,糾結了很久,猜測是呼叫了攝像頭沒有釋放掉導

React Native實現再按一退出應用程式功能

解決點選兩次手機back鍵退出程式 程式碼及註釋如下: //雙擊返回鍵退出程式

React Native 二維掃描元件(簡單,易用!)

1前言 最近用 React Native 仿寫了一下 ofo 應用,涉及到了二維碼掃描的功能,在 github 上搜了一下,也沒發現一個趁手的二維碼掃描元件,所以乾脆自己動手寫了一個。 其中使用攝像頭實時掃描二維碼進行解析的功能,已經通過 react-native-camera 這個庫實現了,所以我也只是寫

最完善,快速的 react-native 二維掃描

react-native 二維碼掃描 先看效果 使用的開源庫 安裝 npm install react-native-smart-barcode --save npm install react-native-smar

自定義 React Native 二維掃描元件(簡單,易用!)

本文為 Marno 原創,轉載必須保留出處! 公眾號 aMarno,關注後回覆 RN 加入交流群 1.前言 最近用 React Native 仿寫了一下 ofo 應用,涉及到了二維碼掃描的功能,在 github 上搜了一

React Native 二維掃描 react-native-camera的使用

npm install [email protected]://github.com/lwansbrough/react-native-camera.git --savereact-native link react-native-camera import

React Native 真機除錯:RectNative啟動紅問題解決

https://reactnative.cn/docs/running-on-device/ 1. 手機必須先連線 連線時選擇僅充電 ==> 百度自己機型如何開啟開發者模式 ==> 開啟 usb 除錯 2. 下載 adb cd 到 adb 目錄下執行命令 ad

React Native Reload(雙擊R) 紅 Could not connect to development server

如圖所示,Reload 或者雙擊R後,出現大紅屏。 總結一下,問題主要出現在下面三個方向。 檢查一下,package是否正常執行。 看一下是否忘記啟動package,或者提供了錯誤的監聽埠。 看一下埠號是否和你的run-android命令的埠號一樣。 如果是這裡的問題,

Android問題之webView第一開啟載入資料失敗,第二進入白問題

這個問題困擾了我好久 WebSettings settings = webview.getSettings(); webview.setVerticalScrollbarOverla

react native 新增啟動頁並解決啟動白問題

我們之所以設定啟動頁,很大一部分原因是在啟動頁顯示的背後可以利用寶貴的時間來初始化我們的應用,啟動頁消失後,初始化的工作就應該做完。因此,使用開源RN元件是比較靠譜的,閒言少敘,直奔主題! 安裝 npm install --save rn-splash-screen連線 react-native l

react native中的聊天氣泡以及timer封裝成的發送驗證倒計時

日常 per pad direct 總結 mage str parent erb 今天看來情書寫的文章,研究了一下大佬寫的文章,自己做一點總結。 其實,今天我想把我近期遇到的坑都總結一下:1.goBack的跨頁面跳轉,又兩種方法,一可以像兔哥那樣修改navigatio

五周第二課 7.6 yum更換國內源 7.7 yum下載rpm包 7.8/7.9 源包安裝

學習 打卡7.6 yum更換國內源7.7 yum下載rpm包7.8/7.9 源碼包安裝 1. yum更換國內源 一般yum的源都是國外的網站,安裝比較慢 首先我們要更換國內的源 第一步 把原來備份的文件拷貝回來,然後刪除源碼包 cp . ./yum.repos.d.bak/* . 拷貝yum.re

React Native自定義北京-賽車源出售彈出警告框

left col ack oid ios 無法 ani load rtc 北京-賽車源碼出售Q1446595067開發中,為了和ios效果保持一致,有些控件需要自己定義,如在警告彈框中,React Native本來已經提供了Alert控件,但是其效果在Android上是非常

第二作業

分享圖片 sta 進行 imp mage 完成 方法 技術 alt 211606390 張晉誌 211606329 王浩 一、預估與實際 PSP2.1 Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘) Pla

react 學習筆記第二

eve pre kit 插入 color oca html -s doctype react 第二次課 jsx--變量jsx--functioncomponent ------------------------------------------ component

react-native-pg-style使用方法(以最簡單的方式編寫樣式代)

樣式 技術 變量 麻煩 oba 寬高 enter 垂直居中 裏的 react-native-pg-style 以最簡單的方式編寫樣式代碼,拋棄react-native標準的樣式創建方式. 看大家寫的源碼中都是按照react-native標準的樣式創建方式來寫樣式代碼的,樣式

React Native獲取Android手機串號(IMEI)

因為專案需要獲取手機imei,所以百度查了下,方法大概如下:  1.在專案根目錄下:      npm install --save react-native-imei 2.然後修改android app src androidMaini

react-native-camera 掃描二維

Github:https://github.com/react-native-community/react-native-camera android: 1、npm install react-native-camera --save      

react-native 生成二維並截圖儲存的功能實現

近期專案開發需要,需要更加不同使用者生成隨機的二維碼,並實現儲存該二維碼(包含二維碼周邊的背景圖,類似支付寶的紅包二維碼圖片)的功能。在網上查詢相關元件,開始使用的是react-native-qrcode元件,截圖功能使用的是react-native-view-shot元件,儲存圖片則是使用的rea

掌握 ReactReact Native 兩個框架

此係列文章將整合我的 React 視訊教程與 React Native 書籍中的精華部分,給大家介紹 React 與 React Native 結合學習的方法。 1. 軟體開發語言與框架的學習本質 我們在開始系列文章的技術點內容前,花一點時間探討一下軟體開發語言以及框架的學習本質,相對於整個技術點的講解,花這