打开android屏幕中间的摄像头查看二维码

打开android屏幕中间的摄像头查看二维码,android,camera,Android,Camera,我正在尝试制作一个二维码扫描仪,它是在一个片段中打开的,我正在使用zxing库来实现这一点。现在我可以成功打开相机扫描二维码了。但是,由于我使用intent打开相机,它会打开另一个活动。我要做的是打开相机内的片段,只有在屏幕的中间部分。我相信曲面视图和相机预览可以帮助我做到这一点,但我不知道如何实现它 public class QRscanner extends Fragment { private IntentIntegrator qrScan; public QRscanner() { }

我正在尝试制作一个二维码扫描仪,它是在一个片段中打开的,我正在使用zxing库来实现这一点。现在我可以成功打开相机扫描二维码了。但是,由于我使用intent打开相机,它会打开另一个活动。我要做的是打开相机内的片段,只有在屏幕的中间部分。我相信曲面视图和相机预览可以帮助我做到这一点,但我不知道如何实现它

public class QRscanner extends Fragment {
private IntentIntegrator qrScan;
public QRscanner() {
}
public static QRscanner newInstance(String text){
    Bundle args = new Bundle();
    QRscanner qrScanner = new QRscanner();
    qrScanner.setArguments(args);
    return qrScanner;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.qr_scanner, container, false);
    IntentIntegrator qrScan = new IntentIntegrator(getActivity());
    qrScan.initiateScan();
    return rootView;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    if (result != null) {
        //if qrcode has nothing in it
        if (result.getContents() == null) {
            Toast.makeText(getActivity(), "Result Not Found", Toast.LENGTH_LONG).show();
        } else {
            //if qr contains data
            try {
                //converting the data to json
                JSONObject obj = new JSONObject(result.getContents());
                String testing = obj.getString("test");
                System.out.println(testing);
                //setting values to textviews
            } catch (JSONException e) {
                e.printStackTrace();
                //if control comes here
                //that means the encoded format not matches
                //in this case you can display whatever data is available on the qrcode
                //to a toast
                Toast.makeText(getActivity(), result.getContents(), Toast.LENGTH_LONG).show();
            }
        }
    } else {
        super.onActivityResult(requestCode, resultCode, data);
    }
}
}
请访问GitHub上的图书馆


它可能会对您有所帮助。

您可以使用以下库: