私のアプリは 15 分ごとに GPS 位置データをサーバーに送信します。この機能は、アプリの中心的な目的です。
ただし、電話機の電源を切って使用していないときは、GPS のログは徐々に減少します。GPS レコード間の時間は、しばらくの間 15 分で、その後 1 時間、2 時間、4 時間、6 時間になり、電話を移動するか電源を入れると 15 分に戻ります。
これは、Android 6 で導入された Doze モードによるものと思われます。アプリを Battery Optimizations ホワイトリストに追加しましたが、違いはありませんでした。
- この場合、ホワイトリストが役に立たないのはなぜですか?
代わりに何をすべきですか?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));