Outils pour utilisateurs

Outils du site


kivy_android_service

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
kivy_android_service [2020/11/02 09:05] – [main.py] sergekivy_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>kivy|Toutes les pages Kivy}}** **{{tagpage>kivy|Toutes les pages Kivy}}**
-**[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fles_pages_kivy_en_details|English Version]]**+**[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fkivy_android_service|English Version]]**
 </WRAP> </WRAP>
 <WRAP center round box 40% centeralign> <WRAP center round box 40% centeralign>
Ligne 31: Ligne 31:
 </code> </code>
  
-=====Extrait du code===== +=====Kivy Accelerometer Service OSC===== 
-====buildozer.spec====+ 
 +====Sources sur GitHub==== 
 +  * **[[https://github.com/sergeLabo/accelerometer_service_osc|accelerometer_service_osc]]** 
 +===*.apk=== 
 +Dans le dossier bin 
 + 
 +===TODO=== 
 +Si il n'y a pas d'accelerometer sur Android, ça va sans doute mal marcher. 
 + 
 +====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'accéder aux attributs de AccelerometerService() depuis main.py, d'où l'OSC. 
 + 
 +Pour l'OSC, voir [[kivy_oscpy|Kivy: oscpy]] 
 + 
 +=== buildozer.spec === 
 +[[https://github.com/sergeLabo/accelerometer_service_osc/blob/main/buildozer.spec|buildozer.spec]]
  
 <code python> <code python>
Ligne 46: Ligne 62:
 </code> </code>
  
-====main.py====+===main.py=== 
 +[[https://github.com/sergeLabo/accelerometer_service_osc/blob/main/main.py|main.py]] 
 <code python> <code python>
 from jnius import autoclass from jnius import autoclass
Ligne 68: Ligne 86:
 SERVICE_NAME = 'org.kivy.accelerometer.ServicePong' SERVICE_NAME = 'org.kivy.accelerometer.ServicePong'
 print("SERVICE_NAME:", SERVICE_NAME) print("SERVICE_NAME:", SERVICE_NAME)
-</code> 
  
-====service.py===+..... 
-<code python>+ 
 +class AccelerometerApp(App): 
 +     
 +    ... 
 +     
 +    def start_service(self): 
 +        if ANDROID: 
 +            self.service autoclass(SERVICE_NAME) 
 +            self.m_activity autoclass(u'org.kivy.android.PythonActivity').mActivity 
 +            argument '' 
 +            self.service.start(self.m_activity, argument)     
 +     
 +    ... 
 +     
 +    def do_quit(self): 
 +        if ANDROID: 
 +            self.service.stop(self.m_activity) 
 +            self.service None 
 +        else: 
 +            self.client.send_message(b'/stop', [1]) 
 +            sleep(1)
  
 +        AccelerometerApp.get_running_app().stop()
 </code> </code>
 +        
 +===service.py===
 +[[https://github.com/sergeLabo/accelerometer_service_osc/blob/main/service.py|service.py]]
  
 <code python> <code python>
 +class AccelerometerService:
  
-</code>+    def __init__(self):
  
-<code python>+        ... 
 +        self.init_osc() 
 +        self.sensor_init() 
 +         
 +    ... 
 +     
 +    def init_osc(self): 
 +        """Le serveur peut envoyer mais impossible d'avoir 2 serveurs sur le même port 
 +        de la même machine, donc il faut un client. 
 +        """ 
 +        self.server = OSCThreadServer() 
 +        self.server.listen('localhost', port=3001, default=True) 
 +        # Les callbacks du serveur 
 +        self.server.bind(b'/activity', self.on_activity) 
 +        self.server.bind(b'/stop', self.on_stop) 
 +        self.server.bind(b'/sensor_enable', self.on_sensor_enable) 
 +        # Un simple client 
 +        self.client = OSCClient(b'localhost', 3003) 
 +         
 +    ... 
 +     
 +    def run(self): 
 +        while self.loop: 
 +            self.get_acceleration() 
 +            sleep(0.02)
  
 +
 +if __name__ == '__main__':
 +
 +    ACCELEROMETER = AccelerometerService()
 +    ACCELEROMETER.run()
 </code> </code>
-=====Kivy Accelerometer Service OSC===== 
-====Sources sur GitHub==== 
-  * **[[https://github.com/sergeLabo/accelerometer_service_osc|accelerometer_service_osc]]** 
-===*.apk=== 
-Dans le dossier bin 
  
-===TODO=== 
-Si il n'y a pas d'accelerometer sur Android, ça va sans doute mal marcher. 
  
 =====Un projet plus complet===== =====Un projet plus complet=====
kivy_android_service.1604307937.txt.gz · Dernière modification : 2020/11/02 09:05 de serge