无法在真正的 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 上无法获取当前位置

React-Native Geolocation 在 Android 上无法按预期工作

android打开网页,并保存当前位置源码

无法在 Android 手机上获取位置