Scripter Android avec SL4A

Il y a quelques mois, en me perdant sur la toile, j’ai découvert qu’il était possible de développer des scripts pour android comme pour toute distribution linux qui se respecte. Pour ce faire, google avait développé une application qui se nommait ASE. Aujourd’hui, celle-ci a évolué et se nomme SL4A, Scripting Layer For Android.

logo SL4A

SL4A est une application gratuite et open source sous licence apache 2.0. Elle permet de développer des scripts sous différents languages:

  • BeanShell 2.0 b4
  • JRuby 1.4
  • Lua 5.1.4
  • PHP 5.3.3
  • Perl 5.10.1
  • Python 2.6.2
  • Rhino 1.7 R2

Là, vous devez vous demander: mais qu’est-ce que l’on peut faire avec ça? Il existe déjà un grand nombre de script sur la toile, comme par exemple (liste plus détaillé ici):

  • Un système de chat par bluetooth
  • Une télécommande pour porte de garage
  • L’activation automatique du mode silencieux lorsqu’il fait nuit

Pour installer SL4A, vous pouvez soit le télécharger sur le site officiel, soit utiliser le QR Code ci-dessous:

QR Code SL4A

Je vous invite également à vous rendre sur cette page pour visualiser des screencasts vous expliquant le fonctionnement de SL4A.

A l’occasion de cet article j’ai donc rédigé un petit script qui affiche le titre des articles du jour et les lit avec un synthétiseur vocale. Vous pouvez le télécharger ici. Voici le code source:

import android
import httplib
import time
 
droid = android.Android()
 
conn = httplib.HTTPConnection("geekdefrance.fr")
conn.request("GET", "/")
resp = conn.getresponse()
body = resp.read()
conn.close()
 
start = body.find("Les 10 derniers articles") + 35
end = body.find("</ul>", start) - 5
msg = body[start:end]
tab = msg.split("</li>")
 
date = time.strftime('/%Y/%m/%d/')
trouve = 0
first = 1
 
i = 0
while i < len(tab):
    if tab[i].find(date) != -1:
        trouve = 1
 
        if first == 1:
            droid.ttsSpeak('Les articles du jour sur geek de france sont:')
            time.sleep(5)
            first = 0
 
        titre = tab[i]
        debTitre = titre.find(">", 10) + 1
        finTitre = titre.find("<", 10)
        titre = titre[debTitre:finTitre]
        titre = titre.replace("&#8217;","\'").replace("&#8243;","\"").replace("[","").replace("]","")
 
        print titre
        droid.ttsSpeak(titre)
        time.sleep(5)
    i += 1
 
if trouve == 0:
    droid.ttsSpeak('Aucun article n\'a encore ete publie sur geek de france aujourd\'hui')
    time.sleep(5)

Le langage utilisé est du python, donc vous devrez ajouter cette interpréteur avant de pouvoir le lancer (voir screencast). Vous devrez également installer au préalable SpeechSynthesis Français, disponible sur le marketPlace (c’est le synthétiseur vocale utilisé par Google navigation).

Je m’excuse d’avance auprès des pros du python si j’ai fait des erreurs. C’est la première fois que je me sers de ce langage, c’était pour tester et c’est codé à la rache ;) .

N’hésitez pas à partager vos scripts ou vos découvertes. Amusez vous bien ;)

Vus : 3355
Publié par Geek de France : 203