¿Cómo hacer una aplicación de GPS para Android usando kivy, pyjnius?

Soy nuevo en KIVY, pyjnius y python-android. Necesito hacer una aplicación simple para Android, que muestra las coordenadas del GPS. Pero, como dije, soy nuevo en Kivy y Pyforandroid. ¿Alguien puede mostrarme / darme un ejemplo, que muestre mis coordenadas en un simple kivy-label-widget? ¡Muchas gracias!

He intentado hacer algo como esto pero …

package org.renpy.android; //import java.util.ArrayList; //import java.util.List; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.content.Context; import android.os.Bundle; import android.os.Looper; import java.lang.Thread; import android.app.Activity; public class KivyGps { LocationManager lm; Thread gpsThread; public long minDistance = 1; public int minTime = 1000; static class KivyLocationListener implements LocationListener { public Location lastLocation = new Location("Other"); //private List listeners = new ArrayList(); public void onLocationChanged(Location location) { // TODO Auto-generated method stub lastLocation = location; //updateListeners(location); } public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } // TODO Auto-generated method stub return lastLocation; } } static public KivyLocationListener locationListener = new KivyLocationListener(); public Thread init(final Activity currActivity) { gpsThread = new Thread( new Runnable() { public void run() { try { Looper.prepare(); lm = (LocationManager) currActivity.getSystemService( Context.LOCATION_SERVICE ); lm.requestLocationUpdates( LocationManager.GPS_PROVIDER, minTime, minDistance, locationListener ); Looper.loop(); } catch ( Exception e ) { e.printStackTrace(); } } } ); return gpsThread; } //gpsThread.start(); } 

En python

 from jnius import autoclass LocationListener = autoclass('android.location.LocationListener') LocationManager = autoclass('android.location.LocationManager') LocationProvider = autoclass('android.location.LocationProvider') Location = autoclass('android.location.Location') Looper = autoclass('android.os.Looper') Context = autoclass('android.content.Context') KivyGps = autoclass('org.renpy.android.KivyGps') currentActivity = cast('android.app.Activity', PythonActivity.mActivity) lm = currentActivity.getSystemService( Context.LOCATION_SERVICE) if lm.isProviderEnabled( LocationManager.GPS_PROVIDER ): print 'CON GPS' else: print 'SIN GPS' lps = lm.getAllProviders() for lp in lps.toArray(): print lp #Arreglar problema de derechos ACCESS_FINE_LOCATION en Kivy Launcher lp = lm.getProvider('gps') ll = KivyGps.locationListener kgps = KivyGps() gpsThread = kgps.init( currentActivity ) gpsThread.start() loc = ll.getCurrentLocation() if loc: print loc.getLatitude() print loc.getLongitude() 

Hace tiempo hice una demostración de acceso a GPS en Kivy / pyjnius:

https://github.com/tito/android-demo

Mira el código fuente, todo está en él.

Ahora puede utilizar Plyer: http://github.com/kivy/plyer .

Es compatible con GPS.

Plyer es una biblioteca de Python para acceder a las funciones de su hardware / plataforma.

Lo acabo de encontrar, así que no sé mucho al respecto.

Documentación:

https://plyer.readthedocs.org/en/latest/

Fuente:

https://github.com/kivy/plyer

Lo encontré en este tema de Kivy Github:

https://github.com/kivy/kivy/issues/994

Puede usar otra alternativa, que es el módulo de Android , recuerde, para probarlo en Qpython3 en su dispositivo Android porque tiene los permisos necesarios y también enciende su ubicación gps. Aquí está el código:

 import android droid = android.Android() loc = droid.readLocation() lattitude = loc.result['network']['latitude'] longitude = loc.result['network']['longitude'] print(lattitude, longitude )