J’avais dans le précédent article présenté des applications ou outils qui permettent de créer ses propres contrôleurs sur son téléphone tactile ou sa tablette.

J’ai dernièrement terminé le portage en java de l’application que j’avais fait, en Processing, pour contrôler mon environnement de peinture virtuelle.

J’ai opté cette fois pour le développement avec le SDK d’Android car j’avais des besoins spécifiques que je ne pouvais pas directement accomplir avec Processing, et parce que les perspectives d’évolution futures me semblent plus faciles à aborder dans le langage natif de la plate-forme plutôt qu’avec Processing ou tout autre outil de plus haut niveau que java. En clair, plus les besoins sont spécifiques et l’évolutivité demandée est grande, plus on est contraint de se rapprocher des langages de bas niveau qui sont utilisés par les plateformes que l’on manipule.

Pour l’instant mes besoins spécifiques correspondent, pour l’instant, à un “color picker” (sélectionneur de couleur) et à un “slider” rotatif à 4 positions, sans fin.

 

Dans la lignée, j’ai construit un nouveau projet OSC-Controller sous Android avec un seul contrôleur et un seul bouton, à titre d’exemple.

L’application est disponible sur l’android market et la source est disponible sous licence GNU G.P.L. ici.

A partir d’un téléphone, l’application sur le market est disponible en flashant le code ci-dessous.

A noter que cette application utilise OSCJava (NetUtil dans une prochaine révision peut être).

L’application peut par exemple communiquer avec Max en se servant du code ci-dessous

[cc lang=”text”]

———-begin_max5_patcher———-

648.3ocuW1riZCCEEdc3ovJpKoTam.A5tJd.FoxrqZTkI4B3pD6nXmoPGMu6

0+D5PGBkTfvBHxWG6bue43icdYPP3R4VPEh9L5anffWFDD3BYCDzzNHrfsMM

mob2VXprn.D5vg99zvVsK97MLwZ.o2.nRYkFoknU.nQ6j0UHEn0bw58CJmKf

TYsvMRZSPQcgrVmCZ2yA2Dkm4lc4xe7wo6G9JoPKXEfqmuTwY4G1ih+KWOD5

H7aSMWrelIMAKY5zMlj56UPp1Sf3wXyXPzIisWH9VQwivnmri40ACr+M71Qp

MRkFwxxp.kBwDY+a7oZkeQckeI8N+HThmeQGvu3o2X98UHE3OCnmY40.ZUkr

vgsTStWIyygpqSlMt+kYwNvLkzmprEfQN4QjQKYAjJmm8FbNKGh6e4BdliC3

C3.Eegbv7PWdppa+6deH8tRvm.gbK3PgKMKHCQOcLCn8OChZpd6PQWICJL1H

r0vQZgOUAERMfJ1Y0.nOPFhbkbqvhbJX0JgH2HWE54QTRh6RjSzPtTWEA7SS

deDhdnDDKLdEYy81HsylnSxlg9eOrX9i7B3QV65Ix+ofZ1ErElGOybagMcpm

b2VVUmUV03AOCiwnTQASeSDSQ2K7j3VtQvw8AeJqL9JnlEipNa3Rh68pelqd

oTW0mLtmDGJ6VOjYzQjISGQFQvFKdLtybHZReygFGEZj+bJzn9.Du2QwXqeJ

Hbs1JQI2Kh42wlPZW53xM2wtd2mT3lQa7+FiJygaS2WqM62hv+oBy.k4XuLM

WJN3dr63bvMsgmkAhCkRE7rRoYEXSNbh2ocMkhR5PNYkr2wbx5SddNQuu4Tm

3z88cmCAjywo3qHmLMdcvugYniY+

———–end_max5_patcher———–

[/cc]

Join the Conversation

