0

私はアプリケーションを持っており、主なアクティビティにはボタンがあり、クリックすると画面の中央にフラグメントが開きます。
私は説明されているように中央にカメラを開く作業コードがありますが、私はその単純なカメラビューをqrスキャナに変更したいと思います。zxingライブラリの依存関係が追加されました。カメラを開くときにそれを動作させる方法は?コードを手配することはできません。 (oncreateビューで)。
お手伝いをしてください。qrコードスキャナでカメラを開くには?

//method in scan.java 
@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_scan, container, false); 

     if(checkCameraHardware(getActivity().getApplicationContext())){ 
zXingScannerView = new ZXingScannerView(getActivity().getApplicationContext()); 

      //zXingScannerView.startCamera(); I tried something like this 

      mCamera = Camera.open(); 
      mCamera.setDisplayOrientation(90); 
      Camera.Parameters params = mCamera.getParameters(); 
      params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); 
      mCamera.setParameters(params); 
      mPreview = new CameraPreview(this.getActivity(), mCamera); 


      //container.addView(mPreview);--->Remove this line 
      //Add this line 

      FrameLayout preview =(FrameLayout)view.findViewById(R.id.camera_preview); 
      preview.addView(mPreview); 
     } 
     // Inflate the layout for this fragment 
     return view; 
    } 
//fragment_scan.xml 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

    tools:context="layout.scan" 
    android:layout_centerInParent="true" 
android:layout_marginTop="@dimen/nav_header_height" 
android:layout_marginBottom="@dimen/fab_margin" 
    android:layout_marginLeft="@dimen/fab_margin" 

    > 
<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/camera_preview" 
    > 


    </FrameLayout> 
</LinearLayout> 
+0

あなたは(https://www.spaceotechnologies.com/qr-code-android-using-zxing-library/)便利なこの[リンク]を見つけることができます。 –

+0

zxingライブラリのCameraConfigurationUtilsファイルを変更することができます –

答えて

0

私は、QRコードをスキャンして連絡先番号にアクセスするためのボタンがあります。

contacts.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      enable = "contacts"; 
      pickBankData(enable); 
     } 
    }); 
private void pickBankData(String val) { 

if (enable.equals("scanqr")) { 
     IntentIntegrator integrator = new IntentIntegrator(this); 
     integrator.setPrompt("Scan a Qrcode"); 
     integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); 
     integrator.setCameraId(0); // Use a specific camera of the device 
     integrator.setBeepEnabled(false); 
     integrator.setBarcodeImageEnabled(true); 
     integrator.initiateScan();   // accno.setEnabled(false); 
     // ifsc.setEnabled(false); 

    } } 

であり、オンアクティビティの結果では値が解析されます。

switch (requestCode) { 
     case IntentIntegrator.REQUEST_CODE: 
      IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, 
        resultCode, data); 
      if (scanResult == null) { 
       return; 
      } 
      final String result = scanResult.getContents(); 
      if (result != null) { 
       handler.post(new Runnable() { 
        @Override 
        public void run() { 
         // tx.setText(result); 
         try { 
          String qrInputText = result; 
          String[] array = qrInputText.split(":", -1); 
          String usertype = array[0]; 
          String mobilenumber = array[1]; 

          String MMid = array[2]; 
          String Name = array[3]; 
          if (mobilenumber.equals("")) { 

          } 
          if (enable.equals("scanqr")) { 
           nameedit.setText(Name); 
           mobnum.setText(mobilenumber); 

          } 
0

@Nimraより良いあなたが使用QReader Libはシンプルかつ最高の、githubので見つかった新しいLIBの多くをscaning QRコードのために、カスタムのLibを使用することができます。 onCreateで

QReaderLib Github Link

実装、Gradleので

compile 'com.github.nisrulz:qreader:{latest version}'//start from 1.0.4 version 

あなたのレイアウトにSurfaceViewを追加

<SurfaceView 
    android:id="@+id/camera_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_above="@+id/info" 
    /> 

セットアップSurfaceViewとQREader()

// QREader 
private SurfaceView mySurfaceView; 
private QREader qrEader; 
.. 

@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    .. 
    .. 

    // Setup SurfaceView 
    // ----------------- 
    mySurfaceView = (SurfaceView) findViewById(R.id.camera_view); 

    // Init QREader 
    // ------------ 
    qrEader = new QREader.Builder(this, mySurfaceView, new QRDataListener() { 
    @Override 
    public void onDetected(final String data) { 
     Log.d("QREader", "Value : " + data); 
     text.post(new Runnable() { 
     @Override 
     public void run() { 
      text.setText(data); 
     } 
     }); 
    } 
    }).facing(QREader.BACK_CAM) 
     .enableAutofocus(true) 
     .height(mySurfaceView.getHeight()) 
     .width(mySurfaceView.getWidth()) 
     .build(); 

} 
+0

QReader.Builderはシンボルビルダーを解決できません!どうして? –

+0

私はあなたの扶養家族にライブラリを追加しないと思います。 –

+0

ここに貼り付けた依存関係を追加しました。私のgradl –

0

このコードを単純に変更すると、コード内でqr scannerを開くのにうまくいきました。以下はコードです。任意の身体によって必要とされる場合。

zXingScannerView = new ZXingScannerView(getActivity().getApplicationContext()); 
zXingScannerView.startCamera(); 

FrameLayout preview =(FrameLayout)view.findViewById(R.id.camera_preview); 
preview.addView(zXingScannerView); 
関連する問題