gpt4 book ai didi

android - 在 fragment 中,如何停止ZXing Scanner的摄像头?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:45:25 25 4
gpt4 key购买 nike

按照本教程(http://www.truiton.com/2015/06/android-tabs-example-fragments-viewpager/),我使用 fragment 和 ViewPager 制作了 Android 选项卡。到目前为止,我向其中一个 fragment 添加了一个 QR 码扫描器(使用基于 ZXing 的条码扫描器库)并且工作正常。

问题是,当我转到其他选项卡( fragment )时,相机本身会在内部继续工作(内部相机不会停止)。因此,即使我在不​​同 fragment 的屏幕上看不到摄像头,当我将手机(摄像头部分)靠近二维码时,它也会读取并开始新的 Activity 。

那么当我转到其他 fragment 时如何停止相机?

这是我的二维码扫描仪的 fragment 。

public class TabFragment1 extends Fragment implements ZXingScannerView.ResultHandler
{
private ZXingScannerView mScannerView;
private LinearLayout qrCameraLayout;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.tab_fragment_1, container, false);

qrCameraLayout = (LinearLayout) v.findViewById(R.id.ll_qrcamera);
mScannerView = new ZXingScannerView(getActivity().getApplicationContext());
mScannerView.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));
qrCameraLayout.addView(mScannerView);

List<BarcodeFormat> formats = new ArrayList<>();
formats.add(BarcodeFormat.QR_CODE);
mScannerView.setFormats(formats);

return v;
}

@Override
public void onResume()
{
super.onResume();
mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
mScannerView.startCamera(); // Start camera on resume
}

@Override
public void onPause()
{
super.onPause();
mScannerView.stopCamera();
}

@Override
public void handleResult(final Result result)
{
//handling results
}

最佳答案

我尝试了一些方法来解决这个问题,终于找到了解决方案。

public void handleResult(Result result) {
//Hold result
Log.e("handler", result.getText()); // Prints scan results
Log.e("handler", result.getBarcodeFormat().toString()); // Prints the scan format (qrcode)
mScannerView.removeAllViews(); //<- here remove all the views, it will make an Activity having no View
mScannerView.stopCamera(); //<- then stop the camera
setContentView(R.layout.activity_Main); //<- and set the View again.
final String vString = result.getText();
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(mContext,vString,Toast.LENGTH_LONG).show();
}
});
// to resume scanning
// mScannerView.resumeCameraPreview(this);<br />
}
}

再次设置 ContentView 解决了 m 的问题

关于android - 在 fragment 中,如何停止ZXing Scanner的摄像头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38664956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com