Memorama Village : pour voir les cartes postales du Memorama à Montréal sur son téléphone

L’idee

Si vous vous êtes promenés dans la rue Sainte Catherine a Montréal cet été 2012, vous avez sans doute remarqué (et utilisé !) un des 4 appareils photos installés dans la rue, qui vous permettent de vous prendre en photo (automatiquement ou à l aide d’un bouton, ces photos sont aussi appelées « cartes postales »).
Pour consulter ces photos,  vous devez vous rendre sur le site memorama.me .
C’est lorsque j’ai voulu voir une photo prise à l’instant à partir de mon telephone (un Nexus S, Android 4.0.3) que j’ai eu la frustration de découvrir que le site apparaissait très mal dans le fureteur de mon téléphone (Chrome Beta).
Une dizaine d’heures de développement plus tard, j’ai publié Memorama Village , une application  Android (gratuite, open source, et sans publicité) pour consulter, rechercher et partager ces photos urbaines du creux de la main.

Le développement

Client Java pour l’api distante

Premièrement, il a fallu partir a la découverte de l’api distante utilisée par memorama.me : j’ai utilisé chrome (firefox avec firebug aurait suffit) et j’ai observe les échanges réseaux; l’appel le plus fréquent est celui permet de récupérer la dernière photo (numéro 1, avant dernière : numéro 2, etc…) pour 1 appareil photo donné :

et la réponse JSON correspondante : (facilement traduite en un POJO en utilisant jackson)

Pour rechercher une photo, c’est assez similaire, il faut cette fois ci donner la date de prise de vue ainsi que le numéro de l’appareil photo :

Est ce suffisant ? et bien non, car une fois que l’on a retrouvé une photo, on n’a que l’identifiant de la photo actuelle, pas les identifiants des photos précédentes et suivantes…
Pour ce faire, un appel supplémentaire (avec l’identifiant de la photo actuelle) est nécessaire :

qui fournit la réponse  (HTML !?) suivante (en bref):

où l’on retrouve, après un peu de nettoyage (parsing de html :-( ) les identifiants des photos précédentes et suivantes.

Application Android

Une fois le client java implémentant cette api distante créé, il suffisait de l’embarquer dans 1 application android qui

  • affiche les images dont les urls sont retrouvées (en utilisant une image view avec des gestures gauche et droite pour naviguer vers la photo précédente et suivante et avec un menu pour choisir la camera)
  •  permet de rechercher la photo par date et heure (en utilisant un date picker et un time picker)
  • permet de partager l url via email/sms/mms/twitter/etc… (en utilisant l’intent android standard SENT)

Si vous voulez plus détails, n’hésitez pas a consulter le code source !