Android FusedLocationProvider-如果位置模式为;仅限设备“;?

Android FusedLocationProvider-如果位置模式为;仅限设备“;?,android,google-play-services,android-location,Android,Google Play Services,Android Location,我一直在与FusedLocationProvider打交道,我发现如果您的手机的定位模式设置为“仅限设备”(设置更改-这意味着仅启用GPS进行定位。Wifi网络和手机发射塔不用于提高准确性),然后,我无法找到一种方法让FusedLocationProvider在不要求用户将其更改为高精度的情况下为您获取位置(始终调用onResolutionRequired) 所有四个LocationRequest优先级都不起作用: 优先级高精度-要求切换到位置模式“高” “准确度” 优先级\平衡\功率\精度-同

我一直在与FusedLocationProvider打交道,我发现如果您的手机的定位模式设置为“仅限设备”(设置更改-这意味着仅启用GPS进行定位。Wifi网络和手机发射塔不用于提高准确性),然后,我无法找到一种方法让FusedLocationProvider在不要求用户将其更改为高精度的情况下为您获取位置(始终调用onResolutionRequired)

所有四个LocationRequest优先级都不起作用:

  • 优先级高精度-要求切换到位置模式“高” “准确度”
  • 优先级\平衡\功率\精度-同上
  • 优先级低功率-同上
  • 优先级\u没有\u电源-只是不起作用

  • 如果设备处于此模式,是否无法通过FusedLocationProvider获取位置?我很确定你可以通过android.location.LocationManager获得它。这似乎是一个巨大的设计缺陷,如果这是为了更好地进行抽象的话。

    您确实需要使用LocationManager来检测这一点,我同意这是非常愚蠢的。使用以下代码:

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    if (locationManager != null && locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
       requestLocationUpdates();
    } else {
       //Location request code
    }
    
    下面是我制作的一个示例项目,其中包含了这种技术:


    这样行吗?你能解释一下我怎样才能只为这个设备写代码吗?我花了一个下午的时间,但现在你要说的是:谢谢你的努力,但是当我将它切换到只使用设备(只使用GPS)模式时,它仍然不工作。你说它不工作是什么意思?会发生什么?它在我的设备和emulator上也可以正常工作。不,在moto e power android操作系统6.0版中不工作。你有解决方案吗?你能给我解释一下吗?