2013-06-04 43 views
7

Im mới trong KIVY, pyjnius và python-android. Tôi cần phải làm cho ứng dụng đơn giản cho android, trong đó cho thấy tọa độ GPS. Nhưng, như tôi đã nói, tôi mới ở kivy và pyforandroid. Ai đó có thể hiển thị/đưa cho tôi ví dụ, hiển thị tọa độ của tôi trong tiện ích con kivy-label đơn giản không? Cảm ơn rất nhiều!Làm thế nào để tạo ứng dụng GPS cho android bằng cách sử dụng kivy, pyjnius?

Tôi đã cố gắng làm một cái gì đó như thế này nhưng ...

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<LocationListener> listeners = new ArrayList<LocationListener>(); 

    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(); 

} 

Trong 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() 

Trả lời

11

tôi đã làm trong khi trước đây một bản demo của truy cập GPS trong Kivy/pyjnius:

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

Nhìn vào mã nguồn, mọi thứ đều có trong đó.

+0

Thú vị. Tôi sẽ có một cái nhìn về nó! Hiện đang tò mò về chiều sâu của sự tích hợp Android trong Kivy – swdev

Các vấn đề liên quan