0

J'ai une application et sur son activité principale il y a un bouton, en cliquant sur ce qui ouvre un fragment au centre de l'écran.
J'ai le code de travail qui ouvre la caméra au centre comme expliqué, mais je veux que cette simple vue de la caméra se transforme en scanner qr. J'ai maintenant ajouté la dépendance de la bibliothèque zxing. et comment le faire fonctionner lors de l'ouverture de la caméra? ne peut pas organiser le code. (dans la vue oncreate).
Toute aide serait grande s'il vous plaît.comment ouvrir une caméra avec un scanner de code 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

Vous pouvez trouver ce [link] (https://www.spaceotechnologies.com/qr-code-android-using-zxing-library/) utile. –

+0

vous pouvez modifier le fichier CameraConfigurationUtils dans la bibliothèque zxing –

Répondre

0

J'ai bouton pour scanner le code qr et accéder au numéro de contact.

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); 

    } } 

et dans le résultat d'inactivité la valeur est analysée.

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 mieux vous pouvez utiliser sur mesure Lib, pour le lot code qr scaning de nouvelles lib trouvées dans github, utilisation QReader Lib simple et mieux.

QReaderLib Github Link

mise en œuvre,

En Gradle,

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

Ajouter un SurfaceView à votre disposition

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

Configuration SurfaceView et QREader dans onCreate()

// 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 ne peut pas résoudre le générateur de symboles! Pourquoi? –

+0

Je pense que vous n'ajoutez pas de bibliothèque dans vos dépendances, –

+0

J'ai ajouté la dépendance que vous avez collée ici. Dans mon gradue –

0

Cette simple modification dans mon code a bien fonctionné pour ouvrir qr scanner dans mon code. Voici le code. Si nécessaire par n'importe quel corps.

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

FrameLayout preview =(FrameLayout)view.findViewById(R.id.camera_preview); 
preview.addView(zXingScannerView);