<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BunjiX &#187; Développement</title>
	<atom:link href="http://bunjix.fr/tag/developpement/feed" rel="self" type="application/rss+xml" />
	<link>http://bunjix.fr</link>
	<description>Expert Mobile - Android, iPhone, Windows Mobile</description>
	<lastBuildDate>Tue, 13 Apr 2010 12:05:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Développement iPad étape par étape</title>
		<link>http://bunjix.fr/developpement-ipad-etape-par-etape/352</link>
		<comments>http://bunjix.fr/developpement-ipad-etape-par-etape/352#comments</comments>
		<pubDate>Tue, 13 Apr 2010 12:05:24 +0000</pubDate>
		<dc:creator>bunjX</dc:creator>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[iPad Etape par Etape]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://bunjix.fr/?p=352</guid>
		<description><![CDATA[Cela fait quelques jours que je me forme serieusement au développement iPad. J&#8217;ai trouver des vidéos de formations en français très bien réalisées chez slbconseils, et puis pour le reste il y a la documentation d&#8217;Apple (pas très intuitive à mon gout).
Du coup avec l&#8217;ami GuyTouch d&#8217;Android-France, on a eu l&#8217;idée de se faire un [...]]]></description>
			<content:encoded><![CDATA[<p>Cela fait quelques jours que je me forme serieusement au développement iPad. J&#8217;ai trouver des vidéos de formations en français très bien réalisées chez <a href="http://www.slbconseils.fr/">slbconseils</a>, et puis pour le reste il y a la <a title="Documentation Apple développement iPad, iPhone, iPod Touch" href="http://developer.apple.com/iphone/index.action">documentation d&#8217;Apple</a> (pas très intuitive à mon gout).</p>
<p>Du coup avec l&#8217;ami <a title="GuyTouch - d'Android France" href="http://www.guytouch.fr/">GuyTouch</a> d&#8217;<a title="Android-France" href="http://android-france.fr">Android-France</a>, on a eu <a href="http://android-france.fr/2010/04/13/developpement-archos-android-versus-ipad-iphone-introduction/">l&#8217;idée de se faire un jeu d&#8217;échecs simple</a> et de poster des articles relatant nos difficultés, des tutoriels, des bout de codes, ou tout simplement des conseils. GuyTouch pour la partie Android, et moi pour la partie iPad (peut être aussi iPhone si j&#8217;ai le temps).</p>
<p>Bref, il en parle mieux que moi ici : <a href="http://android-france.fr/2010/04/13/developpement-archos-android-versus-ipad-iphone-introduction/">http://android-france.fr/2010/04/13/developpement-archos-android-versus-ipad-iphone-introduction/</a></p>
<p>La suite dans le prochain article.</p>
]]></content:encoded>
			<wfw:commentRss>http://bunjix.fr/developpement-ipad-etape-par-etape/352/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tutoriel &#124; Faire vibrer le téléphone et lire mp3 au moment du reveil</title>
		<link>http://bunjix.fr/tutoriel-faire-vibrer-le-telephone-et-lire-mp3-au-moment-du-reveil/301</link>
		<comments>http://bunjix.fr/tutoriel-faire-vibrer-le-telephone-et-lire-mp3-au-moment-du-reveil/301#comments</comments>
		<pubDate>Thu, 07 Jan 2010 09:45:57 +0000</pubDate>
		<dc:creator>bunjX</dc:creator>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://bunjix.fr/?p=301</guid>
		<description><![CDATA[On m&#8217;a demandé il y a quelque temps de faire un complement du tutoriel sur le développement d&#8217;un réveil. Dans ce tutoriel j&#8217;expliquais comment créer un réveil à une heure voulue. Le manque était qu&#8217;au réveil, il y avait juste un message qui s&#8217;affichait (c&#8217;était juste pour illustrer le tutoriel).
On va donc maintenant voir en [...]


Dans le même style ::<ol><li><a href='http://bunjix.fr/developpez-votre-propre-reveil-alarme-pour-smart-phone-android/180' rel='bookmark' title='Permanent Link: Développez votre propre réveil pour android'>Développez votre propre réveil pour android</a></li>
<li><a href='http://bunjix.fr/utiliser-le-chronometre-dans-ses-applications-android/142' rel='bookmark' title='Permanent Link: Utiliser le chronomètre dans ses applications Android'>Utiliser le chronomètre dans ses applications Android</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>On m&#8217;a demandé il y a quelque temps de faire un complement du tutoriel sur <a href="http://bunjix.fr/developpez-votre-propre-reveil-alarme-pour-smart-phone-android/180">le développement d&#8217;un réveil</a>. Dans ce tutoriel j&#8217;expliquais comment créer un réveil à une heure voulue. Le manque était qu&#8217;au réveil, il y avait juste un message qui s&#8217;affichait (c&#8217;était juste pour illustrer le tutoriel).</p>
<p>On va donc maintenant voir en deux parties comment ajouter des vibrations et du son.</p>
<h2>Vibrations</h2>
<h4>Code</h4>
<p>Pour ajouter des vibrations lors du reveil il faut ajouter ce morceau de code (toujours dans la <em><span style="font-style: normal;">méthode </span><a href="http://developer.android.com/reference/android/content/BroadcastReceiver.html#onReceive(android.content.Context, android.content.Intent)">onReceive</a></em>):</p>
<pre class="brush: java;">
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
//vibre pendant 1 seconde, puis attend 1/2 secondes avant de recommencer.
vibrator.vibrate(new long[]{0,1000,500,1000,2000}, -1);
// ou vibre pendant 2 secondes.
//vibrator.vibrate(2000);
</pre>
<h4>Explication</h4>
<ol>
<li>On récupère une instance du service <a href="http://developer.android.com/reference/android/os/Vibrator.html">Vibrator</a>.</li>
<li>Pour faire vibrer le smartphone, il existe plusieurs surcharges de la méthode vibrate:
<ol>
<li>Faire vibrer pendant x secondes : vibrator.vibrate(x*1000); <a href="http://developer.android.com/reference/android/os/Vibrator.html#vibrate(long)">lien vers la doc</a>.</li>
<li>Faire vibrer en suivant un pattern : vibrator.vibrate(new long[]{0,1000,500,1000,2000}, -1); <a href="http://developer.android.com/reference/android/os/Vibrator.html#vibrate(long[], int)">lien vers la doc</a>
<ol>
<li>Ici on fait vibrer de 0 à 1 seconde, puis une pause d&#8217;1/2 seconde, puis on recommence pendant 1 seconde.</li>
<li>Le second paramètre correspond au nombre de fois que l&#8217;on doit répéter la séquence (-1 pour ne pas répéter).</li>
</ol>
</li>
</ol>
</li>
</ol>
<h2>Son</h2>
<h4>Code</h4>
<p>Pour ajouter un son il faut déjà ajouter dans le répertoire res/raw (ou créer ce repertoire si il n&#8217;existe pas encore)  le fichier son que vous voulez lire. Ensuite, ajouter le code (toujours dans la méthode onRecive):</p>
<pre class="brush: java;">

final MediaPlayer mp = MediaPlayer.create(context, R.raw.fichier_son);
mp.start();
Handler h = new Handler(){
	@Override
	public void handleMessage(Message msg) {
		if(msg.what==0){
			mp.stop();
		}
		super.handleMessage(msg);
	}
};
Message m = new Message();
m.what = 0;
h.sendMessageDelayed(m, 10000);
</pre>
<h4>Explication</h4>
<ol>
<li>On commence par créer un objet <a href="http://developer.android.com/reference/android/media/MediaPlayer.html">MediaPlayer</a> à partir du context et du fichier de resource.</li>
<li>Puis on lance le son avec la méthode start();</li>
<li>Pour aller plus loin, j&#8217;ai ajouté un handler qui permet de stopper la lecture après 10 secondes en utilisant un <a href="http://developer.android.com/reference/android/os/Handler.html">Handler</a>.</li>
</ol>


<p>Dans le même style ::<ol><li><a href='http://bunjix.fr/developpez-votre-propre-reveil-alarme-pour-smart-phone-android/180' rel='bookmark' title='Permanent Link: Développez votre propre réveil pour android'>Développez votre propre réveil pour android</a></li>
<li><a href='http://bunjix.fr/utiliser-le-chronometre-dans-ses-applications-android/142' rel='bookmark' title='Permanent Link: Utiliser le chronomètre dans ses applications Android'>Utiliser le chronomètre dans ses applications Android</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://bunjix.fr/tutoriel-faire-vibrer-le-telephone-et-lire-mp3-au-moment-du-reveil/301/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JewCal, date et fêtes juives sur votre Android</title>
		<link>http://bunjix.fr/jewcal-date-et-fetes-juives-sur-votre-android/225</link>
		<comments>http://bunjix.fr/jewcal-date-et-fetes-juives-sur-votre-android/225#comments</comments>
		<pubDate>Mon, 21 Dec 2009 15:31:55 +0000</pubDate>
		<dc:creator>bunjX</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Réalisations]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Judaïsme]]></category>

		<guid isPermaLink="false">http://bunjix.fr/?p=225</guid>
		<description><![CDATA[
En ce début de semaine je vous présente ma nouvelle application Android : &#171;&#160;JewCal&#160;&#187;.
Cette application se décompose en 2 onglets :
Le premier permet de convertir les dates du calendrier géorgien au format hébraïque. De plus, vous y trouverez les informations essentielles à toute personne pratiquant la religion, à savoir  la prochaine fête à venir (ou [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bunjix.fr/wp-content/uploads/2009/12/icon.png"><img class="size-full wp-image-226" title="icon" src="http://bunjix.fr/wp-content/uploads/2009/12/icon.png" alt="" width="48" height="48" /></a><br />
En ce début de semaine je vous présente ma nouvelle application Android : &laquo;&nbsp;JewCal&nbsp;&raquo;.<br />
Cette application se décompose en 2 onglets :</p>
<p>Le premier permet de convertir les dates du calendrier géorgien au format hébraïque. De plus, vous y trouverez les informations essentielles à toute personne pratiquant la religion, à savoir  la prochaine fête à venir (ou celle en cours), ainsi que le nom de la paracha de la semaine.</p>
<p>Sur un second onglet, vous pourez consulter la liste des dates des fêtes juive de chaque année.</p>
<p>D&#8217;autres fonctionnalités sont à venir comme par exemple les horaires de début, fin et allumage des bougies de shabat et les descriptifs de fêtes.</p>
[[Show as slideshow]]
<p>Je suis ouvert à toute proposition et suggestion pour améliorer et completer cette application.</p>
]]></content:encoded>
			<wfw:commentRss>http://bunjix.fr/jewcal-date-et-fetes-juives-sur-votre-android/225/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Développez un splash screen pour vos applications Android</title>
		<link>http://bunjix.fr/developpez-un-splash-screen-pour-vos-applications-android/193</link>
		<comments>http://bunjix.fr/developpez-un-splash-screen-pour-vos-applications-android/193#comments</comments>
		<pubDate>Mon, 30 Nov 2009 15:22:05 +0000</pubDate>
		<dc:creator>bunjX</dc:creator>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[android-france]]></category>
		<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://bunjix.fr/?p=193</guid>
		<description><![CDATA[Voici un troisième tutoriel de développement Android et le deuxième à la demande d&#8217; Android-France (voir le précedent)
Ce tutoriel concerne l&#8217;implementation d&#8217;un splash screen. Un splash screen est un écran que l’on place au lancement de l’application et qui dans la plupart des cas permet de faire des traitements de type chargement de donnée, ou [...]


Dans le même style ::<ol><li><a href='http://bunjix.fr/developpez-votre-propre-reveil-alarme-pour-smart-phone-android/180' rel='bookmark' title='Permanent Link: Développez votre propre réveil pour android'>Développez votre propre réveil pour android</a></li>
<li><a href='http://bunjix.fr/utiliser-le-chronometre-dans-ses-applications-android/142' rel='bookmark' title='Permanent Link: Utiliser le chronomètre dans ses applications Android'>Utiliser le chronomètre dans ses applications Android</a></li>
<li><a href='http://bunjix.fr/developpement-ipad-etape-par-etape/352' rel='bookmark' title='Permanent Link: Développement iPad étape par étape'>Développement iPad étape par étape</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Voici un troisième tutoriel de développement Android et le deuxième à la demande d&#8217; <a title="Android-France" href="http://android-france.fr/">Android-France</a> (<a title="Développez votre réveil - Tutoriel #2" href="http://bunjix.fr/developpez-votre-propre-reveil-alarme-pour-smart-phone-android/">voir le précedent</a>)</p>
<p>Ce tutoriel concerne l&#8217;implementation d&#8217;un splash screen. Un splash screen est un écran que l’on place au lancement de l’application et qui dans la plupart des cas permet de faire des traitements de type chargement de donnée, ou tout simplement affichage tel que le nom de l’éditeur avec son logo etc.</p>
<p>Bref, pour le tutoriel, cela se passe sur <a title="Tutoriel Android -Développez un splash screen pour vos applications" href="http://android-france.fr/2009/11/30/developpez-un-splash-screen-pour-vos-applications/">android-france</a>.</p>
<p>Si vous aussi vous voulez proposer un tutoriel ou une idée de tutoriel, n&#8217;hésitez pas à remplir le petit formulaire sur la droite.</p>


<p>Dans le même style ::<ol><li><a href='http://bunjix.fr/developpez-votre-propre-reveil-alarme-pour-smart-phone-android/180' rel='bookmark' title='Permanent Link: Développez votre propre réveil pour android'>Développez votre propre réveil pour android</a></li>
<li><a href='http://bunjix.fr/utiliser-le-chronometre-dans-ses-applications-android/142' rel='bookmark' title='Permanent Link: Utiliser le chronomètre dans ses applications Android'>Utiliser le chronomètre dans ses applications Android</a></li>
<li><a href='http://bunjix.fr/developpement-ipad-etape-par-etape/352' rel='bookmark' title='Permanent Link: Développement iPad étape par étape'>Développement iPad étape par étape</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://bunjix.fr/developpez-un-splash-screen-pour-vos-applications-android/193/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Développez votre propre réveil pour android</title>
		<link>http://bunjix.fr/developpez-votre-propre-reveil-alarme-pour-smart-phone-android/180</link>
		<comments>http://bunjix.fr/developpez-votre-propre-reveil-alarme-pour-smart-phone-android/180#comments</comments>
		<pubDate>Thu, 26 Nov 2009 09:08:37 +0000</pubDate>
		<dc:creator>bunjX</dc:creator>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[android-france]]></category>
		<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://bunjix.fr/?p=180</guid>
		<description><![CDATA[J&#8217;ai été invité par Android-France à rédiger le tutoriel Android que voici.
Le tutoriel ci dessous permet d&#8217;avoir un aperçu vraiment global du service de gestion d&#8217;alarme d&#8217;Android, l &#8216;AlarmManager.
Dans ce tutoriel vous retrouverez donc des utilisations des classes et interfaces suivantes :

AlarmManager : Classe qui donne accès au service d&#8217;alarme du systeme. Permet de programmer [...]


Dans le même style ::<ol><li><a href='http://bunjix.fr/developpez-un-splash-screen-pour-vos-applications-android/193' rel='bookmark' title='Permanent Link: Développez un splash screen pour vos applications Android'>Développez un splash screen pour vos applications Android</a></li>
<li><a href='http://bunjix.fr/tutoriel-faire-vibrer-le-telephone-et-lire-mp3-au-moment-du-reveil/301' rel='bookmark' title='Permanent Link: Tutoriel | Faire vibrer le téléphone et lire mp3 au moment du reveil'>Tutoriel | Faire vibrer le téléphone et lire mp3 au moment du reveil</a></li>
<li><a href='http://bunjix.fr/utiliser-le-chronometre-dans-ses-applications-android/142' rel='bookmark' title='Permanent Link: Utiliser le chronomètre dans ses applications Android'>Utiliser le chronomètre dans ses applications Android</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai été invité par <a title="Android-France" href="http://android-france.fr">Android-France</a> à rédiger le tutoriel Android que voici.</p>
<p>Le tutoriel ci dessous permet d&#8217;avoir un aperçu vraiment global du service de gestion d&#8217;alarme d&#8217;Android, l &#8216;<a title="AlarmManager" href="http://developer.android.com/reference/android/app/AlarmManager.html">AlarmManager</a>.</p>
<p>Dans ce tutoriel vous retrouverez donc des utilisations des classes et interfaces suivantes :</p>
<ul>
<li><a title="AlarmManager - Android Developer" href="http://developer.android.com/reference/android/app/AlarmManager.html">AlarmManager</a> : Classe qui donne accès au service d&#8217;alarme du systeme. Permet de programmer l&#8217;éxécution d&#8217;un code à un moment précis.</li>
<li><a title="BroadcastReceiver - Android Developer" href="http://developer.android.com/reference/android/content/BroadcastReceiver.html">BroadcastReceiver</a> : Classe qui reçois le code à exécuter après le déclenchement d&#8217;un évènement (ici au déclenchement du réveil).</li>
<li><a title="Serializable - Android Developer" href="http://developer.android.com/reference/java/io/Serializable.html">Serializable</a> : Interface qui permet de la sérialization d&#8217;un objet c&#8217;est à dire sa sauvegarde sous forme de fichier.</li>
<li><a title="TimePickerDialog - Android Developer" href="http://developer.android.com/reference/android/app/TimePickerDialog.html">TimePickerDialog</a> : Affiche un dialogue à l&#8217;utilisateur pour lui demander de saisir l&#8217;heure souhaité.</li>
<li><a title="OnTimeSetListener - Android Developer" href="http://developer.android.com/reference/android/app/TimePickerDialog.OnTimeSetListener.html">OnTimeSetListener</a> : Interface a implémenter pour décrire le code à exécuter suite à la saisie de l&#8217;heure.</li>
</ul>
<p>La fonctionnalité qui m&#8217;a vraiment plus dans ce tutoriel et qui est très utile c&#8217;est la possibilité d&#8217;ajouter du code à exécuter au démarrage du téléphone. Dans notre cas présent, pour réactiver le réveil au démarrage du téléphone.</p>
<p>Bref, pour le tutoriel, cela se passe sur <a title="Tutoriel Android - Développez votre propre réveil" href="http://android-france.fr/2009/11/26/developpez-votre-propre-reveil-alarme-avec-votre-android-phone/">android-france</a>.</p>


<p>Dans le même style ::<ol><li><a href='http://bunjix.fr/developpez-un-splash-screen-pour-vos-applications-android/193' rel='bookmark' title='Permanent Link: Développez un splash screen pour vos applications Android'>Développez un splash screen pour vos applications Android</a></li>
<li><a href='http://bunjix.fr/tutoriel-faire-vibrer-le-telephone-et-lire-mp3-au-moment-du-reveil/301' rel='bookmark' title='Permanent Link: Tutoriel | Faire vibrer le téléphone et lire mp3 au moment du reveil'>Tutoriel | Faire vibrer le téléphone et lire mp3 au moment du reveil</a></li>
<li><a href='http://bunjix.fr/utiliser-le-chronometre-dans-ses-applications-android/142' rel='bookmark' title='Permanent Link: Utiliser le chronomètre dans ses applications Android'>Utiliser le chronomètre dans ses applications Android</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://bunjix.fr/developpez-votre-propre-reveil-alarme-pour-smart-phone-android/180/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Utiliser le chronomètre dans ses applications Android</title>
		<link>http://bunjix.fr/utiliser-le-chronometre-dans-ses-applications-android/142</link>
		<comments>http://bunjix.fr/utiliser-le-chronometre-dans-ses-applications-android/142#comments</comments>
		<pubDate>Thu, 19 Nov 2009 11:03:36 +0000</pubDate>
		<dc:creator>bunjX</dc:creator>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://bunjix.fr/?p=142</guid>
		<description><![CDATA[Je commence aujourd&#8217;hui une nouvelle catégorie. Je vais tenter de poster assez fréquement des tutoriels Android sur des problématique que je rencontre moi même pour mes développements.
Pour commencer voici une implémentation du widget Chronometer. Ce widget correspond simplement à un Timer.
Voici à quoi va ressemblé le tutoriel de ce jour :


Commençons par le layout xml [...]


Dans le même style ::<ol><li><a href='http://bunjix.fr/developpez-un-splash-screen-pour-vos-applications-android/193' rel='bookmark' title='Permanent Link: Développez un splash screen pour vos applications Android'>Développez un splash screen pour vos applications Android</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Je commence aujourd&#8217;hui une nouvelle catégorie. Je vais tenter de poster assez fréquement des tutoriels Android sur des problématique que je rencontre moi même pour mes développements.</p>
<p>Pour commencer voici une implémentation du widget <a title="Class android.widget.Chronometer" href="http://developer.android.com/reference/android/widget/Chronometer.html" target="_blank">Chronometer</a>. Ce widget correspond simplement à un Timer.</p>
<p>Voici à quoi va ressemblé le tutoriel de ce jour :</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-159" title="Chronometre" src="http://bunjix.fr/wp-content/uploads/2009/11/chronometre.png" alt="Chronometre" width="224" height="336" /></p>
<p><span id="more-142"></span></p>
<p style="text-align: left;">Commençons par le layout xml :</p>
<p style="text-align: left;">
<pre class="brush: xml;">
&lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
	android:orientation=&quot;vertical&quot; android:layout_width=&quot;fill_parent&quot;
	android:layout_height=&quot;fill_parent&quot;&gt;

	&lt;Chronometer android:layout_width=&quot;wrap_content&quot;
		android:layout_height=&quot;wrap_content&quot; android:textSize=&quot;40dip&quot;
		android:layout_gravity=&quot;center_horizontal&quot; android:id=&quot;@+id/chrono&quot; /&gt;
	&lt;Button android:id=&quot;@+id/Button01&quot; android:layout_height=&quot;wrap_content&quot;
		android:text=&quot;@string/bt_start&quot; android:layout_width=&quot;fill_parent&quot;
		android:layout_marginLeft=&quot;50dip&quot; android:layout_marginRight=&quot;50dip&quot;
		android:onClick=&quot;startChrono&quot; /&gt;
	&lt;Button android:id=&quot;@+id/Button02&quot; android:layout_height=&quot;wrap_content&quot;
		android:text=&quot;@string/bt_stop&quot; android:layout_width=&quot;fill_parent&quot;
		android:layout_marginLeft=&quot;50dip&quot; android:layout_marginRight=&quot;50dip&quot;
		android:onClick=&quot;stopChrono&quot; /&gt;
	&lt;Button android:id=&quot;@+id/Button03&quot; android:layout_height=&quot;wrap_content&quot;
		android:text=&quot;@string/bt_continue&quot; android:layout_width=&quot;fill_parent&quot;
		android:layout_marginLeft=&quot;50dip&quot; android:layout_marginRight=&quot;50dip&quot;
		android:onClick=&quot;continueChrono&quot; /&gt;
	&lt;Button android:id=&quot;@+id/Button04&quot; android:layout_height=&quot;wrap_content&quot;
		android:text=&quot;@string/bt_reset&quot; android:layout_width=&quot;fill_parent&quot;
		android:layout_marginLeft=&quot;50dip&quot; android:layout_marginRight=&quot;50dip&quot;
		android:onClick=&quot;resetChrono&quot; /&gt;
&lt;/LinearLayout&gt;</pre>
<p>Nous avons donc ici 4 boutons (start, stop, continue, reset)  pour le contrôle du widget Chronometer. On peut voir dans ce code l&#8217;utilisation du paramètre</p>
<pre class="brush: plain;">
android:onClick=&quot;startChrono&quot;
</pre>
<p>(ne s&#8217;utilise qu&#8217;a partir de Android 1.6) où <em>startChrono</em> est le nom de la fonction qui va être appelé au clic sur le boutton.</p>
<p>Passons maintenant au code java de la classe principale <em>Chronometre </em>qui est une Activity:</p>
<pre class="brush: java;">
public class Chronometre extends Activity implements OnChronometerTickListener {
   @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ((Chronometer)findViewById(R.id.chrono))
                .setOnChronometerTickListener(this);
    }
</pre>
<p> Notre activity implémente le listener <em>OnChronometerTickListener</em> qui se déclenche à chaque incrément du chronomètre. Voici l&#8217;implémentation de la méthode :</p>
<pre class="brush: java;">
@Override
public void onChronometerTick(Chronometer chronometer) {
	long elapsedTime = SystemClock.elapsedRealtime() - chronometer.getBase();
	int min = (int)(elapsedTime/60000);
	int sec = (int) ((elapsedTime/1000) % 60);
	String time = min&lt;10? &quot;0&quot; + min : String.valueOf(min);
	time += &quot;:&quot;;
	time += sec&lt;10? &quot;0&quot; + sec : String.valueOf(sec);
	((Chronometer)findViewById(R.id.chrono)).setText(time);
}
</pre>
<p>
Pour initialiser un chronomètre il faut lui donnée une date/heure T de départ. Nous verrons plus bas comment, mais ce qu&#8217;on voit ici c&#8217;est que pour récupérer le temps passé (et donc celui à afficher), il faut simplement soustraire la date/heure T de départ avec la date/heure T courante, ce qui s&#8217;illustre avec la ligne 3.<br />
Ensuite le reste n&#8217;est que simple traitement pour afficher le temps écoulé au format que vous voulez.</p>
<p>Dans notre interface nous avons 4 boutons pour le démarrage, l&#8217;arrêt, le reset et le continue, il faut donc implémenter les 4 actions :</p>
</p>
<p><em>startChrono</em> va initialiser le chrono à la date/heure T correspondant au temps passé depuis l&#8217;allumage du smartphone &#8211; <em>SystemClock.elapsedRealtime()</em> puis le démarrer.</p>
<pre class="brush: java;">
public void startChrono(View target) {
	((Chronometer)findViewById(R.id.chrono))
                .setBase(SystemClock.elapsedRealtime());
	((Chronometer)findViewById(R.id.chrono)).start();
}
</pre>
<p>Pour <em>stopChrono</em> et <em>continueChrono</em> pas besoin de commentaire je pense.</p>
<pre class="brush: java;">
public void stopChrono(View target) {
	((Chronometer)findViewById(R.id.chrono)).stop();
}
</pre>
<pre class="brush: java;">
public void continueChrono(View target) {
	((Chronometer)findViewById(R.id.chrono)).start();
}
</pre>
<p><em>resetChrono</em> arrete simplement le chrono, et le réinitialise.</p>
<pre class="brush: java;">
public void resetChrono(View target) {
	((Chronometer)findViewById(R.id.chrono)).stop();
	((TextView)findViewById(R.id.chrono)).setText(&quot;00:00&quot;);
	((Chronometer)findViewById(R.id.chrono))
                .setBase(SystemClock.elapsedRealtime());
}
</pre>
<p>Code complet de notre Activity :</p>
<pre class="brush: java;">
package com.bunjix.tuto.Chronometer;

import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Chronometer;
import android.widget.TextView;
import android.widget.Chronometer.OnChronometerTickListener;

public class Chronometre extends Activity implements OnChronometerTickListener {
   @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ((Chronometer)findViewById(R.id.chrono))
                .setOnChronometerTickListener(this);
    }

	@Override
	public void onChronometerTick(Chronometer chronometer) {
		long elapsedTime = SystemClock.elapsedRealtime() - chronometer.getBase();
		int min = (int)(elapsedTime/60000);
		int sec = (int) ((elapsedTime/1000) % 60);
		String time = min&lt;10? &quot;0&quot; + min : String.valueOf(min);
		time += &quot;:&quot;;
		time += sec&lt;10? &quot;0&quot; + sec : String.valueOf(sec);
		((Chronometer)findViewById(R.id.chrono)).setText(time);
	}

	public void startChrono(View target) {
		((Chronometer)findViewById(R.id.chrono))
                        .setBase(SystemClock.elapsedRealtime());
		((Chronometer)findViewById(R.id.chrono)).start();
    }
	public void stopChrono(View target) {
		((Chronometer)findViewById(R.id.chrono)).stop();
    }
	public void continueChrono(View target) {
		((Chronometer)findViewById(R.id.chrono)).start();
    }
	public void resetChrono(View target) {
		((Chronometer)findViewById(R.id.chrono)).stop();
		((TextView)findViewById(R.id.chrono)).setText(&quot;00:00&quot;);
		((Chronometer)findViewById(R.id.chrono))
                        .setBase(SystemClock.elapsedRealtime());
    }
}
</pre>


<p>Dans le même style ::<ol><li><a href='http://bunjix.fr/developpez-un-splash-screen-pour-vos-applications-android/193' rel='bookmark' title='Permanent Link: Développez un splash screen pour vos applications Android'>Développez un splash screen pour vos applications Android</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://bunjix.fr/utiliser-le-chronometre-dans-ses-applications-android/142/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
