Android 中的位置未更新
Posted
技术标签:
【中文标题】Android 中的位置未更新【英文标题】:Location Not Update in ANdroid 【发布时间】:2013-06-10 21:34:16 【问题描述】:我想获取移动当前位置,当我安装应用程序时,比第一次得到正确的纬度,但比每次显示第一次获取位置后。请给我正确的代码,以获得每次正确的纬度。 _ 在排序中我的位置未更新,或位置缓存不清楚。 ->我的代码
公共类 MyLocationListener 实现 LocationListener
private LocationManager mLocationManager;
private Location currentLocation;
public MyLocationListener(Context context)
mLocationManager = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
currentLocation = mLocationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
mLocationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 0, this);
public Location getBestLocationAvailable()
return currentLocation;
@Override
public void onLocationChanged(Location newBestLocation)
mLocationManager.removeUpdates(this);
currentLocation = newBestLocation;
@Override
public void nProviderDisabled(String arg0)
@Override
public void onProviderEnabled(String arg0)
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2)
MyLocationListener loc = new MyLocationListener(MainActivity.this);
位置 location = loc.getBestLocationAvailable(); system.out.println(location.getLatitude()+" "+location.getLongitude);
给我写答案,为什么我会老拉长?
【问题讨论】:
可能位置未更新。您确定调用了 onLcoationChanged 方法吗? 【参考方案1】:尝试在onLocationChnage()中获取经纬度
public void onLocationChanged(Location loc)
//sets and displays the lat/long when a location is provided
String lat = loc.getLatitude();
String longt= loc.getLongitude();
Toast.makeText(getApplicationContext(),"Lat"+ lat+ "Long"+longt, Toast.LENGTH_LONG).show();
在清单中添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
【讨论】:
我想在没有互联网的情况下获得 lat Long,使用 Gps。我也在 OnLocationChange 中更新位置,而不需要在 OnLocationChange() 方法中获得 lat long。请告诉我你的更新。【参考方案2】:您的代码看起来不错,但为什么要添加此字符串?
mLocationManager.removeUpdates(this);
因此,您只会收到一个位置更新,之后您的监听器将被禁用。尝试删除此字符串并再次检查。
另外,请注意不同的设备需要不同的时间来进行 GPS“冷”启动。在测试您的应用程序之前,请检查另一个应用程序(例如地图或 GPS 监视器)中的 GPS 状态。如果您的设备处于“冷”状态,您将长时间(10-20 分钟或更长时间)不会收到任何更新。
【讨论】:
以上是关于Android 中的位置未更新的主要内容,如果未能解决你的问题,请参考以下文章
屏幕关闭时,前台服务未在 Android 7.0+ 中接收位置更新
当应用程序处于后台时,带有 PendingIntent 的 Android FusedLocationClient 未收到位置更新
Android:未找到 SDK 位置。使用 local.properties 文件中的 sdk.dir 或使用 ANDROID_HOME 环境变量定义位置