Tutoriel [Tuto Application] Créer une application Lampe Torche

  • Auteur de la discussion Valentin
  • Date de début
Valentin

Valentin

Moderateur Global
Inscrit
20 Février 2013
Messages
7 829
Points
48
  • #1

Ce tutoriel va vous montrer comment créer une application lampe torche (qui allume et éteint votre flash)​

======================================================================================

Le logiciel que nous allons utiliser pour créer cet application, s’appelle Android Studio mais vous pouvez aussi prendre le logiciel Eclipse avec le plug-in ADT, puisque le code est le même.




Tout d'abord, créer une nouveau projet File > New > Android Application Project

Une fois le projet crée, ouvrez le fichier AndroidManifest.xml et ajouter ces deux lignes :

PHP:
S'il vous plaît, Connexion ou S'inscrire to view codes content!
Insérez les juste avant la balise <application>.....</application>



Ensuite pour ce qui est de l'interface graphique, nous allons faire un bouton qui prend la dimension de l'écran et une barre d'état du flash (allumé ou éteint)

Ce qui donne :
Code:
S'il vous plaît, Connexion ou S'inscrire to view codes content!
La partie est assez simple, puisqu'il n'y a que deux éléments (un bouton et une zone conteneur)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Maintenant passons à la partie code.

Déclarons nos deux éléments, créé précédemment :
PHP:
S'il vous plaît, Connexion ou S'inscrire to view codes content!
ainsi que la variable pour le flash et l'état du flash :
PHP:
S'il vous plaît, Connexion ou S'inscrire to view codes content!
Ces 4 variables doivent être mis avant le onCreate.


Dans le onCreate, associons nos variables aux élément correspondant :
PHP:
S'il vous plaît, Connexion ou S'inscrire to view codes content!

Avant tout, vérifions si le téléphone possède un flash :
PHP:
S'il vous plaît, Connexion ou S'inscrire to view codes content!

Déclarons les paramètres du flash :
PHP:
S'il vous plaît, Connexion ou S'inscrire to view codes content!

Et le plus important, l'action lors du clique sur le bouton :
PHP:
S'il vous plaît, Connexion ou S'inscrire to view codes content!

Et voila !



        
J'ai choisis de faire un bouton qui prend tout l'écran et de fond noir, puisque généralement, nous utilisons la lampe quand il fait noir donc inutile que l'écran fasse de la lumière en y mettant un fond banc mais libre à vous de le modifier :wink:




Téléchargement du projet
S'il vous plaît, Connexion ou S'inscrire pour voir le contenu ou les urls !
 
L

lohanbarth

  • #2
Re: [Tuto Application] Application Lampe Torche

Salut Val :hello: et merci pour ce tuto.
 
Valentin

Valentin

Moderateur Global
Inscrit
20 Février 2013
Messages
7 829
Points
48
  • #3
Re: [Tuto Application] Application Lampe Torche

De rien.

100% fonctionnelle.
 
L

lohanbarth

  • #4
Je pourrais pas l'essayer car mes phones, on la torche d'origine dans le menu déroulant :oops:
 
Valentin

Valentin

Moderateur Global
Inscrit
20 Février 2013
Messages
7 829
Points
48
  • #5
C'est juste une application, accessible toutes version d'android.
 
L

lohanbarth

  • #6
Je testerai dés que j'aurais un peu de temps, car en plein déménagement.
Encore merci :merci: .
 
K

kezako12

Membre
Inscrit
25 Décembre 2016
Messages
4
Points
0
  • #7
Bonjour,

Je me lance dans les applis Android et j'ai installé votre appli sous Android Studio 2.2. Je compile avec la version 17 de l'API (Android 4.2).
Malheureusement, je ne parviens pas à allumer le flash sur mon téléphone (Samsung Galaxy A3). Je n'ai pas d'autre appareil sous la main pour essayer...
- Je n'ai aucune erreur de compilation
- J'ai mis en place des log console pour vérifier la réponse de l'appareil quand je "clique" sur l'écran du genre "Log.i("etat ", p.getFlashMode());", l'appareil répond bien "off" ou "torch" selon que la barre d'état en bas de l'écran est blanche ou grise.

Tout cela sans succès :?

Pour info, j'avais téléchargé une appli sur google play store qui fait la même chose et ça fonctionnait.

Auriez-vous une piste ?

Merci
 
Valentin

Valentin

Moderateur Global
Inscrit
20 Février 2013
Messages
7 829
Points
48
  • #8
