Получить точное Android GPS-местоположение в Python
Я пытаюсь получить GPS-местоположение моего телефона Android в Python (с помощью приложения QPython3). Этот вид работает, но, похоже, в Android есть несколько LocationProviders:
GPS: Чистое местоположение GPS, медленно, потребляет энергию, но очень точно, и именно то, что мне нужно.сеть: сочетание GPS и Wi-Fi / сотовой локации, быстрее, но менее точнопассивны: как выше, но полностью без использования GPSПроблема: Когда я запускаю свой сценарий (ниже), я получаю только свое местоположение, предоставленное «сетью», которое недостаточно точно.
Но я не могу найти способ заставить конкретного LocationProvider.
Код:
# import needed modules
import android
import time
import sys, select, os #for loop exit
#Initiate android-module
droid = android.Android()
#notify me
droid.makeToast("fetching GPS data")
print("start gps-sensor...")
droid.startLocating()
while True:
#exit loop hook
if sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
line = input()
print("exit endless loop...")
break
#wait for location-event
event = droid.eventWaitFor('location',10000).result
if event['name'] == "location":
try:
#try to get gps location data
timestamp = repr(event['data']['gps']['time'])
longitude = repr(event['data']['gps']['longitude'])
latitude = repr(event['data']['gps']['latitude'])
altitude = repr(event['data']['gps']['altitude'])
speed = repr(event['data']['gps']['speed'])
accuracy = repr(event['data']['gps']['accuracy'])
loctype = "gps"
except KeyError:
#if no gps data, get the network location instead (inaccurate)
timestamp = repr(event['data']['network']['time'])
longitude = repr(event['data']['network']['longitude'])
latitude = repr(event['data']['network']['latitude'])
altitude = repr(event['data']['network']['altitude'])
speed = repr(event['data']['network']['speed'])
accuracy = repr(event['data']['network']['accuracy'])
loctype = "net"
data = loctype + ";" + timestamp + ";" + longitude + ";" + latitude + ";" + altitude + ";" + speed + ";" + accuracy
print(data) #logging
time.sleep(5) #wait for 5 seconds
print("stop gps-sensor...")
droid.stopLocating()
Пример вывода (фальшивые координаты):
net;1429704519675;37.235065;-115.811117;0;0;23
net;1429704519675;37.235065;-115.811117;0;0;23
net;1429704519675;37.235065;-115.811117;0;0;23
Суммирование: Как получить точное местоположение GPS в Android с помощью Python?
Спасибо всем заранее!
РЕДАКТИРОВАТЬ: уже проверено:
внутри снаруживключено выключеноWiFi GPS включен (до запуска скрипта)