如何修改代码以使用前置摄像头扫描QR码

时间:2019-11-08 11:06:15

标签: java android qr-code vision

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

扫描屏幕代码:

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_width="match_parent"
    android:layout_height="match_parent"
    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_width="match_parent"
        android:layout_height="match_parent"
        app:auto_focus="true"
        app:use_flash="false" />

    <info.androidhive.barcode.ScannerOverlay
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:line_color="@color/colorPrimary"
        app:line_speed="6"
        app:line_width="4"
        app:square_height="200"
        app:square_width="200" />
</LinearLayout>

如何更新代码以使用Camera Surface,然后调用正面摄像头?

谢谢。

1 个答案:

答案 0 :(得分:0)

我为您执行了谷歌搜索-这是您需要使用的方法:

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

考虑进行公共派生,将其设置为可配置并将发布请求发布给原始作者,这样其他人也可以从您的扩展中受益。