9

KIVY、pyjnius、python-android の新機能です。GPS座標を表示するAndroid用のシンプルなアプリを作成する必要があります。しかし、私が言ったように、私はkivyとpyforandroidが初めてです。単純な kivy-label-widget で私の座標を示す例を誰かに見せてもらえますか? どうもありがとう!

私はこのようなことをしようとしましたが...

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

}

パイソンで

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

4 に答える 4

12

少し前に、Kivy/pyjnius 内で GPS にアクセスするデモを行いました:

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

ソースコードを見てください。すべてが含まれています。

于 2013-10-13T15:27:44.663 に答える
12

Plyer を使用できるようになりました: http://github.com/kivy/plyer

GPSに対応しています。

于 2014-01-22T22:59:11.767 に答える
3

Plyer は、ハードウェア / プラットフォームの機能にアクセスするための Python ライブラリです。

たまたま見つけたので詳しくはわかりません。

ドキュメンテーション:

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

ソース:

https://github.com/kivy/plyer

このKivy Githubの問題で見つけました:

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

于 2013-12-26T10:39:49.890 に答える
0

モジュールである別の代替手段を使用Androidして、Android デバイスの Qpython3 で試してみることができます。これには、必要な権限があり、GPS の場所もオンになっているためです。コードは次のとおりです。

import android
droid = android.Android()
loc = droid.readLocation()
lattitude = loc.result['network']['latitude']
longitude = loc.result['network']['longitude']
print(lattitude, longitude )
于 2018-12-02T06:40:35.103 に答える