Cordova Barcodescanner – Utilizar cámara frontal
Estoy utilizando este barcodescanner ( https://github.com/wildabeast/BarcodeScanner ) en una aplicación hecha con Cordova, específicamente dirigida a usar en un dispositivo Android.
Tengo la siguiente función configurada en JavaScript:
- ¿Cómo emitir una página web móvil en Android?
- Phonegap: Mientras arrastra la pantalla se borra en Android Jelly bean
- ¿Aplicar Touch Swipe en una sola página, la página que se utiliza para cargar datos dinámicamente?
- Weinre no puede abrir archivos .js
- ¿Cómo hacer la animación slide-in-up de la funcionalidad $ state.go en el marco iónico?
$(document).ready(function(){ $('#scanner').click( function(){ console.log('clicked'); //to see if the function is firing cordova.plugins.barcodeScanner.scan( function (result) { alert("We got a barcode\n" + "Result: " + result.text + "\n" + "Format: " + result.format + "\n" + "Cancelled: " + result.cancelled); }, function (error) { alert("Scanning failed: " + error); } ); }); });
como se menciona en la documentación proporcionada para este complemento. Lo he añadido a mi proyecto usando el cordova CLI:
$ cordova add plugin https://github.com/wildabeast/BarcodeScanner.git
Cuando lista los complementos disponibles para mis proyectos puedo ver que está instalado correctamente. También puedo utilizar la cámara en mi aplicación con el botón de disparo de la función correcta y puede escanear con la cámara trasera sin problemas.
¿Hay alguna manera de usar la cámara frontal para la exploración? Si no está en el complemento, ¿hay alguna manera de configurar la cámara predeterminada utilizada por el dispositivo, en el código, para usar la cámara frontal por defecto? La aplicación que estamos desarrollando necesita utilizar específicamente la cámara frente a frente solamente y no necesita la cámara hacia atrás.
Cualquier ayuda será apreciada.
- Phonegap - automáticamente incluyendo cordova correcto
- Ocultación de teclados suaves en dispositivos móviles cuando se utilizan divs contenteditable
- ¿cómo puedo obtener el valor de webkit-column-count y la página actual o ID de columna?
- Error en Samsung S4 "GetPTLAFormat: Formato no válido"
- HTML localStorage es nulo en Android cuando se usa webview
- Configuración de las cookies de Webview de Android desde un archivo HTML en el directorio de activos
- El marcador de Google Maps desaparece después de hacer zoom en android
- En la vista web de Android cuando ejecuto javascript desaparece el sotfkeyboard
Aquí hay un desglose de todos los pasos que tomamos para conseguir este derecho. Una gran cantidad de aportaciones de diferentes fuentes atribuidas a este trabajo, pero la mayoría de ellos no teniendo en cuenta que no somos desarrolladores de JAVA y que incluso algunas de las prácticas JAVA más pequeños son nuevos o incluso desconocidos para nosotros. Esta solución es desde la perspectiva de un desarrollador web.
El repositorio de trabajo se puede encontrar aquí para su uso: https://github.com/wilcovandeijl/camera_app
Gracias @Leo por su ayuda. Su mensaje nos ha llevado en la dirección correcta, pero aquí hay un enfoque más detallado que tomamos que funcionó con el tiempo. Si le interesa elaborar un poco más en su puesto, lo agradecería, si es una solución diferente a la que finalmente funcionó.
En primer lugar, agregamos el plugin de escáner de código de barras a nuestro proyecto usando la línea de comandos de CMD:
cordova plugin add com.phonegap.plugins.barcodescanner
Cambie el directorio al archivo LibraryProject que viene por defecto con el complemento descargado:
cd <project directory>\plugins\com.phonegap.plugins.barcodescanner\src\android\LibraryProject
Agregue un nuevo archivo en este directorio denominado local.properties con la ruta de acceso a su SDK, es decir
sdk.dir=C:\\Users\\QQQ\\Documents\\Android\\adt-bundle-windows-x86_64\\sdk
abre el archivo
<Project directory>plugins\com.phonegap.plugins.barcodescanner\src\android\LibraryProject\src\com\google\zxing\client\android\camera\open\GingerbreadOpenCameraInterface.java
edite la línea 48 para leer: if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT)
en CMD Cambiar directorio a:
cd <project directory>\plugins\com.phonegap.plugins.barcodescanner\src\android\LibraryProject
En tipo CMD ant release
. Esto crea un archivo classes.jar que se puede encontrar en <project directory > \plugins\com.phonegap.plugins.barcodescanner\src\android\LibraryProject\bin
.
Si tienes un error de Unable to resolve target 'android-17'
, echa un vistazo a esta solución .
Una carpeta, elimine el archivo com.google.zxing.client.android.captureactivity.jar
, pero recuerde copiar el nombre del archivo. Suelte el archivo classes.jar en este directorio (\ plugins \ com.phonegap.plugins.barcodescanner \ src \ android \ LibraryProject) y cambie el nombre a com.google.zxing.client.android.captureactivity.jar
Finalmente, también copie el archivo com.google.zxing.client.android.captureactivity.jar
recién creado en el <project directory>\platforms\android\libs
.
Ahora está listo para ejecutar el comando cordova build android
en CMD para compilar su APK y ejecutarlo en su dispositivo.
Gracias a @Leo por su ayuda con esto lo apreciamos mucho.
No creo que haya una manera de seleccionar qué cámara utilizar directamente desde el complemento de BarcodeScanner. La forma en que resolví este problema fue editar la biblioteca ZXING que utiliza este plugin para la funcionalidad de escaneado. Desafortunadamente, la biblioteca ZXING que viene cuando se instala el complemento BarcodeScanner ya está compilada para que no pueda editar ninguno de los archivos.
Realice una copia de seguridad de su proyecto de Android antes de realizar cambios. Así es como conseguí mi aplicación para usar la cámara frente a frente:
- Lo primero que debe hacer es descargar la biblioteca de BarCodeScanner desde GitHub ( https://github.com/wildabeast/BarcodeScanner ), la biblioteca de Android ZXING se encuentra en el directorio / src / android / LibraryProject / src.
- A continuación, elimine la biblioteca actual de ZXING que está usando su proyecto de Android, en mi caso estaba bajo las "Bibliotecas Privadas de Android" (tenga en cuenta el nombre de su paquete como lo necesitará para el siguiente paso)
- Copia siguiente en tus bibliotecas de proyectos la biblioteca de ZXING que descargaste y asegúrate de nombrarla de la misma manera que la que has eliminado en el paso anterior
-
Una vez que la biblioteca se ha importado, sólo necesita cambiar una línea de código para que su proyecto utilice la cámara frontal. El archivo está en el paquete com.google.zxing.client.android.camera.open y en mi caso fue nombrado "GingerbreadOpenCameraInterface.java". Hay una instrucción if en la línea 48:
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK)
Simplemente cambie el "CAMERA_FACING_BACK" a "CAMERA_FACING_FRONT" y su aplicación debe usar la cámara frontal por defecto.
Si obtienes algún error relacionado con las líneas que contienen "import com.google.xzing.client.android.R" simplemente las comentaste y los errores deberían desaparecer.
- Cómo convertir la aplicación de Android en ios
- ¿Cómo conectar el dispositivo android a "WPA2 PSK" la red segura del hotspot del wifi programmatically?