我在Android手机上使用QPython编写一个非常简单的脚本。我想提取当前位置的GPS坐标。但是,脚本只输出"网络"坐标,从不GPS。以下是代码段:
#qpy:2
#qpy:console
import androidhelper as android
import time, urllib2
while 1:
time.sleep(5)
droid=android.Android()
droid.startLocating()
event=droid.eventWaitFor('location', 10000).result
try:
lng=event['data']['gps']['longitude']
lat = event['data']['gps']['latitude']
print "Longitude: %s ||| Latitude: %s" %(lng,lat)
except:
print "Network Coordinates"
我尝试了最短的更新时间,例如:droid.startLocating(10000, 0)
增加eventWaitFor()
的等待时间,四处移动,但我唯一得到的坐标是网络'。有没有办法强迫"强迫" GPS坐标的返回?
答案 0 :(得分:0)
在玩完这个之后,事实证明,如果你打电话给droid.getLastKnownLocation()
并且你移动了一点,你会得到更新的GPS坐标
答案 1 :(得分:0)
我有一台较旧的Nexus 7平板电脑,其中大部分结果都是"网络",但" gps"偶尔会来。在较新的手机上,我获得绝大多数" gps"结果,每隔几秒就会产生一次。以下代码过滤掉"网络"结果并修复了系统未更新lat / lon坐标的问题。
#-*-coding:utf8;-*-
#qpy:3
#qpy:console
import android
droid = android.Android()
while True:
droid.startLocating()
droid.eventWaitFor('location', int(9000))
location = droid.readLocation().result
if len(location) > 0:
# print('\n', location)
if 'gps' in location:
print('\n' + location['gps']['provider'])
print('Time:' + str(location['gps']['time']))
print('Lat:' + str(location['gps']['latitude']))
print('Lon:' + str(location['gps']['longitude']))
droid.stopLocating()