Actualmente, la biblioteca zxing solo es compatible con el modo horizontal. Para mi aplicación, debo usarla en modo retrato¿Cómo usar Zxing en modo vertical?
Respuesta
Solo echa un vistazo al problema para Usar Zxing en modo retrato.
Este enlace está obsoleto. –
El enlace lleva al problema "Código QR no admite Unicode" ... Consulte esto https://github.com/journeyapps/zxing-android-embedded/issues/16 en su lugar – kristyna
Si está utilizando la versión 3.xx , declara la orientación en AndroidManifest.xml. Para obtener más información, lee https://github.com/journeyapps/zxing-android-embedded/blob/master/README.md#changing-the-orientation – kristyna
setDisplayOrientation(int)
no afecta el orden de la matriz de bytes pasada en PreviewCallback.onPreviewFrame
. (Consulte Javadoc para información adicional)
Esto significa que usted necesita para hacer girar el retorno de datos de previewCallback, pero esto es los datos YUV, es necesario convertir los datos al rgb para rotarlos. Es posible escanear el código de barras en modo vertical, pero llevará más tiempo porque necesita más tiempo para procesar los datos de yuv a rgb y rotar los datos de rgb. por lo que el asunto aquí es ¿cómo podemos obtener los datos de yuv de previewcallback para el modo vertical? cuando establecemos setPreviewSize para los parámetros de la cámara obtendremos una excepción si no se admite la previsualización. Aquí está el asunto de este problema. Si el controlador de la cámara no es compatible con previewSize para el modo vertical (alto> ancho), no puede obtener los datos del yuv en modo vertical. Y el resto depende de usted, puede escanear el código de barras en modo vertical, pero lleva más tiempo o tiene que cambiar de orientación de pantalla a imagen para obtener un resultado más rápido.
Con el fin de hacer que el trabajo de la pantalla en el retrato, establecer la orientación de retrato para la actividad (por ejemplo, en el manifiesto) y luego config la cámara: Use camera.setDisplayOrientation (90) en CameraConfigurationManager.setDesiredCameraParameters (cámara de la cámara). Pero tenga en cuenta que:
- setDisplayOrientation (int) requiere Android 2.2
- setDisplayOrientation (int) no afecta al orden de la matriz de bytes aprobada en PreviewCallback.onPreviewFrame. (Consulte JavaDoc para obtener información adicional)
Como los marcos de vista previa siempre están en "paisaje", necesitamos rotarlos. Utilicé la rotación en sentido horario ofrecida por comment #11. No olvide cambiar los parámetros de ancho y alto después de la rotación. DecodeHandler.java, rotar los datos antes de buildLuminanceSource en decodificación (byte [] de datos, anchura int, altura int)
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; // Here we are swapping, that's the difference to #11 width = height; height = tmp;
también modifiqué CameraManager.java, getFramingRectInPreview(), según lo recomendado por # c11:
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;
No modifiqué getCameraResolution(). Esa es la segunda diferencia con respecto a # c11.
Como resultado, tengo el trabajo de escaneo de códigos UPC y otros 1D en retrato.
P.S. También puede ajustar el tamaño de FramingRect (que es el rectángulo visible en la pantalla durante el escaneo), y FramingRectInPreview se ajustará automáticamente.
edita y soluciona el problema de formateo. .. – kleopatra
Un buen parche para zxing: https://gist.github.com/border/7577978 – WarrenFaith
utilizar esta biblioteca androide https://github.com/SudarAbisheck/ZXing-Orient
Es compatible tanto con orientación vertical como horizontal.
Revisa [Haz una visita] (http://stackoverflow.com/tour) y [Tu respuesta está en otro castillo : Cuando una respuesta no es una respuesta] (http://meta.stackexchange.com/questions/225370) – Drew
@Drew en mi opinión es una respuesta decente ... el OP quiere una versión de ZXing que admita más el retrato, y esta respuesta ofrece exactamente eso. Me ayudó con el mismo requisito. –
Estoy seguro de que así fue. Hace años, las solicitudes de recursos estaban bien en este sitio. Las pautas cambiaron. Y cuando llegan respuestas nuevas con respuestas de solo enlaces, a menudo obtienes los comentarios que te di. – Drew
Aquí está la solución de escaneado modo vertical
primera declarar estas dos líneas en su nivel de aplicación de archivos Gradle
compile 'com.journeyapps:zxing-android-embedded:[email protected]'
compile 'com.google.zxing:core:3.2.0'
Definir un botón en el archivo XML y en Onclick Oyente de botón escriba debajo código en el archivo java MainActivity
IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setPrompt("Scan a barcode");
integrator.setCameraId(0); // Use a specific camera of the device
integrator.setOrientationLocked(true);
integrator.setBeepEnabled(true);
integrator.setCaptureActivity(CaptureActivityPortrait.class);
integrator.initiateScan();
escriba debajo de código en y nuestro archivo MainActivity java, después del método onCreate()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result != null) {
if(result.getContents() == null) {
Log.d("MainActivity", "Cancelled scan");
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Log.d("MainActivity", "Scanned");
st_scanned_result = result.getContents();
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
}
}
}
a continuación, crear una clase con el nombre CaptureActivityPortrait que se extiende CaptureActivity. La clase se parece a continuación
package soAndSo(Your PackageName);
import com.journeyapps.barcodescanner.CaptureActivity;
public class CaptureActivityPortrait extends CaptureActivity {
}
y más importante declarar su CaptureActivityPortrait en el archivo de manifiesto, como a continuación
<activity android:name=".CaptureActivityPortrait"
android:screenOrientation="portrait"
android:stateNotNeeded="true"
android:theme="@style/zxing_CaptureTheme"
android:windowSoftInputMode="stateAlwaysHidden"></activity>
- 1. Cómo usar Zxing en Android
- 2. Cómo usar ZXing C# Puerto
- 3. ¿Cómo hacer un UISplitViewController en modo vertical?
- 4. ¡Vista dividida en modo vertical!
- 5. AVVideoCompositionCoreAnimationTool y CALayer en modo vertical?
- 6. ¿Cómo puedo desactivar el modo vertical en Windows 8?
- 7. ¿Puedo usar Zxing para fines comerciales?
- 8. Zxing en Android: Eclipse
- 9. bloquear UIImagePickerController en el modo vertical en la aplicación ios
- 10. ZXing en Android PDF417
- 11. Cómo ocultar la barra de desplazamiento vertical en .NET Control ListView en modo Detalles
- 12. Zxing - Cambio de la vista de la cámara -90 grados
- 13. ¿Cómo puedo usar 2 fondos diferentes entre el modo paisaje y el modo retrato
- 14. ¿Cómo incluir y usar la Biblioteca ZXing en Android con eclipse?
- 15. ZXing Barcode Scanner for Webapps
- 16. ¿Cómo forzar iPad Safari a no reducir mi página web en modo vertical?
- 17. ¿Cómo saber si la foto está en modo horizontal o vertical?
- 18. ActionSheet dentro de UISplitViewController actúa de forma diferente en el modo vertical que en el modo horizontal
- 19. ZXing ("Paso de cebra") en C#
- 20. zxing integración en la aplicación de monodroid
- 21. Agregar zxing a XCode 4
- 22. Mostrar Android DialogFragment como diálogo en modo vertical y como parte de la actividad en modo horizontal
- 23. Usar EventLogReader en modo de orden Desc?
- 24. ¿Es posible usar OCaml en modo incrustado?
- 25. cómo usar vimdiff en el modo de comando VIM?
- 26. Cómo usar Tika en el modo de servidor
- 27. iPhone Tableview Usar celdas en desplazamiento horizontal no vertical
- 28. UIWebview en una vista modal se muestra en vertical en modo Paisaje
- 29. Quiero que mi aplicación de Android solo se ejecute en modo vertical?
- 30. Texto vertical en datagridview
Esto es lo que puede hacer con ZXing 2.1. http://stackoverflow.com/questions/16252791/how-to-show-zxing-camera-in-portrait-mode-on-android/16252917#16252917 – Roylee
A partir de Zing 2.2.0 hay una propiedad que puede establecer para la orientación , remítase a esta [respuesta] (https://stackoverflow.com/a/44284764/2584794) – Anup