9

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 日未満のデータを取得できるかどうかを知りたいです。私はこの問題で立ち往生しているので、どんな助けもいただければ幸いです。

4

2 に答える 2

4

UsageStatsManager doc が言うように:

時間間隔の途中でのデータのリクエストには、その間隔が含まれます。

使用状況データはバケットに保存されているようで、最小バケットは 1 日であるため、1 日未満の期間の使用状況統計を照会することはできません。特定の日の 1 時間間隔でクエリを実行しても、1 日全体の使用統計が返されます。

于 2015-09-30T18:57:33.370 に答える