UsageStatsManager API を使用して、特定の時間間隔の使用統計を取得しています。定義済みの間隔、つまりINTERVAL_DAILY、INTERVAL_WEEKLY、INTERVAL_MONTHLY、INTERVAL_YEARLYを使用すると、すべて正常に機能します。しかし、過去 2 時間または 3 時間のデータを表示したい場合は、今日のデータを 1 日分取得しています。Calendars と System.currentTimeMillis() を使用してみましたが、フィルタリングされた結果は得られませんでした。
カレンダーアプローチ:
Calendar startCalendar = Calendar.getInstance();
startCalendar.add(Calendar.HOUR_OF_DAY, -2);
Calendar endCalendar = Calendar.getInstance();
そして、これを次のように queryUsageStats メソッドに渡します。
usageList = usm.queryUsageStats(interval, startCalendar.getTimeInMillis(), endCalendar.getTimeInMillis());
interval は INTERVAL_BEST です。
System.currentTimeMillis() アプローチ:
long startTime = System.currentTimeMillis() - 7200*1000 // 7200 seconds i.e. 2 hrs
long endTime = System.currentTimeMillis();
上記と同じように、これを queryUsageStats に渡します。
usageList = usm.queryUsageStats(interval, startTime, endTime);
interval は再び INTERVAL_BEST です。
INTERVAL_BEST がこの情報を含むように適切に文書化されていないため、この期間、つまり 1 日未満のデータを取得できるかどうかを知りたいです。私はこの問題で立ち往生しているので、どんな助けもいただければ幸いです。