¿Cómo acceder a la cámara mediante Bluetooth?

Esto es lo que me gustaría lograr. Tengo 2 dispositivos androides, me gustaría acceder a la cámara de la segunda vía bluetooth y mostrar la vista previa de la primera.

¿Alguna sugerencia de cómo hacer esto?

Básicamente me gustaría obtener una instancia de la cámara de otro dispositivo Android a través de bluetooth.

Respuesta corta:

No se puede obtener una instancia directa de esta manera. Es decir – usted no va a conseguir un objeto de la cámara que usted podrá utilizar normalmente. En lugar de eso vas a tener que fingir una cantidad justa.

Respuesta larga:

Vas a tener que configurar una relación cliente / host bluetooth entre los dos dispositivos. Después de que usted ha hecho que usted va a fijar uno para arriba como el "control" aspecto de esta relación, y el otro como la cámara. Los llamaremos 1 y 2.

1 tendrá una interfaz de usuario (tomar el botón de imagen, etc). Cuando se presiona un botón, una orden se desplaza por la línea a 2.

2 hará entonces como las peticiones del comando y pasará algunos datos de nuevo a 1.

En el caso de tomar una foto:

El usuario presiona el botón de tomar la imagen en 1. 1 Envía el comando "tomar una foto" a 2. 2 luego usa este comando para tomar una foto de acuerdo con sus instrucciones. 2 entonces envía el resultado del archivo de esta imagen de nuevo sobre el bluetooth.

Para hacer vista previa de la imagen – que es ver lo que la imagen es antes de que realmente haga clic en "captura" – No creo que va a tener mucha suerte. Usted podría hacer esto siguiendo el patrón anterior, pero estoy dudoso que sería una experiencia suave.

EDITAR:

Después de alguna discusión con Alex en los comentarios, y algunos pensando en esto tengo algunas ideas para la vista previa.

Preocupaciones:

Si puede obtener alrededor de 10-15 fps de 2 a 1 puede tener una vista previa razonable. Dependiendo de sus necesidades / caso de uso aún menos podría ser posible.

Es necesario implementar

Camera.PreviewCallback: onPreviewFrame(byte[] data, Camera camera); : 

http://developer.android.com/reference/android/hardware/Camera.PreviewCallback.html#onPreviewFrame (byte [], android.hardware.Camera), y registre su devolución de llamada con

Cámara

 setPreviewCallback(Camera.PreviewCallback cb) 

Necesitas reducir la muestra (probablemente, no estoy seguro de los tamaños de lo que se proporciona en onPreviewFrame) para mantener el tamaño del contenido bajo.

4) Enviar.

No estoy completamente seguro de que esto funcionaría como no lo he probado, pero esa es la ruta más sencilla que veo.

Otra opción:

Entre en el JNI y maneje la cosa entera allí. Usted casi podría hacer que este trabajo en ese nivel en términos de velocidad. Tengo ideas vagas sobre cómo hacer esto, pero sería una empresa bastante importante.

  • Actividad / Actividad de la cámara - evitar guardar en la galería
  • ¿Cómo selecciono la cámara correcta para encender la linterna, en Android 2.2?
  • Cámara Android: ¿Hilos? Que debe hacer lo que
  • Capturado La orientación de la fotografía está cambiando en android
  • Capturar fotogramas de vista previa de Camera2 devuelve el búfer vacío
  • Cómo forzar una cámara de Android a mostrar en modo vertical, o para que yo haga la rotación en su lugar
  • Android guarda la imagen de la cámara en el almacenamiento local
  • Cómo compilar la aplicación Cámara + Galería de Android 4.1 / 4.2 juntos
  • ¿Puedo obligar a mi aplicación a iniciar la cámara predeterminada en lugar de ofrecer la lista de "Acción completa usando"?
  • Android webview página recarga después de la captura de imagen y cargar en android 5 +
  • Vista previa de la cámara Android extraña
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.