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:

$(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.

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:

  1. 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.
  2. 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)
  3. 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
  4. 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.

  • La alerta de JavaScript no funciona en Android WebView
  • Android: recuperar html del sitio web cierto tiempo después de la solicitud
  • Referencia javax.script.ScriptEngine en android o evaluar una expresión javascript
  • Reaccionar solicitud de correos nativos mediante solicitudes de recuperación falla en la solicitud de red
  • Los nuevos dispositivos de Samsung no pueden mostrar páginas web en su aplicación de SMS integrada
  • Pasar y devolver los valores de javascript y android y utilizarlos como plugin de brecha de teléfono
  • Función de devolución de llamada Javascript a Android
  • Android EPSON thermal Imprimir los datos desde la vista web al hacer clic? Si la impresora no se encuentra?
  • Uncaught TypeError: No se puede leer la propiedad 'tagName' de null
  • Cómo acceder a Android desde el navegador
  • cómo detectar con javascript si el navegador es un androide webview?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.