Banner
Banner
Banner

Scripter Android avec SL4A

Par - le janvier 20th, 2011

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 😉

Tags: , , , , , ,

7 commentaires to “Scripter Android avec SL4A”

    grogeek :

    Yop,

    J’ai essayé aussi il y a 2 ou 3 mois. Malheureusement, ils n’ont pas encore passé à Python 3.
    😉

    grogeek :

    Petite précision pour le code.
    En fait l’apostrophe que l’on utilise N’est pas l’apostrophe, mais un « quote » Voila pk dans le script il faut placer un \ avant le ‘.

    Cependant, si tu utilises la vraie apostrophe ’ au lieu de ‘ celle-ci n’aura pas besoin de \ devant pour que cela passe !

    voilou.

    Morkitu :

    ok, merci pour l’astuce 😉

    Radek411 :

    Intéressant, moi qui n’ai pas trop de temps à consacrer à l’apprentissage de la programmation Android !

    residante :

    J’adore 😀 Du python dans android, c’est vraiement cooooool !!

    Geek | Pearltrees :

    […] Scripter Android avec SL4A […]

    Android | Pearltrees :

    […] Scripter Android avec SL4A […]

Laissez un commentaire

Catégorie(s): Software