from plyer import gps from kivy.app import App from kivy.clock import Clock from kivy.properties import DictProperty from kivy.clock import mainthread from kivy.utils import platform from kivy.uix.screenmanager import ScreenManager, Screen, RiseInTransition from kivy_garden.mapview import MapView from kivy.vector import Vector from kivy.animation import Animation from math import floor import random from time import sleep from pprint import pprint class MapScreen(Screen): def cambia(self): print(self.app_label) if self.app_label == 'ms hola': self.app_label = 'ms adios' else: self.app_label = 'ms hola' print(self.app_label) class CompassScreen(Screen): def cambia(self): print(self.app_label) if self.app_label == 'cs hola': self.app_label = 'cs adios' else: self.app_label = 'cs hola' print(self.app_label) class PruebitaApp(App): gps_data = DictProperty() session_data = DictProperty() def dump(self, dt): print(dt, self.gps_data, self.session_data) def set_destination(self): self.session_data['lat'] = self.ms.ids.centermark.lat self.session_data['lon'] = self.ms.ids.centermark.lon def cambia(self): print(self.app_label) if self.app_label == 'hola': self.app_label = 'adios' else: self.app_label = 'hola' print(self.app_label) def request_android_permissions(self): from android.permissions import request_permissions, Permission def callback(permissions, results): if all([res for res in results]): print("aguas: callback. All permissions granted.") else: print("aguas: callback. Some permissions refused.", results) request_permissions([Permission.ACCESS_COARSE_LOCATION, Permission.ACCESS_FINE_LOCATION], callback) def gps_start(self, minTime, minDistance): gps.start(minTime, minDistance) def gps_stop(self): gps.stop() def on_pause(self): self.gps_stop() return True def on_resume(self): self.gps_start(1000, 0) @mainthread def on_location(self, **kwargs): self.gps_data = kwargs def build(self): # start GPS try: gps.configure(on_location=self.on_location) #on_status=self.on_status) except NotImplementedError: import traceback traceback.print_exc() print('GPS is not implemented for your platform') if platform == "android": print("gps.py: Android detected. Requesting permissions") self.request_android_permissions() self.gps_start(1000, 0) # setup app screens screen_manager = ScreenManager(transition=RiseInTransition()) self.ms = MapScreen(name='map') self.ms.app_label = 'ms hola' screen_manager.add_widget(self.ms) self.cs = CompassScreen(name='compass') self.cs.app_label = 'cs hola' screen_manager.add_widget(self.cs) self.app_label = 'hola' Clock.schedule_interval(self.dump, 2.0) return screen_manager if __name__ == '__main__': app = PruebitaApp() app.run()