09.02.2017 Views

creez-des-applications-pour-android

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6 Exploiter les fonctionnalités d’Android<br />

<strong>des</strong> informations sur le réseau et d’accéder à <strong>des</strong> informations sur l’abonné. Vous l’aurez remarqué,<br />

il s’agit encore une fois d’un Manager ; ainsi, <strong>pour</strong> l’obtenir, on doit en demander l’accès au<br />

Context :<br />

TelephonyManager manager = Context.getSystemService(Context.TELEPHONY_SERVICE);<br />

6.4.1.1 Obtenir <strong>des</strong> informations<br />

Ensuite, si nous voulons obtenir <strong>des</strong> informations sur l’appareil, il faut demander la permission :<br />

<br />

6.4.1.1.1 Informations statiques Tout d’abord, on peut déterminer le type du téléphone<br />

avec int getPhoneType(). Cette méthode peut retourner trois valeurs :<br />

— TelephonyManager.PHONE_TYPE_NONE si l’appareil n’est pas un téléphone ou ne peut<br />

pas téléphoner.<br />

— TelephonyManager.PHONE_TYPE_GSM si le téléphone exploite la norme de téléphonie<br />

mobile GSM. En France, ce sera le cas tout le temps.<br />

— TelephonyManager.PHONE_TYPE_CDMA si le téléphone exploite la norme de téléphonie<br />

mobile CDMA. C’est une technologie vieillissante, mais encore très en vogue en Amérique<br />

du Nord.<br />

Pour obtenir un identifiant unique de l’appareil, vous pouvez utiliser String getDeviceId(),<br />

et il est (parfois) possible d’obtenir le numéro de téléphone de l’utilisateur avec String<br />

getLineNumber().<br />

6.4.1.1.2 Informations dynamiques Les informations précédentes étaient statiques, il<br />

y avait très peu de risques qu’elles évoluent pendant la durée de l’exécution de l’application.<br />

Cependant, il existe <strong>des</strong> données liées au réseau qui risquent de changer de manière régulière.<br />

Pour observer ces changements, on va passer par une interface dédiée : PhoneStateListener.<br />

On peut ensuite indiquer quels changements d’état on veut écouter avec le TelephonyManager<br />

en utilisant la méthode void listen (PhoneStateListener listener, int events)<br />

avec events <strong>des</strong> flags <strong>pour</strong> indiquer quels évènements on veut écouter. On note par exemple la<br />

présence <strong>des</strong> flags suivants :<br />

— PhoneStateListener.LISTEN_CALL_STATE <strong>pour</strong> savoir que l’appareil déclenche ou reçoit<br />

un appel.<br />

— PhoneStateListener.LISTEN_DATA_CONNECTION_STATE <strong>pour</strong> l’état de la connexion<br />

avec internet.<br />

— PhoneStateListener.LISTEN_DATA_ACTIVITY <strong>pour</strong> l’état de l’échange <strong>des</strong> données<br />

avec internet.<br />

— PhoneStateListener.LISTEN_CELL_LOCATION <strong>pour</strong> être notifié <strong>des</strong> déplacements de<br />

l’appareil.<br />

TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVIC<br />

// Pour écouter les trois évènements<br />

manager.listen(new PhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE | PhoneSt<br />

418

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!