J'essaie d'utiliser la lampe de poche LED des caméras dans un widget. J'ai trouvé plusieurs fils de discussion sur ce sujet (par ex. celui mentionné plus tard..) Maintenant, j'essaie de contrôler la lumière en utilisant.. :
Camera cam = Camera.open();
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.release();
Dans le AndroidManifest.xml j'ai essayé différentes permissions, actuellement j'ai :
<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" />
Je teste cela sur mon Galaxy Tab car je n'ai pas d'autres appareils Android sous la main : la lumière ne s'allume pas. J'ai donc quelques questions maintenant :
- Y a-t-il un moyen de tester le comportement de la lumière des DEL dans l'émulateur ?
- Est-ce que je fais quelque chose de mal ici ?
- Selon ce question qui traite du même problème, il fonctionne différemment sur le Galaxy Tab. Comment ?
- Enfin, si le fonctionnement est différent, je commence à me demander s'il s'agit uniquement de la Galaxy Tab ou si d'autres appareils utilisent également des méthodes différentes. Ce serait alors difficile à tester et cela me semble plutôt étrange.
Merci pour tout renseignement !
Au fait, j'ai rapidement testé avec Réglages rapides qui est mentionné à plusieurs reprises ici. La lampe de poche ne fonctionne pas non plus avec les réglages rapides.
Notez que la Galaxy Tab stil utilise Android 2.2. Je vois qu'il y a eu quelques changements entre la 2.2 et la 2.3.
Commentaire : Je sais que cela doit fonctionner d'une manière ou d'une autre car j'ai trouvé d'autres applications sur le marché qui fonctionnent parfaitement avec le Galaxy Tab.
Commentaire 2 : Si je configure cam.setParameters(p) ; et demande directement à la caméra l'état actuel avec getFlashMode(), elle renvoie correctement FLASH_MODE_TORCH. Cependant, si je relâche la caméra et la rouvre, elle renvoie FLASH_MODE_OFF. C'est presque comme si l'objet Caméra reconnaissait la demande mais ne la transmettait pas vraiment au matériel !
--
Après le commentaire de Konstantins, j'ai supprimé la partie cam.release() ;. Il a raison, les paramètres ne sont pas persistants si vous relâchez la caméra. Si vous utilisez à nouveau cam.open(), vous obtiendrez une nouvelle instance avec la lumière éteinte. La lumière ne fonctionne toujours pas sur la galaxy tab. Donc, je suppose qu'il est difficile de garder la lumière allumée si vous essayez de la contrôler via un widget. Dès que le service de fond est terminé, l'objet caméra est libéré automatiquement et donc la lumière s'éteint à nouveau. Mes questions demeurent, notamment pourquoi la caméra ne s'allume pas en premier lieu.