【问题标题】:Android GPS get location return null in x86 emulator but return truth in arm emulatorAndroid GPS在x86模拟器中获取位置返回null,但在arm模拟器中返回真相
【发布时间】:2016-03-18 20:26:15
【问题描述】:

我尝试使用 LocationManager 获取 LastKnowLocation,这是我的代码:

LocationManager mLocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (mLocManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
        Location mLocation = mLocManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    }

我已经在 AndroidManifest.xml 中添加了权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

然后我使用 DDMS 将纬度和经度发送到模拟器,但是当我使用 x86 CPU 模拟器时,我得到了类似的错误

Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference

当我使用 arm CPU 模拟器时,我得到了正确的纬度和经度。谁能告诉我为什么我不能在 x86 模拟器中得到正确的位置,以及我该如何处理它。谢谢。

【问题讨论】:

  • 在尝试提取纬度和经度之前请参阅.. 确保位置不为空,并且在使用 double 和解析 lat long 时也是如此;确保位置不为空且不使用 GPS 提供程序;大多数情况下,该位置将为空......所以改为使用 NETWORK_PROVIDER......但确保 GPS 已打开,但包括对 GPS 统计的检查

标签: android nullpointerexception gps android-emulator locationmanager


【解决方案1】:

解决了! getLastKnownLocation() 方法不请求新位置,它只是可以检查是否有来自其他应用程序位置请求的最后一个已知位置。当我使用手臂模拟器时,我使用其他应用程序来获取位置,所以我的代码也可以获取位置。

所以如果你的应用返回错误喜欢

invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference

可能是getLastKnownLocation()方法的原因,尝试使用requestLocationUpdates()获取位置。

看这个: [Error invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-05
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    相关资源
    最近更新 更多