毎日使用されたすべてのアプリ パッケージとその期間を返すことを目的として、からクエリを実行しようとしていUsageStats
ます。UsageStatsManager
コード:
public static List<UsageStats> getUsageStatsList(Context context){
UsageStatsManager usm = getUsageStatsManager(context);
Calendar calendar = Calendar.getInstance();
long endTime = calendar.getTimeInMillis();
calendar.add(Calendar.DAY_OF_YEAR, -1);
long startTime = calendar.getTimeInMillis();
List<UsageStats> usageStatsList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,startTime, endTime);
return usageStatsList;
}
真夜中の直前に毎日発火するアラームと、クエリの使用状況統計があり、返されたデータを保存します。最初はすべてうまくいっているように見え、パッケージの結果とそのアクティブ時間を取得していましたが、1 時間ごとに結果を確認する機能を追加したところ、ここで奇妙な発見がありました。
の結果は、真夜中ではなく、さまざまな時間にリセットされているように見えました。これは、検索パラメーターとしてUsageStatsManager
使用していたことを考えると予想していたことです。INTERVAL_DAILY
パッケージの「時間」結果を保存したデータから、(大まかなタイミング):
- 午前3時
- 正午
- 午後3時
- 夜中
パッケージのタイミングがいつリセットされるかの間に相関関係があることは認識していますが、これは意図されたものですか?
私はすでに次のスレッドを見て、そこから多くの情報を入手しました: UsageStatsManager の使用方法?
その結果:
Android UsageStatsManager が間違った出力を生成しますか? queryUsageStats
コメントでは、から返されたデータは信頼できず、ランダムな結果が
返されていると述べています。
簡単なものが欠けているのか、それともUsageStatsManager
正しく機能していないのでしょうか?