wlppr sur l’Android Market !

Encore du nouveau ! Et oui, on bosse beaucoup en ce moment. Il s’agit une nouvelle fois d’une application Android. Elle va sans doute vous rappeler quelques chose si vous nous suivez un peu.

Grâce à cette application, tous les matins à 10H30, vous pourrez voir apparaitre sur votre téléphone ou tablette un nouveau fond d’écran. Les fonds d’écran sont issus du site wlppr.com. Si vous ne souhaitez pas que votre fond d’écran change automatiquement, vous pouvez changer la configuration de l’application pour qu’à l’instant T, vous recevez une notification avec un aperçu du fond d’écran que vous pouvez alors choisir d’afficher ou non.

Si vous démarrer votre terminal Android après 10H30, ne vous inquiétez pas, le nouveau fond d’écran apparaitra quand même. De même que si vous n’avez pas de connexion internet à l’instant T, celui-ci apparaitra dès que vous retrouverez une connectivité. Ainsi, vous êtes sûr de toujours avoir le wallpaper du jour.

Comme d’habitude, nous attendons vos retours et vos suggestions, ici et/ou sur l’Android Market.

Un nouveau wlppr tous les jours sur votre bureau Linux

Comme vous le savez, chez Magetys, nous aimons beaucoup les fonds d’écran, ou les wallpapers comme on les appelle également. Alors forcément on aime wlppr.com qui propose tous les jours un wallpaper original adapté à tous les résolutions d’écran (ou presque !).

Nous avons donc développé un script bash qui permet de placer automatiquement en fond d’écran de votre bureau Linux le wallpaper proposé par wlppr.com. Le script fonctionne sur les environnment Gnome, Unity, xfce et même le tout nouveau Gnome-shell !



TELECHARGER

Pour un meilleur rendu, nous vous conseillons d’éditer le script pour modifier les valeurs screenWidth et screenHeight en début de fichier afin qu’elles correspondent à la largeur et la hauteur de la résolution de votre écran. Nous souhaitions à la base détecter automatiquement ces valeurs grâce à la commande xwininfo :

#screenWidth=`xwininfo -root | grep Width | cut -d":" -f2 | sed 's/^ *//g'`
#screenHeight=`xwininfo -root | grep Height | cut -d":" -f2 | sed 's/^ *//g'`

Mais cela n’est pas possible si l’on souhaite exécuter le script dans une tâche cron. En effet, xwininfo retourne des valeurs uniquement lorsque x-server est lancé or ce n’est pas le cas dans une tâche cron. Si vous connaissez un moyen de récupérer la résolution de l’écran sans que x-server soit démarré, nous sommes preneur !

Avant tout utilisation du script, pensez à le rendre exécutable bien sûr :

sudo chmod a+x wlppr

Pour être sûr de toujours être à jour, vous pouvez faire s’exécuter le script au démarrage de votre ordinateur grâce à l’outil Applications au démarrage.

Pour vraiment parfaire le concept, vous pouvez faire exécuter le script grâce à une tâche Cron. Pour ceux qui ne connaissent pas, Cron est un programme qui permet d’executer automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiée à l’avance.

Pour créer une nouvelle tâche, exécuter la commande :

crontab -e

Cette commande permet d’éditer un fichier à l’aide d’un éditeur de texte défini à la première exécution de crontab. Ajoutez alors cette ligne dans le fichier crontab :

0 12 * * * /chemin/vers/le/script/wlppr

Cette commande permet d’exécuter le script tous les jours à midi.

Fermez et sauvegardez le fichier. Pour vérifier que la tâche Cron a bien été ajoutée. Vous pouvez exécuter la commande :

crontab -l

Et voila le travail ! Tous les jours, un nouveau fond d’écran !

Toilettes à Paris sous Android grâce à l’OpenData


Nous venons de sortir une nouvelle application pour les téléphones mobiles sous Android. Cette fois-ci, il s’agit d’une application qui permet de voir tous les emplacements des toilettes publiques Sanisette à Paris. Vous pouvez chercher les Sanisettes autour de votre position ou effectuer une recherche par adresse.


La base de données qui contient tous les emplacements des toilettes publiques est embarquée dans l’application. Il est donc tout a fait possible d’utiliser l’application sans connexion Internet pour une recherche à l’aide de sa position géographique. La recherche par adresse nécessite par contre la présence d’une connexion Internet pour fonctionner puisqu’elle utilise le géocodage de Google. La base de données a été créée grâce l’OpenData parisien. A noter que la plateforme française de données publiques vient également d’ouvrir : http://www.data.gouv.fr

Comme d’habitude avec nos applications, nous sommes très à l’écoute de vos retours. Rendez-vous sur l’Android Market pour télécharger l’application ou scannez ce QR Code :

