如何有效地重新启动片段中的相机-条码扫描器

stu*_*d91 5 android zxing android-fragments

我的应用程序中有两个片段,我正在尝试使用ZXingScanner其中一个库来实现条形码扫描仪。实现工作正常。我的问题基本上与不良设计有关。

当用户扫描有效代码时,会出现一个对话框,说明该代码有效。但是,当我关闭对话框时(按OK),条形码扫描仪将停止。为了解决这个问题,我有以下几点:

buttonConfirm.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    popupView.dismiss();
                    restartCamera();
                }
            });

public void restartCamera(){
    mScannerView.stopCamera(); //mScannerView = new ZXingScannerView(getActivity());
    mScannerView.startCamera();
}
Run Code Online (Sandbox Code Playgroud)

这种方法的问题在于,当我切换片段时,相机仍在运行。当我切换到第一个片段然后重新打开相机并解决此问题时,如何停止相机。(我ViewPager用来实现我的片段)

stu*_*d91 2

好吧,我终于找到了解决方案。我setMenuVisibility在相机片段中重写了我的方法。如果片段可见,则调用restartCamera()方法,否则停止相机。

@Override
public void setMenuVisibility(final boolean visible){
    if (visible){
        if (mScannerView != null) {
            Log.v("FragmentQR", "Visible");
            restartCamera();
        }
    }
    else {
        if (mScannerView != null){
            mScannerView.stopCamera();
            Log.v("FragmentQR","InVisible");
        }
    }
Run Code Online (Sandbox Code Playgroud)