AS3 : Mon IPod est un touchpad pour PC
En 2010 il y a eu quelques bonnes nouvelles pour la plateforme Flash :
- la modification de la licence d'Apple qui permet l'utilisation du packager for IPhone
- de nouveaux API AIR dans avec la possibilité de lancer des processus natifs, de créer des ServerSocket's, et de récuperer des informations sur le réseau
- Flash Player 10.1 notamment les API P2P et le Multitouch
J'ai souhaité faire une petite app pour mon IPod permettant de contrôler les ordinateurs connectés à mon réseaux local
Je voulais :
- qu'il y ai le moins de configuration possible
- ne pas être tributaire d'un service extérieur
- ne pas être tributaire de ma connexion à internet
- éviter si possible les dangers associés à la transmission
Du coup j'ai utilisé chacune des possibilités pré-citées pour écrire un programme dont voici les sources
Il y 2 dossier :
- Un dossier C# qui ne contient qu'un fichier "Main.cs" qui doit être compilé en un EXE nommé "mouseControl.exe". Pour cela j'ai utilisé monodevelop.
Cet EXE fait appel aux API's de user32.dll de Windows pour déclencher des action de souris.
A priori on peut se passer de C# en utilisant rundll.exe, mais ça me semblait plus élégant et pratique de faire ainsi.
De plus, c'est la seule partie du programme général qui ne fonctionne que sur Windows :
Pour décliner sur d'autre plateformes il faudra juste réécrire cette partie spécifique et changer d'executable en fonction de la plateforme dans le programme AS3.
- Un dossier AS3 comprenant les sources utilisées pour générer deux app :
- Une pour le PC devant être contrôlé :
Le fichier principal, com/laDigitale/display/TouchpadListener.as, est un Sprite devant contenir un TextField nommé "txtHistory".
Il doit être compilé avec AIR en profil bureau étendu avec l'EXE "mouseControl.exe" inclue en ressource à la racine de l'app. - Une pour le smartphone servant de touchpad :
Le fichier principal, com/laDigitale/display/Touchpad.as, est un Sprite devant contenir 2 SImpleButton's nommés "leftDisplay" et "rightDisplay" (clique gauche et droit de la souris) et un Sprite nommé "pad" (mouvements de la souris)
- Une pour le PC devant être contrôlé :
L' app. pour Smartphone a été testé avec un IPod touch 4g mais doit marcher sur Iphone/Ipad et Android 2.2+
Une fois les deux app compilées, installées et lancées (peu import l'ordre) tout fonctionne sans configuration.
On peu fermer une app ou l'autre puis la ré-ouvrir, les 2 app se reconnectent et on peu surfer et regarder des vidéos à nouveaux à distance.
Conclusion
- Attention ces source sont juste un "proof of concept"
J'ai essayer de tester/simplifier/montrer la démarche de communication entre un mobile et un pC en AS3 via le WIFI locale.
il n'y a notamment pas la moindre gestion d'erreur.
Par contre chaque élément (classe) joue un rôle précis. il y a peu de fichier (1 par app +2 interfaces +4 fichiers pour gérer les communications P2P, server TCP, process, transmission coté mobile)
Chaque fichier fait entre 15 et 100 lignes.
- Il y a plein de trucs chouette à faire avec ces API.
Cependant j'espère que les connections P2P en local en mode direct seront implémentées par Flash Player et AIR dans l'avenir et que les API tels que les DatagramSocket marcherons sur les mobiles (voir cette liste).
Cela simplifierais vraiment les choses, avec un fonctionnement vraiment plus rapide et plus de possibilités
Voici un petite video très moche. En attendant mieux on peux y deviner le Multitouch et l'instantanéité du déplacement de la souris :
ipod touchpad with adobe air and c#
une petite démo en vidéo stp ?
Comme tu voudras mais ça va être sheep parce que j'ai pas trop de moyens pour le faire là
ah bah je capte mieux maintenant, t'as fait une telecommande à PC avec un ipod ;-)
interressant en tout cas !
Cool! Ce que je me suis déjà demandé, c'est comment je pourrais utiliser un tablet pc ou un smartphone comme tablet graphique.. l'enjeu est assez compliqué car il s'agit de pouvoir placer une image en cours de travail dans photoshop, mais sur l'écran du smatPhone.. après, ajouter à ton système un moyen de placer une zone de l'écran PC sur le smartphone pourrait le faire en fait.. interessant.. à creuser :-))
Sinon, rien que comme ça, je dis que c'est super pour faire une télécommande pour media center :-)) si on y ajoute encore la gestion du clavier via le clavier virtuel de l'I-phone..
Bon, ben prochain défi, tout refaire en Androïd!! :-))
Je suis con! c'est en AS3!! y a plus qu'a compiler pour Android depuis FlashDevelop :-)