java – 我的手机没有移动,但gps lat长值仍然在变化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 我的手机没有移动,但gps lat长值仍然在变化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4448字,纯文字阅读大概需要7分钟。
内容图文
![java – 我的手机没有移动,但gps lat长值仍然在变化](/upload/InfoBanner/zyjiaocheng/819/527a3cba819740fdb1e7389453228aee.jpg)
我的手机没有移动,但GPS纬度/长值不断变化,这是为什么?
如何解决这个问题?如何获得我的移动设备的可靠lat长值…我使用以下代码获取GPS位置:
public Location getLocation() {
try {
locationManager = (LocationManager) mContext
.getSystemService(LOCATION_SERVICE);
// getting GPS status
isGPSEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
// getting network status
isNetworkEnabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) {
// no network provider is enabled
} else {
this.canGetLocation = true;
if (isGPSEnabled) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
// Log.d("GPS Enabled", "GPS Enabled");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
if (isNetworkEnabled) {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
// Log.d("Network", "Network");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
// if GPS Enabled get lat/long using GPS Services
}
} catch (Exception e) {
e.printStackTrace();
}
return location;
}
解决方法:
有很多原因可以实现这一点,而且可能根本不是问题.
有时,只是您的GPS可以更好地修复您的位置,或者位置提供商可能已更改.
P.S.:准确性并不好,所以您的位置可能会不时变化.正如您在this link所见.您可以从6个不同的来源获取您的位置,每个来源都有不同的准确度.
>缓存GPS.
大多数机器人都能够存储最后知道的GPS位置.这通常在应用程序首次启动时使用,您可以检索时间戳,纬度,经度和准确度.
示例代码:
locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
>缓存网络.
Android设备还可以存储由蜂窝操作符的网络位置提供商确定的最后已知位置.提供商从蜂窝网络和WiFi收集信息(如果已打开),然后将其发送到远程服务器端进程,该进程处理信息并发送回大致位置.并非所有国家/地区都提供此功能.就像GPS一样,您通常会检索时间戳,纬度,经度和准确度.
示例代码:
locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
>实时GPS.
这是从GPS流出的原始信息.当GPS首次打开时,它不会立即返回任何信息,它必须首先预热.预热时间因设备而异,如果您在建筑物内,通常需要一分钟或更长时间.更多关于这一点.根据您的提供商允许的内容,您可以访问时间戳,纬度,经度,海拔高度,方位,速度,精度和行驶距离.
示例代码:
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,time,distance,listener);
>实时网络.
这是由蜂窝操作符返回的原始网络位置提供商信息,例如美国的AT& T.不同的操作符使用不同的信息来确定位置,例如WiFi数据,GPS信息,附近的蜂窝塔等.取决于您的操作符允许的内容,您可以访问时间戳,纬度,经度,海拔高度,精度和行进距离.
示例代码:
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,time,distance,listener);
>被动.
此选项仅表示您的应用程序可以在最小化状态下侦听位置更新.我们的想法是节省电池电量,以便在应用程序最小化时,您的应用程序提供商不会全速前进.这将是巨大的电池消耗.被动位置可以侦听另一个应用程序以请求位置更新.您可以访问时间戳,纬度,经度,海拔高度和准确度.据我所知,您将无法确定从哪个提供商获取此信息.
示例代码:
<receiver android:name=".PassiveLocationChangedReceiver" android:enabled="true"/>
> NMEA.
虽然它不是人类可读的,但您可以访问原始NMEA字符串.通常,这些字符串用于编程访问,并且只对开发人员或工程师有意义.此数据通常用于海事应用程序.数据仅在GPS预热后才可用.
资料来源:此信息来自here.
此外,在获取位置时有一些非常常见的错误来源,您可以从Android文档中看到:
Obtaining user location from a mobile device can be complicated. There are several reasons why a location reading (regardless of the source) can contain errors and be inaccurate. Some sources of error in the user location include:
- Multitude of location sources
GPS, Cell-ID, and Wi-Fi can each provide a clue to users location.
Determining which to use and trust is a matter of trade-offs in
accuracy, speed, and battery-efficiency.
- User movement
Because the user location changes, you must account for movement by
re-estimating user location every so often.
- Varying accuracy
Location estimates coming from each location source are not consistent
in their accuracy. A location obtained 10 seconds ago from one source
might be more accurate than the newest location from another or same
source.
请花些时间阅读Google的Location Strategies文档.
有关LocationManager here的更多信息.
内容总结
以上是互联网集市为您收集整理的java – 我的手机没有移动,但gps lat长值仍然在变化全部内容,希望文章能够帮你解决java – 我的手机没有移动,但gps lat长值仍然在变化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。