Sanisette est une marque déposée de JCDecaux. Magetys n’est pas affilié à JCDecaux, ni sponsorisé ou soutenu par celui-ci.

Notification text-to-speech avec Karotz à la fin d’un téléchargement sur SABnzbd+

Pour ce nouvel article je vais m’adresser à un public assez restreint puisqu’il est dédié aux utilisateurs de SABnzbd+ (le gestionnaire de téléchargements pour Usenet) et possesseurs de lapin électronique Karotz. Ça peut également intéresser ceux qui souhaitent faire une application Karotz en Python. Aujourd’hui, je vais donc vous montrer comment être notifié de la fin d’un téléchargement sur SABnzbd+ grâce au text-to-speech de Karotz. Je vais vous présenter comment créer une application privée sur le Karotz Lab, créer un script Python pour utiliser l’API Web de Karotz et enfin, configurer SABnzbd+ pour exécuter automatiquement un script Python à la fin d’un téléchargement.

Architecture

Pour ceux qui souhaitent vraiment comprendre le fonctionnement du système. Voici une petite explication. Pour les autres, passez à la section suivante, suivez juste les instructions même si vous ne comprenez pas tout ce que vous faites et ça ira bien :)

Lorsque l’on souhaite faire exécuter une action à un Karotz, il existe deux moyens. Le mode embarqué (hosted), où le code de l’application est installé sur le Karotz ou le mode distant (external), où l’on va passer par une API web qui va piloter le Karotz à distance. En mode embarqué, une action peut être exécutée uniquement grâce aux triggers prévus par le appz store. A savoir, la commande vocale, le déclenchement planifié, le déclenchement répété ou encore à l’aide d’un Nanoz (la puce RFID Karotz). Etant donné ce que l’on souhaite que ce soit SABzbd+ qui déclenche une action sur le Karotz, c’est la méthode distante qui s’impose à nous. Afin d’utiliser l’API web, nous avons besoin d’une API Key et d’une Secret Key. Pour cela, on doit créer un profil d’application dans le Karotz Lab. La Secret Key, comme son nom l’indique, doit rester secrète, on ne peut pas se permettre de l’afficher aux yeux de tout le monde dans un script Python, c’est pour ça que vous devez créer votre propre application Karotz qui restera privée. Afin d’identifier le Karotz cible et de s’assurer que vous avez autorisé l’application à utiliser votre Karotz, vous avez également besoin d’un InstallId. C’est lorsque l’on installe une application sur un Karotz que le Appz Store retourne un InstallId. C’est donc avec ces 3 éléments (API Key + Secret Key + InstallId) que le script Python va pouvoir se connecter à l’API Web afin d’exécuter des actions sur un Karotz ciblé. Etant donné qu’un schéma vaut mieux qu’un long discours, jetez un oeil à ceci :

Création de l’application Karotz

Vous devez d’abord créer votre propre application Karotz sur le Karotz Lab, rendez-vous donc sur http://www.karotz.com/lab/app/dashboard. Lorsque vous créez une application vous devez remplir un petit formulaire. Les champs Application name, Category, Short description, Description, Icon et Ztore sont obligatoires. Au passage, je trouve ça plutôt dommage que l’on ne puisse pas publier son application sur tous les Ztores. Mais bon, dans notre cas, le problème ne se pose pas étant donné que notre application restera privée. Si tout s’est bien passé vous devriez voir s’afficher une API key et une Secret key pour votre application. Ce jeux de clés va vous permettre d’accéder à l’API Web.

Vous devez ensuite créer une archive ZIP contenant 2 fichiers.

Le premier est le fichier descriptor.xml qui, comme son nom l’indique, décrit l’application. On indique le numéro de version que l’on souhaite utiliser, le tex-to-speech (‘tts’), qu’on utilise l’API Web, qu’on ne possède pas de profil de configuration et que l’on souhaite afficher l’InstallId sur la page de configuration.


<descriptor>
   <version>1.0</version>
   <accesses>
       <access>tts</access>
    </accesses>
    <editor>Magetys</editor>
    <deployment>external</deployment>
    <multiConf>false</multiConf>
    <parameters>
        <parameter key="showInstallUuid" value="true"/>
    </parameters>
</descriptor>

Le second fichier est le fichier screen.xml qui permet de décrire la page de configuration de l’application. Ici, nous désactivons toutes les configurations possibles.


<screen
	nanoTrigger="false"
	permanentTrigger="false"
	scheduledTrigger="false"
	scheduledDateTrigger="false"
	voiceTrigger="false" >
</screen>

Une fois l’archive ZIP créée contenant ces deux fichiers, il suffit de la mettre en ligne en cliquant sur Add a new version.

Maintenant, il ne vous reste plus qu’à cliquer sur Make private, ainsi, seules les personnes possédant le lien de l’application peuvent installer l’application, puis Test !. Vous êtes alors redirigé vers la fiche de l’application et vous pouvez ainsi l’installer sur votre Karotz.

