如何获取android gps 数据

如何获取android gps 数据

android gnss 框架在Android中, gps 数据通过gnss location框架获取,Location以分层的方式实现, 从上到下依次为

应用框架: 提供android.location API

定位管理器: LocationManager定位提供者: LocationProvider位置信息: Location定位监听者: LocationListener

Framework Services: 服务实现, 主要涉及文件如下

frameworks/base/location/java/android/location/*frameworks/base/services/core/java/com/android/server/location/*frameworks/base/services/core/java/com/android/server/LocationManagerService.javaframeworks/base/services/core/java/com/android/server/location/GnssLocationProvider.java

JNI: 封装GNSS hal层接口(IGnss)给GnssLocationProvider使用体现

frameworks/base/services/core/jni/com_android_server_location_GnssLocationProvider.cpp

HAL层: 实现了IGnss接口和IGnss服务

hardware/libhardware/include/hardware/gps.h

hardware/interfaces/gnss/1.0/ ====>android.hardware.gnss@1.0.sohardware/interfaces/gnss/1.0/default/ ====>android.hardware.gnss@1.0-impl.so android.hardware.gnss@1.0-service

hardware/interfaces/gnss/1.1/ ====>android.hardware.gnss@1.1.sohardware/interfaces/gnss/1.1/default/ ====>android.hardware.gnss@1.1-service

gps 用法VIM3 板子在安卓9上已经集成usb gps 功能,通过usb接口插入gps 接收器,然后安装gps apk,可以查看当前位置的经纬度等信息,也可以安装地图软件查看定位

注意1) 从GPS模块启动到获取第一次定位数据,可能需要比较长的时间2) 在没有网络的情况下也能使用,但是gps设备需要放置在室外才能接收到卫星信号

使用gps定位,需要先打开设置中的Location 开关,Droid Settings > More settings > Device Preferences > Loacation,Location 选择 on,命令查看location_providers_allowed 将为gps

123130|console:/ $ settings list secure |grep location_providers_allowed location_providers_allowed=gpsconsole:/ $

apk 运行如下

android gps 位置数据api 说明android frameworks 中封装了标准的api让应用去获取gps相关的数据,比如经纬度数据通过frameworks/base/location/java/android/location/Location.java这个类中的方法去获取,具体可以参考安卓源代码frameworks/base/tests/LocationTracker中的实现,Location 中获取经纬度api 如下

123456789101112131415161718192021583 /**584 * Get the latitude, in degrees.585 *586 *

All locations generated by the {@link LocationManager}587 * will have a valid latitude.588 */589 public double getLatitude() {590 return mLatitude;591 }600 /**601 * Get the longitude, in degrees.602 *603 *

All locations generated by the {@link LocationManager}604 * will have a valid longitude.605 */606 public double getLongitude() {607 return mLongitude;608 }

经纬度信息由GnssLocationProvider提供,如下

1201-01 13:11:01.483 3735 3757 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_LOCATION, 1, Location[gps 22.570539,113.863433 hAcc=1 et=+6m35s993ms alt=153.4 vel=0.03909778 vAcc=??? sAcc=??? bAcc=??? {Bundle[{satellites=6, maxCn0=33, meanCn0=22}]}])

22.570539,113.863433 分别代表的是经纬度数据

相关推荐

丛林迷宫,曾经的法师发家致富的天堂
日博365哪个是真的

丛林迷宫,曾经的法师发家致富的天堂

LOL新版狼人强势来袭:三天后被紧急削弱,玩家质疑削弱的Q技能!
365彩票下载1.0.0老版本

LOL新版狼人强势来袭:三天后被紧急削弱,玩家质疑削弱的Q技能!

照片拼接排版软件有哪些?一文带你了解5款优秀的图片编辑软件
365bet哪个国家的

照片拼接排版软件有哪些?一文带你了解5款优秀的图片编辑软件

《纯粹农场2018》游戏评测:让你体验世界化的农业生活
日博365哪个是真的

《纯粹农场2018》游戏评测:让你体验世界化的农业生活

宠物鳄鱼价格及饲养方法_4步教你知道_清晰图解
365彩票下载1.0.0老版本

宠物鳄鱼价格及饲养方法_4步教你知道_清晰图解

微信最多可以加多少人?腾讯回应
365彩票下载1.0.0老版本

微信最多可以加多少人?腾讯回应