Estoy tratando de usar la linterna LED de las cámaras en un widget. He encontrado varios hilos sobre este tema (es decir the one se menciona más adelante ..), ahora estoy tratando de controlar la luz usando:Utilice la linterna de la cámara en Android
Camera cam = Camera.open();
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.release();
En el AndroidManifest.xml trataron diferentes permisos, actualmente tengo:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera.flash" />
Estoy probando esto en mi Galaxy Tab ya que no tengo ningún otro dispositivo Android a mano: la luz no se enciende. Así que ahora tengo algunas preguntas:
- ¿Hay alguna manera de probar el comportamiento de la luz led en el emulador?
- ¿Estoy haciendo algo mal aquí?
- Según la pregunta this que trata del mismo problema, funciona de manera diferente en el Galaxy Tab. ¿Cómo?
- Y, por último, si funciona de manera diferente, estoy empezando a preguntarme si es solo la Galaxy Tab o si otros dispositivos usan métodos diferentes también. Sería difícil probarlo entonces y me parece bastante extraño.
¡Gracias por cualquier idea!
Por cierto, probé rápidamente con quick-settings que se menciona aquí algunas veces. La linterna tampoco funciona con configuraciones rápidas.
Tenga en cuenta que el Galaxy Tab stil usa Android 2.2. Veo que hubo algunos cambios entre 2.2 y 2.3.
comentario: Sé que tiene que funcionar de alguna manera, ya que he encontrado otras aplicaciones en el mercado que funcionan perfectamente con el Galaxy Tab.
Comentario 2: Si configuro cam.setParameters (p); y solicite directamente a la cámara el estado actual con getFlashMode() devuelve FLASH_MODE_TORCH correctamente. Sin embargo, si suelto la cámara y la vuelvo a abrir, devuelve FLASH_MODE_OFF. Es casi como si el objeto de la cámara conociera la solicitud pero realmente no la transmitiera al hardware.
-
Después comentario Konstantins, quité la cam.release(); parte. Tiene razón, la configuración no persiste si sueltas la cámara. Si usa cam.open() nuevamente, obtendrá una instancia nueva con la luz apagada. Sin embargo, la luz aún no funciona en la pestaña galaxia. Entonces, supongo que es difícil mantener la luz encendida si estás tratando de controlarlo a través de un widget. Tan pronto como finalice el servicio en segundo plano, el objeto de la cámara se liberará automáticamente y, por lo tanto, la luz se apagará nuevamente. Mis preguntas aún permanecen, especialmente por qué la cámara no se enciende en primer lugar.
Incluso yo quería saber cómo hacer esto. ¡Voto ascendente! – CuriousMind
No tengo ninguna idea también, pero si no puede encontrar una solución, puede descargar una de las aplicaciones de linterna del mercado y tratar de descompilarla. – RoflcoptrException
Bueno, antes de iniciar el código de alguien de ingeniería inversa, realmente me gustaría obtener más información de los codificadores en stackoverflow ;-) – pgruetter