Comme spécifié dans le fichier screen.xml, la page de configuration de l’application contient uniquement l’InstallId. L’installId va également nous être utile pour accéder à l’API Web.

Sur le Karotz Lab, vous pouvez voir que l’application est installée sur un Karotz.

La partie concernant Karotz est maintenant terminée ! On va pouvoir communiquer avec le Karotz depuis un script Python.

Configuration de SABnzbd+

Commencez par Télécharger le script Python que Magetys vous partage avec plaisir.



TELECHARGER
Copiez ce script dans un répertoire, par exemple dans /home/_your_login_/scripts. Vous devez modifier le script pour renseigner votre API Key, votre Secret Key et votre installId. Une fois fait, il faut rendre ce script exécutable (commande chmod a+x).

Dans l’interface SABnzbd+, vous devez spécifier le dossier par défaut qui contient vos scripts grâce au menu Configuration ? Répertoires. Bien entendu, on indique le répertoire où l’on a copié notre script.

Je vous conseille également de désactiver Ne post-traiter que les fichiers vérifiés dans Configuration ? Options afin d’être notifié également lorsqu’il y a eu une erreur de téléchargement.

Dernière étape, il est intéressant d’activer l’exécution du script par défaut dans Configuration ? Catégories en sélection le script pour la catégorie Défaut et toutes les catégories que vous avez déjà pu configurer.

Voilà ! La configuration est terminée. Maintenant, à la fin de chaque téléchargement, vous devriez entendre votre Karotz vous le dire haut et fort ! Etant donné la complexité de cette installation, je réfléchis à une autre solution pour distribuer l’application à travers le Ztore en tant qu’application publique.

Un widget Android pour Google Analytics

Avec l’aide de notre ami Alexis, nous venons de créer une nouvelle application pour Android, enfin, un widget plutôt ! Android offre un système de widgets jamais vu sur les autres plateformes mobiles alors nous voulions en profiter ! Ce widget permet donc d’afficher vos statistiques Google Analytics pour chacun de vos sites web directement sur le bureau de votre mobile. Vous pouvez voir le nombre de visites ou le nombre de visiteurs uniques par jour en temps réel ! Ces valeurs sont automatiquement comparées aux mêmes données, à la même heure, la semaine précédente, afin d’afficher un taux de progression. On ajoutera dans les jours qui viennent de nouvelles métriques.

Nous avons utilisé aucune librairie externe pour récupérer les données Google Analytics. Il existe pourtant deux librairies Java développées par Google. Nous avons testé les deux. La première gdata-java-client est très simple d’utilisation mais n’est pas entièrement compatible avec Android. Elle fonctionne sur certain appareil comme le Motorola Milestone mais pas sur un HTC Desire par exemple. Nous ne pouvions donc pas utiliser cette librairie. Google a développé une seconde librairie google-api-java-client compatible avec Android mais qui est encore en beta et qui n’est pas vraiment simple d’utilisation, d’autant plus qu’elle est plutôt mal documentée pour le moment. Nous avons fini par faire le choix de tout développer à la main, sans l’utilisation de librairies externes qui alourdissent énormément le poids de l’application. Notre widget fait donc un poids plume !

Pour la connexion au compte Google Analytics, nous avons choisi d’utiliser le Account Manager du système Android. C’est quelque chose d’assez peu utilisé dans les applications mais pourtant ce système est vraiment puissant. Il permet à une application d’exploiter les comptes configurés dans le téléphone sans demander un login et un mot de passe au sein de l’application. L’utilisateur n’a donc aucune inquiétude à se faire vis à vis de la sécurité de son compte. Pour que cela fonctionne, il faut tout de même ajouter deux permissions, GET_ACCOUNTS et USE_CREDENTIALS. Il faut également faire attention au jeton que renvoie le Account Manager qui permet de se connecter aux APIs Google. Ce jeton est différents pour chaque API et il a une durée de vie limitée. Tous les 14 jours, le jeton arrive à expiration. Il faut donc que l’application soit en mesure d’en régénérer un sans intervention de l’utilisateur.

Le développement d’un widget est un développement très particulier. Il y a des concepts très différents vis à vis d’une application standard. Un des concepts très intéressant des widgets, c’est le système de configuration avant l’installation du widget. L’écran de configuration d’un widget est une activité classique qui se lance automatiquement lors de l’ajout d’un widget. Nous avons donc utilisé cet écran de configuration pour vous permettre de vous connecter à Google Analytics, choisir votre site web et votre métrique.

Comme d’habitude avec nos applications, nous sommes très à l’écoute de vos retours. Rendez-vous sur l’Android Market pour télécharger l’application ou scannez ce QR Code :