Je veux activer la lumière du flash avant (pas avec l'aperçu de l'appareil photo) par programme dans Android. J'ai cherché sur Google, mais l'aide que j'ai trouvée m'a renvoyé à cette page
Quelqu'un at-il des liens ou un exemple de code?
la source
Je veux activer la lumière du flash avant (pas avec l'aperçu de l'appareil photo) par programme dans Android. J'ai cherché sur Google, mais l'aide que j'ai trouvée m'a renvoyé à cette page
Quelqu'un at-il des liens ou un exemple de code?
Pour ce problème, vous devez:
Vérifiez si la lampe de poche est disponible ou non?
Si c'est le cas, désactivez / activez
Sinon, vous pouvez faire quoi que ce soit, selon les besoins de votre application.
Pour vérifier la disponibilité du flash dans l'appareil:
Vous pouvez utiliser les éléments suivants:
context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
qui retournera vrai si un flash est disponible, faux sinon.
Voir:
http://developer.android.com/reference/android/content/pm/PackageManager.html pour plus d'informations.
Pour allumer / éteindre la lampe de poche:
Je suis allé sur Google et j'ai obtenu ceci sur android.permission.FLASHLIGHT. La permission des manifestes Android semble prometteuse:
<!-- Allows access to the flashlight -->
<permission android:name="android.permission.FLASHLIGHT"
android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
android:protectionLevel="normal"
android:label="@string/permlab_flashlight"
android:description="@string/permdesc_flashlight" />
Ensuite, utilisez Camera et définissez Camera.Parameters . Le paramètre principal utilisé ici est FLASH_MODE_TORCH .
par exemple.
Extrait de code pour allumer la lampe de poche de l'appareil photo.
Camera cam = Camera.open();
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
Extrait de code pour éteindre la lumière LED de la caméra.
cam.stopPreview();
cam.release();
Je viens de trouver un projet qui utilise cette autorisation. Vérifiez le code src des paramètres rapides. ici http://code.google.com/p/quick-settings/ (Remarque: ce lien est maintenant rompu)
Pour Flashlight, regardez directement http://code.google.com/p/quick-settings/source/browse/trunk/quick-settings/#quick-settings/src/com/bwx/bequick/flashlight (Remarque: ce lien est maintenant cassé)
Update6 Vous pouvez également essayer d'ajouter une SurfaceView comme décrit dans cette réponse lampe de poche LED sur Galaxy Nexus contrôlable par quelle API? Cela semble être une solution qui fonctionne sur de nombreux téléphones.
Update 5 Major Update
J'ai trouvé un lien alternatif (pour les liens cassés ci-dessus): http://www.java2s.com/Open-Source/Android/Tools/quick-settings/com.bwx.bequick.flashlight.htm Vous pouvez maintenant utiliser ce lien. [Mise à jour: 14/9/2012 Ce lien est maintenant rompu]
Mise à jour 1
Un autre code OpenSource: http://code.google.com/p/torch/source/browse/
Update 2
Exemple montrant comment activer la LED sur un Motorola Droid: http://code.google.com/p/droidled/
Un autre code Open Source:
http://code.google.com/p/covedesigndev/
http://code.google.com/p/search-light/
Mise à jour 3 (Widget pour allumer / éteindre la LED de la caméra)
Si vous souhaitez développer un widget qui allume / éteint la LED de votre appareil photo, vous devez vous référer à ma réponse Widget pour allumer / éteindre la lampe de poche de la caméra dans Android ..
Mise à jour 4
Si vous souhaitez définir l'intensité de la lumière émise par la LED de la caméra, vous pouvez vous reporter à Puis-je modifier l'intensité de la LED d'un appareil Android? poste complet. Notez que seuls les appareils HTC enracinés prennent en charge cette fonctionnalité.
** Problèmes:**
Il y a aussi quelques problèmes lors de l'allumage / extinction de la lampe de poche. par exemple. pour les appareils ne disposant pas FLASH_MODE_TORCH
ou même s'il en a, alors la lampe de poche ne s'allume pas, etc.
En règle générale, Samsung crée de nombreux problèmes.
Vous pouvez vous référer aux problèmes dans la liste ci-dessous:
Utiliser une lampe de poche pour appareil photo dans Android
D'après mon expérience, si votre application est conçue pour fonctionner à la fois en orientation portrait et paysage, vous devez déclarer la variable
cam
comme statique. Sinon,onDestroy()
ce qui est appelé à changer d'orientation, le détruit mais ne libère pas la caméra, il n'est donc pas possible de la rouvrir à nouveau.pour manifester je devais mettre cette ligne
depuis http://developer.android.com/reference/android/hardware/Camera.html
les lignes suggérées ci-dessus ne fonctionnaient pas pour moi.
la source
you need to declare the variable cam as static
Camera
classe,AndroidStudio
faites attention à être uneandroid.hardware
classe ...Dans API 23 ou supérieur (Android M, 6.0)
MODIFICATION SUPPLÉMENTAIRE
Les gens votant toujours pour ma réponse, j'ai donc décidé de publier du code supplémentaire.C'était ma solution pour le problème à l'époque:
la source
J'ai obtenu la lumière AutoFlash avec ci-dessous trois étapes simples.
Dans votre Camera Code, procédez de cette façon.
Build + Run -> Maintenant, allez dans la zone de faible luminosité et prenez une photo, vous devriez obtenir une lumière flash automatique si l'appareil le prend en charge.
la source
Android Lollipop a présenté l' API camera2 et déconseillé la précédente API camera. Cependant, l'utilisation de l'API obsolète pour activer le flash fonctionne toujours et est beaucoup plus simple que d'utiliser la nouvelle API.
Il semble que la nouvelle API soit destinée à être utilisée dans des applications de caméra complètes et dédiées et que ses architectes n'aient pas vraiment envisagé des cas d'utilisation plus simples tels que l'allumage de la lampe de poche. Pour ce faire maintenant, il faut obtenir un CameraManager, créer une CaptureSession avec une Surface factice, et enfin créer et démarrer une CaptureRequest. Gestion des exceptions, nettoyage des ressources et longs rappels inclus!
Pour voir comment allumer la lampe de poche sur Lollipop et les plus récentes, jetez un œil au FlashlightController dans le projet AOSP (essayez de trouver les API d'utilisation les plus récentes et les plus anciennes qui ont été modifiées). N'oubliez pas de définir les autorisations nécessaires.
Android Marshmallow a finalement introduit un moyen simple d'activer le flash avec setTorchMode .
la source
Code complet pour Android Flashlight App
Manifeste
XML
MainActivity.java
la source
Il existe différentes façons d'accéder à Camera Flash dans différentes versions d'Android. Peu d'API ont cessé de fonctionner dans Lollipop, puis elles ont été modifiées à nouveau dans Marshmallow. Pour surmonter cela, j'ai créé une bibliothèque simple que j'utilise dans peu de mes projets et qui donne de bons résultats. Il est encore incomplet, mais vous pouvez essayer de vérifier le code et trouver les pièces manquantes. Voici le lien - NoobCameraFlash .
Si vous souhaitez simplement l'intégrer dans votre code, vous pouvez utiliser gradle pour cela. Voici les instructions (tirées directement du fichier Lisezmoi) -
Étape 1. Ajoutez le référentiel JitPack à votre fichier de build. Ajoutez-le dans votre build.gradle racine à la fin des référentiels:
Étape 2. Ajoutez la dépendance
Usage
Initialisez le
NoobCameraManager
singleton.Vous pouvez éventuellement définir le niveau de journalisation pour la journalisation du débogage. La journalisation utilise la bibliothèque LumberJack . Le LogLevel par défaut est
LogLevel.None
Après cela, il vous suffit d'appeler le singleton pour activer ou désactiver le flash de l'appareil photo.
Il est également facile de basculer Flash
la source
You have to take care of the runtime permissions to access Camera yourself, before initializing the NoobCameraManager. In version 0.1.2 or earlier we used to provide support for permissions directly from the library, but due to dependency on the Activity object, we have to remove it.
J'ai implémenté cette fonction dans mon application via des fragments utilisant SurfaceView. Le lien vers cette question de stackoverflow et sa réponse peuvent être trouvés ici
J'espère que cela t'aides :)
la source
Dans Marshmallow et au-dessus, `setTorchMode () 'de CameraManager semble être la réponse. Cela fonctionne pour moi:
la source
Essaye ça.
la source
Vous pouvez également utiliser le code suivant pour désactiver le flash.
la source