Salut,

à l'époque quand j'avais fait ce tuto, tout fonctionnait sur mon tél.
Essaye d'afficher en log setFlashMode(Parameters.FLASH_MODE_OFF) afin de voir.

Sinon, pour apprendre, il n'y a pas tellement de cours sur ce forum.
J'avais fait à l'époque ce tutoriel et les tutoriels pour installer les IDE mais sinon rien d'autre.
 
K

kezako12

Membre
Inscrit
25 Décembre 2016
Messages
4
Points
0
  • #9
Salut merci pour ta réponse.

J'ai mis des log dans les deux blocs (on et off) comme ceci :

if (isFlashOn) {
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
isFlashOn = false;
Log.i("etat ", p.getFlashMode());
blanc.setBackgroundColor(Color.rgb(51, 51, 51));
} else {
blanc.setBackgroundColor(Color.WHITE);
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
isFlashOn = true;
Log.i("etat ", p.getFlashMode());
}

et dans la console, quand je commute on/off, j'ai une réponse du téléphone : "torch" ou "off",

01-06 18:28:33.733 19454-19454/com.prgguru.com D/ViewRootImpl: ViewPostImeInputStage processPointer 0
01-06 18:28:33.813 19454-19454/com.prgguru.com D/ViewRootImpl: ViewPostImeInputStage processPointer 1
01-06 18:28:33.823 19454-19454/com.prgguru.com I/etat: torch
01-06 18:28:36.763 19454-19454/com.prgguru.com D/ViewRootImpl: ViewPostImeInputStage processPointer 0
01-06 18:28:36.833 19454-19454/com.prgguru.com D/ViewRootImpl: ViewPostImeInputStage processPointer 1
01-06 18:28:36.843 19454-19454/com.prgguru.com I/etat: off

Je n'ai aucun message d"erreur à la compilation, mais il refuse obstinément d'allumer sa lampe !! mad1 mad1
 
Valentin

Valentin

Moderateur Global
Inscrit
20 Février 2013
Messages
7 829
Points
48
  • #10
Tu as bien mis les deux lignes dans le fichier manifest ?

Ce n'est pas Log.d ? Il doit apparaitre dans l'onglet Logcat je crois.
 
K

kezako12

Membre
Inscrit
25 Décembre 2016
Messages
4
Points
0
  • #11
Yes, les deux lignes dans le Manifest.xml :

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />

Le résultat du Log.i (ou Log.d) apparait dans la console Logcat :

quand je commande l'allumage de la led, le téléphone me renvoie :
01-06 18:28:33.823 19454-19454/com.prgguru.com I/etat: torch

quand j'éteins :
01-06 18:28:36.843 19454-19454/com.prgguru.com I/etat: off

Ce qui me fait dire que le programme fonctionne, le téléphone répond, mais le flash refuse des s'allumer !
Peut-être il y a-t-il une configuration à modifier dans le téléphone ? Je vais tenter avec un autre appareil pour voir...
 
Valentin

Valentin

Moderateur Global
Inscrit
20 Février 2013
Messages
7 829
Points
48
  • #12
Alors la je ne sais pas pourquoi.

Ok pour un autre appareil, j’attends de voir si cela fonctionne :wink:
 
K

kezako12

Membre
Inscrit
25 Décembre 2016
Messages
4
Points
0
  • #13
J'ai trouvé !! :frime1:

En fouillant la doc developer.android.com autour de la classe Camera et de ses méthodes, j'ai trouvé ceci :

"Important: Call startPreview() to start updating the preview surface. Preview must be started before you can take a picture."

Bon, là il ne s'agit pas de filmer quoi que ce soit bien sûr, mais ayant vu cette méthode utilisée dans une autre appli qui fait la même chose, je me suis dit que les versions récentes Android (j'ai la V6 sur mon appareil) demandent peut-être que cette méthode soit appelée pour activer le flash...
Un peu au pif, je dois l'avouer, mais en tout cas ça fonctionne pour moi.

L'explication rationnelle existe, il faut la trouver...

J'ai donc ajouté la méthode stopPreview() à la condition if (isFlashOn) et la méthode startPreview() à la condition else dans le listener du bouton...
 
Valentin

Valentin

Moderateur Global
Inscrit
20 Février 2013
Messages
7 829
Points
48
  • #14
Merci à toi pour l'explication :super:

Et content que tu es réussi :wink:
 
Haut Bas