Utilisation de la caméra lampe de poche sous Android

Je suis en train d'utiliser les caméras de lampe-torche de LED dans un widget. J'ai trouvé plusieurs threads à ce sujet (c'est à dire l'un mentionné plus tard..) , je suis en train de contrôler la lumière à l'aide de:

Camera cam = Camera.open();     
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.release();

Dans le AndroidManifest.xml essayé différentes autorisations, 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 ça sur mon Galaxy Tab que je n'ai pas d'autres appareils Android à portée de main: la lumière ne s'allume pas. J'ai donc quelques questions maintenant:

  1. Est-il un moyen de tester la led comportement de la lumière dans l'Émulateur?
  2. Je fais quelque chose de mal ici?
  3. Selon cette question qui traite le même problème, il fonctionne différemment sur la Galaxy Tab. Comment?
  4. Et enfin, si elle ne fonctionne différemment, je commence à me demander si c'est juste de la Galaxy Tab ou si d'autres périphériques utilisation de différentes méthodes de trop. Il serait difficile de test, et il semble plutôt étrange pour moi.

Merci pour toute perspicacité!

En passant, j'ai rapidement testé avec rapide-paramètres de qui obtient mentionné à quelques reprises ici. La lampe de poche ne fonctionne pas avec rapide des paramètres.

Noter que les Galaxy Tab stil utilise android 2.2. Je vois certains changements ont eu lieu entre 2.2 et 2.3.

Commentaire:
Je sais que c'est de travailler en quelque sorte que j'ai trouvé d'autres applications sur le marché qui fonctionnent parfaitement avec la Galaxy Tab.

Commentaire 2:
Si j'ai mis la cam.setParameters(p); et de demander directement à l'appareil photo de l'état actuel avec getFlashMode (), elle renvoie correctement FLASH_MODE_TORCH. Cependant, si je sors l'appareil photo et ouvrez-la à nouveau, il retourne FLASH_MODE_OFF. C'est presque comme si l'objet Caméra reconnaît la demande mais ne parvient pas à passer sur le matériel!?

--

Après Konstantins commentaire, j'ai enlevé le cam.release(); partie. Il est droit, les paramètres ne sont pas conservées si vous relâchez la caméra. Si vous utilisez cam.open() de nouveau, vous obtiendrez une nouvelle instance avec la lumière. La lumière ne fonctionne toujours pas sur le galaxy tab bien.
Donc, je suppose que c'est dur de garder la lumière sur si vous essayez de le contrôler par le biais d'un widget, puis. Dès que le service d'arrière-plan est terminé, l'appareil photo de l'objet est automatiquement libéré et, par conséquent, la lumière s'éteint à nouveau. Mes questions restent encore, surtout pourquoi l'appareil photo ne s'allume pas en premier lieu.

  • Même moi, je voulais savoir comment faire cela. Upvoted!
  • Je n'ai pas d'idées, mais si vous ne pouvez pas trouver une solution, vous pouvez télécharger l'une des applications de lampe de poche sur le marché et essayer de le décompiler.
  • Eh bien, avant que je commence l'ingénierie inverse quelqu'code, j'aimerais vraiment que certains de plus de connaissances à partir des codeurs sur stackoverflow 😉
  • De ce qu'un souvenir tout à fait un peu de torche applications nécessaires certaines modifications à travailler avec l'Onglet. Vous pourriez peut-être contacter le développeur d'une app lampe de poche qui fonctionne sur l'Onglet et demander à ce que (le cas échéant) modifications qu'ils avaient à faire pour obtenir leur code de travail sur l'Onglet.
  • Salut! Je n'ai jamais essayé de jouer avec la lampe de poche, mais j'utilise cette application pour mon nexus one qui est open source : code.google.com/p/torch. Peut-être que vous pourriez essayer pour voir si ils ont une approche ... bonne chance!
  • Earl: Il ressemble vraiment à elle. Je vais voir si je peux obtenir un autre appareil Android afin de tester les différentes beavhior. J'ai aussi essayé l'application "LED Lumière", avec qui la Galaxy Tab fonctionne. Cependant, la lumière s'éteint au bout de quelques secondes si elle est activée via le widget. En fait, cela confirme mes hypothèses, j'ai écrit dans mon dernier plus. Je vais essayer de contacter l'auteur. Si je ne reçois pas de réponse (pas tous codeur aime partager..), je vais certainement ajouter ici.
  • très joli, merci pour le lien. Je n'ai pas trouvé que l'on pas encore. En fait, cela n'a pas l'air trop mauvais. La seule chose nouvelle dans le code est le WakeLock! Jamais considéré cela, essayer quelques choses de cet exemple.
  • Juste testé le Flambeau. Ne fonctionne pas correctement avec la Galaxy Tab soit. L'appareil correctement renvoie les modes pris en charge (y compris la Torche) si.
  • Juste pour information: Motorola Defy listes modes flash suivants: [off, on, auto, lampe de poche] - et il n'y a certainement pas de standard de la façon dont ils ont à travailler, et dont les modes sont fournis par différents dispositifs
  • Pourquoi êtes-vous en faveur de la caméra.release() après l'activation de la lampe de poche sur?
  • Je ne suis pas plus. Voir le dernier paragraphe dans le post initial. Merci pour le commentaire si!
  • Avez-vous jamais obtenir ce travail? Je vais avoir le même problème avec le Samsung Galaxy S5. Je suis réglage de la flamme; les paramètres montre le flash-mode=torche; il fonctionne sur tous les autres de téléphone, c'est comme la caméra événement à ne pas me faire virer ou que l'appareil est en ignorant ma commande. Mais je sais qu'il doit travailler, parce que je suis en cours d'exécution OpenCamera sur le Samsung Galaxy S5 et qui fonctionne quand la torche est allumée. Je ne vois pas la différence entre mon code et le leur. Connaissez-vous le tour de magie?

InformationsquelleAutor pgruetter | 2011-03-31