无法在真正的 android 设备上获取当前位置
Posted
技术标签:
【中文标题】无法在真正的 android 设备上获取当前位置【英文标题】:Unable to get the current location on real android device 【发布时间】:2015-10-10 15:27:43 【问题描述】:我需要获取当前位置的纬度和经度来绘制路线,我的代码可以在模拟器上运行,但是当我在真实设备上调试时,它不能。这就是我获取当前位置的方式:
private void gotoCurrentLocation()
mMap.setMyLocationEnabled(true);
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,listener);
Location myLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(myLocation==null) MYPLACE = null; return;
MYPLACE = new LatLng(myLocation.getLatitude(),myLocation.getLongitude());
mMap.addMarker(new MarkerOptions().position(ll).title("You're here"));
LocationListener listener = new LocationListener()
@Override
public void onLocationChanged(Location location)
MYPLACE = new LatLng(location.getLatitude(),location.getLongitude());
这是 GenyMotion 虚拟设备上的地图。当我在真实设备上调试时,地图在当前位置也有一个小蓝点,就像在虚拟设备上一样,但MYPLACE
为空,它无法在当前位置放置标记。代码有什么问题吗?谁能帮帮我!!
这是在真机上:
【问题讨论】:
你确定你的设备有gps并且它的gps开启 是的,我很确定,我在使用我的应用程序之前使用谷歌地图 你收到地图了吗?也许是 api key 的问题? 我看到了地图,它用一个蓝色的小圆圈显示了当前位置,但我的应用可以获取该位置的纬度,我将屏幕截图添加到帖子中 安装应用后尝试重启设备。 【参考方案1】:这可能是因为在某些设备上 GPS 需要一些时间来初始化。 如果您在 GPS 初始化之前请求您的当前位置,您肯定会得到一个空位置值,因为 GPS 尚未初始化。
有几种方法可以防止这种情况。我建议您使用 Play Services 进行位置检测,或者您可以简单地使用一个名为 ,
android-ReactiveLocation
您可以请求反应位置以获取最后一个已知位置,这将防止获得空值,
ReactiveLocationProvider locationProvider = new ReactiveLocationProvider(context);
locationProvider.getLastKnownLocation()
.subscribe(new Action1<Location>()
@Override
public void call(Location location)
doSthImportantWithObtainedLocation(location);
);
【讨论】:
以上是关于无法在真正的 android 设备上获取当前位置的主要内容,如果未能解决你的问题,请参考以下文章
Android怎么实现点击按钮获取当前位置的信息,没有地图的情况下。
在 Android 上获取用户当前位置的最简单、最可靠的方法是啥?
在没有 GPS 的情况下,使用 navigator.geolocation 在 react-native 上无法获取当前位置