7 Comments

  1. Salut!

    Classe & cool ton exemple pour apprendre OSC avec Android, mais avec eclipse quand je compile et teste sur emulateur, quand je fini de rentrer la config reseau j’ai droit a un crash magnifique de l’appplication. J’ai testé sur un mobile android HTC magic et même plantage. Attention, je débute la prog sous android, peut etre qu’il y a un truc que j’oublie de mettre!

    En tout cas tres interessant cet exemple 🙂

    @++

  2. ça marche pour moi avec Eclipse Indigo (2.7) et sdk ver 14. Lit l’androidManifest du projet. Peut être que ta versiond’OS est plus récente que la mienne (ou le contraire). Regardes aussi dans le log d’eclipse. Tu as des infos

  3. Yep!

    Merci beaucoup pour ta réponse!

    J’ai testé avec un autre prog open-source pour faire de l’OSC et sa plante pareil ! Conclusion : Cela ne vient pas de ton programme, cela vient de mon compilateur!

    J’ai tenté de mettre un post sur developpez, on verra bien ce que sa va donner.

    http://www.developpez.net/forums/d1222920/java/general-java/java-mobiles/android/newbie-plantage-inexplique-application-open-source-controleur-osc/

    Ce soir je vais essayer avec le SDK 14 et Indigo 2.7 🙂

    @++

  4. Voici exactement les messages d’erreur que cela me met dans le LOG:

    05-20 08:52:03.735: E/AndroidRuntime(219): Uncaught handler: thread main exiting due to uncaught exception
    05-20 08:52:03.755: E/AndroidRuntime(219): java.lang.NoClassDefFoundError: com.illposed.osc.OSCPortOut
    05-20 08:52:03.755: E/AndroidRuntime(219): at com.taprik.controller.Communicator.connect(Communicator.java:30)
    05-20 08:52:03.755: E/AndroidRuntime(219): at com.taprik.controller.Intro.onClick(Intro.java:146)
    05-20 08:52:03.755: E/AndroidRuntime(219): at android.view.View.performClick(View.java:2364)
    05-20 08:52:03.755: E/AndroidRuntime(219): at android.view.View.onTouchEvent(View.java:4179)
    05-20 08:52:03.755: E/AndroidRuntime(219): at android.widget.TextView.onTouchEvent(TextView.java:6541)
    05-20 08:52:03.755: E/AndroidRuntime(219): at android.view.View.dispatchTouchEvent(View.java:3709)
    05-20 08:52:03.755: E/AndroidRuntime(219): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    05-20 08:52:03.755: E/AndroidRuntime(219): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    05-20 08:52:03.755: E/AndroidRuntime(219): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    05-20 08:52:03.755: E/AndroidRuntime(219): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    05-20 08:52:03.755: E/AndroidRuntime(219): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
    05-20 08:52:03.755: E/AndroidRuntime(219): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
    05-20 08:52:03.755: E/AndroidRuntime(219): at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
    05-20 08:52:03.755: E/AndroidRuntime(219): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
    05-20 08:52:03.755: E/AndroidRuntime(219): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
    05-20 08:52:03.755: E/AndroidRuntime(219): at android.os.Handler.dispatchMessage(Handler.java:99)
    05-20 08:52:03.755: E/AndroidRuntime(219): at android.os.Looper.loop(Looper.java:123)
    05-20 08:52:03.755: E/AndroidRuntime(219): at android.app.ActivityThread.main(ActivityThread.java:4363)
    05-20 08:52:03.755: E/AndroidRuntime(219): at java.lang.reflect.Method.invokeNative(Native Method)
    05-20 08:52:03.755: E/AndroidRuntime(219): at java.lang.reflect.Method.invoke(Method.java:521)
    05-20 08:52:03.755: E/AndroidRuntime(219): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    05-20 08:52:03.755: E/AndroidRuntime(219): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    05-20 08:52:03.755: E/AndroidRuntime(219): at dalvik.system.NativeStart.main(Native Method)

  5. Voici est le message d’erreur obtenus sur un HTC MAGIC avec android 2.2 :

    05-20 10:59:28.295: E/AndroidRuntime(9739): FATAL EXCEPTION: main
    05-20 10:59:28.295: E/AndroidRuntime(9739): java.lang.NoClassDefFoundError: com.illposed.osc.OSCPortOut
    05-20 10:59:28.295: E/AndroidRuntime(9739): at com.taprik.controller.Communicator.connect(Communicator.java:30)
    05-20 10:59:28.295: E/AndroidRuntime(9739): at com.taprik.controller.Intro.onClick(Intro.java:146)
    05-20 10:59:28.295: E/AndroidRuntime(9739): at android.view.View.performClick(View.java:2449)
    05-20 10:59:28.295: E/AndroidRuntime(9739): at android.view.View$PerformClick.run(View.java:9027)
    05-20 10:59:28.295: E/AndroidRuntime(9739): at android.os.Handler.handleCallback(Handler.java:587)
    05-20 10:59:28.295: E/AndroidRuntime(9739): at android.os.Handler.dispatchMessage(Handler.java:92)
    05-20 10:59:28.295: E/AndroidRuntime(9739): at android.os.Looper.loop(Looper.java:123)
    05-20 10:59:28.295: E/AndroidRuntime(9739): at android.app.ActivityThread.main(ActivityThread.java:4627)
    05-20 10:59:28.295: E/AndroidRuntime(9739): at java.lang.reflect.Method.invokeNative(Native Method)
    05-20 10:59:28.295: E/AndroidRuntime(9739): at java.lang.reflect.Method.invoke(Method.java:521)
    05-20 10:59:28.295: E/AndroidRuntime(9739): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    05-20 10:59:28.295: E/AndroidRuntime(9739): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    05-20 10:59:28.295: E/AndroidRuntime(9739): at dalvik.system.NativeStart.main(Native Method)

  6. Problème réglé :

    Il fallait que je selectionne mon projet, clic-droit -> properties -> Java Build path.

    Selectionner javaoscfull.jar et le mettre tout en haut de la liste.

    Et là sa marche à merveille 🙂

    :ccool:

Leave a comment

Leave a Reply to taprik Cancel reply

Your email address will not be published. Required fields are marked *