首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中获取精确的Android GPS定位

在Python中获取精确的Android GPS定位
EN

Stack Overflow用户
提问于 2015-04-22 20:21:57
回答 3查看 22.4K关注 0票数 4

我尝试在Python中获取我的Android手机的GPS位置(使用QPython3应用程序)。这种方式是可行的,但看起来安卓系统中有几个LocationProviders:

  • gps:纯gps定位,速度慢,耗能大,但非常准确,而且完全是gps和wifi/cell定位的组合,更快,但accurate
  • passive:更少,但完全不使用gps

网络问题:当我运行我的脚本(如下所示)时,我只能得到“”提供的位置,这是不够准确的。

但是我找不到一种方法来强制一个特定的LocationProvider。

代码:

代码语言:javascript
复制
# 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()

示例输出(伪坐标):

代码语言:javascript
复制
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

Summarization:如何在安卓系统中使用Python获得精确的位置?

提前感谢大家!

编辑:已测试:

  • 内部/外部
  • 启用/禁用
  • WiFi GPS启用(运行脚本前)
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29797435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档