2015-05-30 15 views
6

Ho bisogno di integrare Zxing con vuforia per realizzare un'app per la scansione di codici QR in Unity? Non ho idea di come integrare Zxing con Vuforia nell'unità. Qualcuno mi guida come fare? Ho i file Zxing .dll e il pacchetto Vuforia unity.Grazie in anticipo.Integrazione scanner di codici QR Unity Zxing

risposta

7

Stavo cercando di integrare Zxing con vuforia in Unity oggi.

La prima cosa da fare è scaricare la dll da: https://zxingnet.codeplex.com/ e copiare il dll l'unità nella vostra cartella Plugins (che dovrebbe essere nella cartella Assets)

Poi, sono riuscito a trovare alcuni esempi (alcuni dei tesi è obsoleto):

Dopo la fusione tesi esempi e li semplificare, ho qualcosa di simile (che si trova del ARCamera prefabbricato):

using UnityEngine; 
using System; 
using System.Collections; 

using Vuforia; 

using System.Threading; 

using ZXing; 
using ZXing.QrCode; 
using ZXing.Common; 


[AddComponentMenu("System/VuforiaScanner")] 
public class VuforiaScanner : MonoBehaviour 
{  
    private bool cameraInitialized; 

    private BarcodeReader barCodeReader; 

    void Start() 
    {   
     barCodeReader = new BarcodeReader(); 
     StartCoroutine(InitializeCamera()); 
    } 

    private IEnumerator InitializeCamera() 
    { 
     // Waiting a little seem to avoid the Vuforia's crashes. 
     yield return new WaitForSeconds(1.25f); 

     var isFrameFormatSet = CameraDevice.Instance.SetFrameFormat(Image.PIXEL_FORMAT.RGB888, true); 
     Debug.Log(String.Format("FormatSet : {0}", isFrameFormatSet)); 

     // Force autofocus. 
     var isAutoFocus = CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO); 
     if (!isAutoFocus) 
     { 
      CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_NORMAL); 
     } 
     Debug.Log(String.Format("AutoFocus : {0}", isAutoFocus)); 
     cameraInitialized = true; 
    } 

    private void Update() 
    { 
     if (cameraInitialized) 
     { 
      try 
      { 
       var cameraFeed = CameraDevice.Instance.GetCameraImage(Image.PIXEL_FORMAT.RGB888); 
       if (cameraFeed == null) 
       { 
        return; 
       } 
       var data = barCodeReader.Decode(cameraFeed.Pixels, cameraFeed.BufferWidth, cameraFeed.BufferHeight, RGBLuminanceSource.BitmapFormat.RGB24); 
       if (data != null) 
       { 
        // QRCode detected. 
        Debug.Log(data.Text); 
       } 
       else 
       { 
        Debug.Log("No QR code detected !"); 
       } 
      } 
      catch (Exception e) 
      { 
       Debug.LogError(e.Message); 
      } 
     } 
    }  
} 

riesco a farlo lavora in un AVD (Android Virtual Device), in modo da Funzionerà su un dispositivo reale.

+0

hey bro ... non succede niente solo uno schermo nero nel dispositivo Android. Penso che il camer non stia inizializzando. – Hussey123

+0

È Vuforia che prende la webcam predefinita per il tuo dispositivo. Hai trascinato e rilasciato la "AR Camera" nella scena? Se hai una webcam, puoi testare tutte le funzionalità di Vuforia direttamente in Unity – KDelli

+0

Risolti i problemi con la schermata nera. Il valore di iFrameFormatSet è anch'esso vero ora.Ma il codice qr non è decodifica.Ma il suo valore è nullo.Esegue " Nessun codice QR rilevato! " – Hussey123

1

Se si utilizza l'unità 5.xe Windows a 64 bit è possibile ottenere un errore

Impossibile caricare Attività/Plugins/QCARWrapper.dll

soluzione è semplice come indicato nel domanda Unity3d - Failed to load 'Assets/Plugins/QCARWrapper.dll'

  1. Per utilizzare Vuforia con Unity 64 bit, basta spostare il QCARWrapper DLL /Plugins-/Plugins/x86. il se sono le DLL:

  2. Selezionare la QCARWrapper.bundle nella vista Unità di progetto (che si trova tra le Attività> Plugin), in modo che le sue impostazioni sono mostrate nella Unità Inspector Cambiare le impostazioni del QCARWrapper.bundle nella finestra di ispezione dell'Unità da qualsiasi piattaforma a Standalone + Editor.

Che funziona come un fascino.

Problemi correlati