2

私のアプリは 15 分ごとに GPS 位置データをサーバーに送信します。この機能は、アプリの中心的な目的です。

ただし、電話機の電源を切って使用していないときは、GPS のログは徐々に減少します。GPS レコード間の時間は、しばらくの間 15 分で、その後 1 時間、2 時間、4 時間、6 時間になり、電話を移動するか電源を入れると 15 分に戻ります。

これは、Android 6 で導入された Doze モードによるものと思われます。アプリを Battery Optimizations ホワイトリストに追加しましたが、違いはありませんでし

  1. この場合、ホワイトリストが役に立たないのはなぜですか?
  2. 代わりに何をすべきですか?Wakelockを一定間隔で遅延させて Doze を防ぐことはできますか?

    // Request frequent location updates.
    Intent locationUpdateIntent = new Intent(this, StoreLocationService.class);
    locationUpdateIntent.setAction(MyAwesomeActionName);
    
    LocationRequest locationRequest = LocationRequest.create();
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    locationRequest.setInterval(15 * 60 * 1000); // 15 minutes
    locationRequest.setFastestInterval(15 * 60 * 1000); // 15 minutes
    
    LocationServices.FusedLocationApi.requestLocationUpdates(
            mGoogleApiClient, locationRequest,
            PendingIntent.getService(this, 0, locationUpdateIntent, 0));
    
4

1 に答える 1