不知道为什么我手机上 NETWORK_PROVIDER 是不可用的,GPS_PROVIDER 请求定位后,3 分钟才会收到位置更新的回调:
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0f, mLocationListener)
2023-09-18 12:27:00.636 26666-26666 ViewRootImpl app I ViewRoot's Touch Event : ACTION_UP
2023-09-18 12:30:17.056 26666-26666 Logger@Android app D onLocationChanged(MainActivity.kt:40) -> onLocationChanged:Location[gps 31.419743,115.446772 hAcc=67 et=+18h14m1s466ms etAcc=+5ms alt=93.18548583984375 vAcc=94 sAcc=??? bAcc=??? {Bundle[mParcelledData.dataSize=96]}]
locationManager.getLastKnownLocation()肯定也不可信,这些地图软件是怎么实现的?
1
opengps 2023-09-18 12:46:46 +08:00
地图软件的信息来源比较多:
1 ,ip 定位,大厂甚至有自己的高精度定位库 2 ,手机基站定位 3 ,蓝牙定位 4 ,wifi 定位 5 ,惯性导航( app 用上这个的这个很少,毕竟高精度场景极其贵重) 6 ,其他辅助定位(比较多,综合应用,比如浏览器定位,比如同局域网内其他服务辅助的定位等等) |
2
NoOneNoBody 2023-09-18 13:13:02 +08:00
不懂安卓开发,只是从个人认知推测
你所说的这个是客户端完成,地图软件应该是服务端完成 客户端从请求到获取结果,中间需要做连接、安全检查等等,甚至可能人为延时(出于安全理由的规定) 服务端通过多参数算法完成(见#1),而且因为有证照,安全校验过程、延时等等可能很短,gps 如果耗时长的话,可能只是用于验证和修正,就是除非算法结果和实测 gps 相差较大,需要重算,否则一般情况简单修正就能显示了 |
3
nilsNgoose 2023-09-18 13:35:04 +08:00
GPS_PROVIDER 响应过久,一般是楼宇密集,遮挡信号。
|
4
j3dream 2023-09-18 14:32:51 +08:00
NETWORK_PROVIDER 小米的应该是可用的, 网络定位多数是通过获取基站信息直接查数据库得到, 基站数据有一些网站可以查 比如: http://www.cellocation.com/, 卫星定位很多时候是因为搜星、遮挡导致速度很慢,可以试试下载一下 GPSTest 试试,
|