kivy_android_service
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
kivy_android_service [2020/11/02 08:58] – serge | kivy_android_service [2020/11/02 12:53] (Version actuelle) – [Kivy: Android Service] serge | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
<WRAP center round box 60% centeralign> | <WRAP center round box 60% centeralign> | ||
**{{tagpage> | **{{tagpage> | ||
- | **[[http:// | + | **[[http:// |
</ | </ | ||
<WRAP center round box 40% centeralign> | <WRAP center round box 40% centeralign> | ||
Ligne 32: | Ligne 32: | ||
=====Kivy Accelerometer Service OSC===== | =====Kivy Accelerometer Service OSC===== | ||
+ | |||
====Sources sur GitHub==== | ====Sources sur GitHub==== | ||
* **[[https:// | * **[[https:// | ||
Ligne 39: | Ligne 40: | ||
===TODO=== | ===TODO=== | ||
Si il n'y a pas d' | Si il n'y a pas d' | ||
+ | |||
+ | ====Extrait du code pour le service==== | ||
+ | La communication entre main.py et service.py se fait en OSC, c'est très rapide, il n'y a aucune latence. | ||
+ | Il n'est pas possible de lancer service.py avec des arguments, ni d' | ||
+ | |||
+ | Pour l'OSC, voir [[kivy_oscpy|Kivy: | ||
+ | |||
+ | === buildozer.spec === | ||
+ | [[https:// | ||
+ | |||
+ | <code python> | ||
+ | [app] | ||
+ | title = Accelerometer | ||
+ | package.name = accelerometer | ||
+ | package.domain = org.kivy | ||
+ | source.dir = . | ||
+ | source.include_exts = py, | ||
+ | requirements = python3, | ||
+ | android.permissions = INTERNET, WRITE_EXTERNAL_STORAGE, | ||
+ | services = Pong: | ||
+ | </ | ||
+ | |||
+ | ===main.py=== | ||
+ | [[https:// | ||
+ | |||
+ | <code python> | ||
+ | from jnius import autoclass | ||
+ | """ | ||
+ | Dans buildozer.spec | ||
+ | package.name = accelerometer | ||
+ | package.domain = org.kivy | ||
+ | services = Pong: | ||
+ | |||
+ | SERVICE_NAME = u' | ||
+ | packagename=u' | ||
+ | servicename=u' | ||
+ | |||
+ | Structure = package.domain.package.name.ServiceToto | ||
+ | package.domain = org.kivy | ||
+ | package.name = accelerometer | ||
+ | soit | ||
+ | org.kivy.accelerometer.ServicePong | ||
+ | """ | ||
+ | |||
+ | SERVICE_NAME = ' | ||
+ | print(" | ||
+ | |||
+ | ..... | ||
+ | |||
+ | class AccelerometerApp(App): | ||
+ | | ||
+ | ... | ||
+ | | ||
+ | def start_service(self): | ||
+ | if ANDROID: | ||
+ | self.service = autoclass(SERVICE_NAME) | ||
+ | self.m_activity = autoclass(u' | ||
+ | argument = '' | ||
+ | self.service.start(self.m_activity, | ||
+ | | ||
+ | ... | ||
+ | | ||
+ | def do_quit(self): | ||
+ | if ANDROID: | ||
+ | self.service.stop(self.m_activity) | ||
+ | self.service = None | ||
+ | else: | ||
+ | self.client.send_message(b'/ | ||
+ | sleep(1) | ||
+ | |||
+ | AccelerometerApp.get_running_app().stop() | ||
+ | </ | ||
+ | | ||
+ | ===service.py=== | ||
+ | [[https:// | ||
+ | |||
+ | <code python> | ||
+ | class AccelerometerService: | ||
+ | |||
+ | def __init__(self): | ||
+ | |||
+ | ... | ||
+ | self.init_osc() | ||
+ | self.sensor_init() | ||
+ | | ||
+ | ... | ||
+ | | ||
+ | def init_osc(self): | ||
+ | """ | ||
+ | de la même machine, donc il faut un client. | ||
+ | """ | ||
+ | self.server = OSCThreadServer() | ||
+ | self.server.listen(' | ||
+ | # Les callbacks du serveur | ||
+ | self.server.bind(b'/ | ||
+ | self.server.bind(b'/ | ||
+ | self.server.bind(b'/ | ||
+ | # Un simple client | ||
+ | self.client = OSCClient(b' | ||
+ | | ||
+ | ... | ||
+ | | ||
+ | def run(self): | ||
+ | while self.loop: | ||
+ | self.get_acceleration() | ||
+ | sleep(0.02) | ||
+ | |||
+ | |||
+ | if __name__ == ' | ||
+ | |||
+ | ACCELEROMETER = AccelerometerService() | ||
+ | ACCELEROMETER.run() | ||
+ | </ | ||
+ | |||
=====Un projet plus complet===== | =====Un projet plus complet===== |
kivy_android_service.txt · Dernière modification : 2020/11/02 12:53 de serge