在应用程序中我正在使用FusedLocationProviderClient
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
我的位置请求
LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
当设备位置模式处于仅GPS模式时,此请求似乎没有获得任何位置更新。
我可以发出位置设置请求,并要求用户将位置模式更改为HighAccuracy以支持位置请求。
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(mLocationRequest);
mLocationSettingsRequest = builder.build();
它将向用户显示一个对话框并要求他更改位置模式,但此更改会将设备位置模式更改为高精度。即使应用程序关闭后,更改仍然保持不变并消耗数据。
有没有办法只为应用程序更改位置模式? 有些事情,例如,当运行它的应用程序可以处于HighAccuracy模式并且当应用程序关闭时,它将返回到之前设备的任何模式。
答案 0 :(得分:1)
你必须考虑Activity Lifecycle,以便将配置更改为之前的状态,这可以通过在切换模式&之前用Settings Client读取配置来获得。保留它以便以后恢复。与恢复设置最相关的可能是方法Activity
,因为它始终是最终的最终呼叫(除非电池断开连接)。
onStart()
应该实施onResume()
,onPause()
,onStop()
,onDestroy()
,{{1}}。这些甚至是SDK文档中一个非常合适的例子: