Android Zxing cambia orientamento al ritratto

Sto provando a ruotare l'esposizione Zxing dopo aver letto alcune domande e post su questo problema. Dopo aver seguito le istruzioni, il display ha ruotato, ma il rettangolo dello scanner non è posizionato come dovrebbe (come si può vedere sull'image allegata).

Questo è ciò che ho fatto:

  • Android Eclipse Errore durante l'esecuzione di aapt: codice di return 139
  • Selettore API Google Places visualizza solo alcuni tipi di luoghi
  • Invia dati dall'attività a frammento
  • come utilizzare LocalBroadcastManager?
  • Errore: Imansible risolvere: com.twitter.sdk.android:twitter:2.3.0 - Android Studio
  • Sovrapponga l'image per creare un tutorial nell'applicazione Android
    1. in CameraConfigurationManager:

      camera.setDisplayOrientation(90); 
    2. in DecodeHandler.java

       byte[] rotatedData = new byte[data.length]; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) rotatedData[x * height + height - y - 1] = data[x + y * width]; } int tmp = width; width = height; height = tmp; 
    3. in CameraManager.java:

       rect.left = rect.left * cameraResolution.y / screenResolution.x; rect.right = rect.right * cameraResolution.y / screenResolution.x; rect.top = rect.top * cameraResolution.x / screenResolution.y; rect.bottom = rect.bottom * cameraResolution.x / screenResolution.y; 

    immettere qui la descrizione dell'immagine

  • Slide personalizzata per sbloccare
  • Impostare la casella di controllo in modo dinamico da sqlite in un frammento
  • Modalità rigorosa in android 2.2
  • Rendere file epub in android
  • Crea database SQLite in android
  • Grande pezzo di memory non sprechi raccolti
  • 7 Solutions collect form web for “Android Zxing cambia orientamento al ritratto”

    Dopo un sacco di difficoltà, ho trovato il problema e spero che possa aiutare qualcuno in futuro.

    Sul metodo initFromCameraParameters in CameraConfigurationManager esiste un presupposto che la scansione sia sempre ALWAYS in landscape mode e pertanto una correzione quando la width < height . Se segui i passaggi della domanda e rimuovi questo controllo, funziona bene.

    La ringrazio per la risposta!! mi ha veramente aiutato, una cosa che ho notato è che alless su zxing 2.1 devi passare "rotatedData" per buildLuminanceSource invece di solo "dati", la linea finisce così:

     PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(rotatedData, width, height); 

    Speriamo che questo aiuti qualcun altro!

    Beh ho fatto un piccolo cambiamento in ProjectLibrary (progetto xzing) e in grado di cambiare il paesaggio dell'orientamento in ritratto

    Nel setDesiredCameraParameters method of class CameraConfigurationManager aggiunto

    camera.setDisplayOrientation(90);

    .. nel mio file originale di AndroidManifest.xml del progetto. Ho impostato screenOrientation = portrait e il suo funzionamento bene sul mio ICS 4.0.3

      <activity android:name="com.google.zxing.client.android.CaptureActivity" android:configChanges="orientation|keyboardHidden" android:exported="false" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden" > <intent-filter> <action android:name="com.phonegap.plugins.barcodescanner.SCAN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> 
    1. In CameraConfigurationManager :

       camera.setDisplayOrientation(90); 
    2. In DecodeHandler.java :

       byte[] rotatedData = new byte[data.length]; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) rotatedData[x * height + height - y - 1] = data[x + y * width]; } int tmp = width; width = height; height = tmp; 
    3. In CameraManager.java :

       rect.left = rect.left * cameraResolution.y / screenResolution.x; rect.right = rect.right * cameraResolution.y / screenResolution.x; rect.top = rect.top * cameraResolution.x / screenResolution.y; rect.bottom = rect.bottom * cameraResolution.x / screenResolution.y; 
    4. In CameraConfigurationManager :

       if (width > height) { Log.i(TAG, "Display reports portrait orientation; assuming this is incorrect"); int temp = width; width = height; height = temp; } 
    5. Cambiare android:screenOrientation="portrait" per CaptureActivity nel manifesto.

    Sono uno sviluppatore di Barcode Scanner. Sì, ci vuole molto di più per eseguire la scansione in modalità ritratto. Dovete "ruotare" i dati dell'image e calcolare l'orientamento del dispositivo, il suo orientamento predefinito e l'orientamento del sensore.

    Scanner di codici a barre + esegue la scansione in modalità ritratto e puoi integrarti con Intent nello stesso modo in cui si integra con il codice a barre . (Tuttavia è un'applicazione per pagare).

    A partire dalla libreria zxing: 2.2.0 il supporto per la modifica dell'orientamento è inerente

    Aggiungere / modifica quanto segue nel manifesto:

     <activity android:name="com.journeyapps.barcodescanner.CaptureActivity" android:screenOrientation="fullSensor" tools:replace="screenOrientation" /> 

    Imposta properties; aggiuntiva alla chiamata allo scanner:

     IntentIntegrator integrator = new IntentIntegrator(this); //allows portrait/landscape mode integrator.setOrientationLocked(false);//"additional property" integrator.initiateScan(); 

    Link di riferimento: https://github.com/journeyapps/zxing-android-embedded#changing-the-orientation

    Ho provato diverse patch, suggerite in altre risposte, ma il riconoscimento dei codici a barre è rimasto non affidabile.

    Raccommand vivamente di usare il repository qui sotto in modalità ritratto. Provare, è veloce e stabile. L'ho usato nella mia applicazione ibrida.

    https://github.com/Dbuggerx/BarcodeScanner

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.