即使手机进入睡眠状态,如何使用FusedLocationApi获取位置?

时间:2016-06-06 19:55:54

标签: android gps android-service alarmmanager android-location

我有一项服务,我会在获取设备位置的所有工作,以便将其发送到我的服务器。

为了获取位置我使用Google的LocationServices.FusedLocationApi API,如下所示:

Intent intent = new Intent(this, LocationIntentService.class);
mLocationPendingIntent =
    PendingIntent.getService(this, 0, intent,
         PendingIntent.FLAG_UPDATE_CURRENT);
LocationRequest request = LocationRequest.create().setInterval(1500).setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(googleApiClient);
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, request, mLocationPendingIntent);

以上工作正常,除非手机进入睡眠状态,否则屏幕会自动关闭或手动按下电源按钮以便这样做。

因此存在问题,即使服务仍在运行,gps也会停止获取位置结果;尚未被系统吃掉。

我认为问题可能是由系统关闭的实际gps以节省电池但我不知道如何设置它不会停止向我发送位置,即使手机处于空闲状态。

我想在AlarmManager上设置一个重复闹钟以回调我的WakefulBroadcastReceiver实施,但这样做会非常耗电,甚至不可行,因为系统似乎因为这个原因限制了警报间隔从Android 5.1开始。

0 个答案:

没有答案