ultima studio journeyapps integrar code barcodereader android zxing

studio - Android Zxing cambia la orientación al retrato



zxing android ultima version (8)

  1. En CameraConfigurationManager :

    camera.setDisplayOrientation(90);

  2. En 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. En 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. En CameraConfigurationManager :

    if (width > height) { Log.i(TAG, "Display reports portrait orientation; assuming this is incorrect"); int temp = width; width = height; height = temp; }

  5. Cambiar android:screenOrientation="portrait" para CaptureActivity en manifiesto.

Estoy intentando rotar la pantalla Zxing después de leer algunas preguntas y publicaciones sobre el tema. Después de seguir las instrucciones, la pantalla giró, pero el rectángulo del escáner no está colocado como debería (como se puede ver en la imagen adjunta).

Esto es lo que he hecho:

  1. en CameraConfigurationManager:

    camera.setDisplayOrientation(90);

  2. en 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. en 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;


¡¡Gracias por su respuesta!! realmente me ayudó, una cosa que noté es que al menos en zxing 2.1 necesita pasar "rotatedData" para construirLuminanceSource en lugar de simplemente "datos", la línea termina así:

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

¡Espero que esto ayude a alguien más!


Bueno, hice un pequeño cambio en ProjectLibrary (proyecto xzing) y pude cambiar el paisaje de orientación a retrato

En el setDesiredCameraParameters method of class CameraConfigurationManager agregado

camera.setDisplayOrientation(90);

.. en el archivo AndroidManifest.xml mi proyecto original. Configuré screenOrientation = portrait y funciona bien en mi 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>


Después de muchas dificultades, encontré el problema, y ​​espero que ayude a alguien en el futuro.

En el método initFromCameraParameters en CameraConfigurationManager se supone que el escaneo ALWAYS in landscape mode está ALWAYS in landscape mode y, por lo tanto, se corrige cuando width < height . Si sigue los pasos de la pregunta y elimina esta verificación, funciona bien.


En tu biblioteca ve al archivo de manifiesto cambia la siguiente línea debajo de la etiqueta de actividad

android:screenOrientation="portrait"


He probado varios parches, sugeridos en otras respuestas, pero el reconocimiento del código de barras no fue confiable.

Recomiendo usar el repositorio a continuación en modo retrato. Pruébalo, es rápido y estable. Lo usé en mi aplicación híbrida.

https://github.com/Dbuggerx/BarcodeScanner


Soy un desarrollador de Barcode Scanner. Sí, se necesita mucho más para escanear en modo vertical. Debe "rotar" los datos de la imagen y tener en cuenta la orientación del dispositivo, su orientación predeterminada y la orientación del sensor.

Barcode Scanner + escanea en modo vertical y puede integrarse con Intent de la misma manera que lo hace con Barcode Scanner . (Sin embargo, es una aplicación de pago).


A partir de la biblioteca zxing: el soporte 2.2.0 para el cambio de orientación es inherente

Agregue / edite lo siguiente en el manifiesto:

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

Establezca propiedad adicional en la llamada al escáner:

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

Enlace de referencia: https://github.com/journeyapps/zxing-android-embedded#changing-the-orientation