如何修改我的代码以使用前置摄像头扫描二维码

Posted

技术标签:

【中文标题】如何修改我的代码以使用前置摄像头扫描二维码【英文标题】:How I can modify my code to can use front camera for scanning QR code 【发布时间】:2020-03-05 00:22:44 【问题描述】:

我正在使用 android vision 在我的应用中扫描二维码,一切正常,但现在我想让我的应用可以通过打开前置摄像头而不是后置摄像头来扫描二维码。

扫屏代码:

public class BarCodeScanActivity extends AppCompatActivity implements BarcodeReader.BarcodeReaderListener 

private String TAG = OperatorBarCodeScanActivity.class.getSimpleName();
private Context mContext;
private View currentView;
private Activity currentactivity;
private BarcodeReader barcodeReader;


@Override
protected void onCreate(@Nullable Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);

    setContentView(R.layout.barcode_reader_activity);

    mContext = getApplicationContext();

    barcodeReader = (BarcodeReader) getSupportFragmentManager().findFragmentById(R.id.barcode_scanner);



@Override
public void onScanned(Barcode barcode) 
    // playing barcode reader beep sound
    barcodeReader.playBeep();
    final String scannedCode = barcode.displayValue;



@Override
public void onScannedMultiple(List<Barcode> barcodes) 



@Override
public void onBitmapScanned(SparseArray<Barcode> sparseArray) 



@Override
public void onScanError(String errorMessage) 
    Toast.makeText(getApplicationContext(), mContext.getString(R.string.barcode_error)+" " + errorMessage, Toast.LENGTH_SHORT).show();


@Override
public void onCameraPermissionDenied() 
    finish();

此屏幕的布局如下所示:

 <LinearLayout
    android:visibility="visible"
    android:id="@+id/scanningContainer"
    android:layout_
    android:layout_
    android:layout_gravity="center_vertical|center_horizontal"
    android:gravity="center_vertical|center_horizontal"
    android:orientation="vertical">

    <fragment
        android:id="@+id/barcode_scanner"
        android:name="info.androidhive.barcode.BarcodeReader"
        android:layout_
        android:layout_
        app:auto_focus="true"
        app:use_flash="false" />

    <info.androidhive.barcode.ScannerOverlay
        android:layout_
        android:layout_
        app:line_color="@color/colorPrimary"
        app:line_speed="6"
        app:line_
        app:square_
        app:square_ />
</LinearLayout>

如何更新我的代码以使用 Camera Surface 然后调用前置摄像头?

谢谢。

【问题讨论】:

请发布您的BarcodeReader 片段。 @JakirHossain 我更新了我的帖子,请看一下 这高度依赖于您使用的条形码阅读器库。通过谷歌搜索“ change camera”来帮助自己,您应该会找到一些有用的答案。 【参考方案1】:

我为你做了谷歌搜索 - 这是你需要使用的方法:

https://github.com/ravi8x/Barcode-Reader/blob/master/barcode-reader/src/main/java/info/androidhive/barcode/camera/CameraSource.java#L237

不幸的是,BarcodeReader 片段没有公开此 API,因此您需要分叉它的实现并对其进行调整:

https://github.com/ravi8x/Barcode-Reader/blob/master/barcode-reader/src/main/java/info/androidhive/barcode/BarcodeReader.java#L251

考虑创建一个公共分叉,使此设置可配置并向原作者发布拉取请求,以便其他人也可以从您的扩展中受益。

【讨论】:

我已经用谷歌搜索了使用过的库,我已经看到了你发布的链接,我知道我应该使用 Camera Surface 的 CAMERA_FACING_FRONT 但我坚持如何做到这一点,但要尽可能地保持我的代码工作,我再试一次

以上是关于如何修改我的代码以使用前置摄像头扫描二维码的主要内容,如果未能解决你的问题,请参考以下文章

如何使用后置摄像头代替前置摄像头?

如何用js实现调用手机摄像头扫描条形码然后带出条形码的值到文本框

如何检测android中是否有前置摄像头?

如何在android中使用前置摄像头[重复]

如何使用 swift avfoundation 设置前置摄像头变焦

html5移动端页面上调用手机摄像头扫描二维码并获取二维码信息代码?