:: Enseignements :: Master :: M2 :: 2012-2013 :: Développement Android ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Audio et capteurs |
Nous nous exerçons au cours de ce TD à utiliser l'API sonore d'Android ainsi que quelques uns des capteurs disponibles (GPS, accélération, caméra...).
Exercice 1 - Coucoudroid
On souhaite implanter une application de coucou sonnant tous les quarts d'heure, demi-heures et heures (poussant N cris lorsqu'il est N heures). On pourra utiliser l'événement broadcast
ACTION_TIME_TICK pour déclencher si nécessaire le cri de l'oiseau. On créé également une activité permettant d'activer/désactiver le chant du coucou. Un enregistrement de coucou au format WAV est disponible
ici.
Exercice 2 - Androspy
Votre mission, si vous l'acceptez est de réaliser une application espionnant son utilisateur en exploitant furtivement les données d'environnement fournies par les capteurs de son appareil Android. Le déclenchement de l'enregistrement d'une donnée se fait par la réception d'un SMS. Toutes les données sont enregistrées sous un répertoire propre à l'application, dans des sous-répertoires pour chaque type de données.
- Il faut tout d'abord intercepter les SMS reçus par l'appareil. À cet effet, il faut être en mesure de recevoir le broadcast ordonné android.provider.Telephony.SMS_RECEIVED par un BroadcastReceiver. Un champ extra nommé pdus permet de récupérer les datagrammes du SMS. Si le SMS est prefixé par "androspy", nous le traitons : nous récupérons son contenu pour connaître le type de données à enregistrer et nous stoppons la propagation du broadcast ordonné avec abordBroadcast() (il n'est pas communiqué à l'application de stockage des SMS reçus).
- Si votre appareil ne gère pas les SMS (cas des tablettes Wi-Fi sans cellulaire), il faudra créer un service envoyant régulièrement des broadcasts (et écouter ce type de broadcast) pour enregistrer les données.
- Implanter le support de l'enregistrement des données suivantes (dans des fichiers adaptés) :
- La position géographique (latitude, longitude, altitude)
- L'accélération actuelle
- La capture sonore sur quelques secondes à l'aide du micro
- La prise d'une photo
Partie bonus. Enregistrer des données, c'est bien. Récupérer ces données, c'est mieux. Il nous faut donc trouver un moyen de les récupérer discrètement. On choisit de les envoyer furtivement vers un serveur web lorsque la victime se connectera à un point d'accès Wi-Fi.
- Écrire un BroadcastReceiver ayant pour objectif de lancer un service lorsqu'une connexion Wi-Fi devient disponible.
- Écrire le service réalisant un envoi des fichiers enregistrés vers le serveur web.
Félicitations ! Votre mission d'espion est presque terminée. Il ne vous reste plus qu'à développer un paravent crédible pour justifier des permissions utilisées (par exemple une application de capture de photos géotaggées avec enregistrement sonore, synchronisation sur un serveur web et partage d'URL par SMS) et de convaincre votre victime de l'installer.
© Université de Marne-la-Vallée