0

現在の日付 (00:00:00 から 23:59:59) のデバイス上の各パッケージの使用統計のみを取得するために、UsageStatsManagerクラスのメソッドを使用しようとしています。queryUsageStats問題のコードは次のとおりです。

long startOfToday = TimeUtility.getStartOfToday();
long endOfToday = TimeUtility.getEndOfToday();
List<UsageStats> usageStats = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, startOfToday, endOfToday);

1 日の開始と終了を取得する方法:

    public static long getStartOfToday()
    {
        Calendar cStartOfDay = Calendar.getInstance();
        cStartOfDay.set(Calendar.HOUR_OF_DAY, 0);
        cStartOfDay.set(Calendar.MINUTE, 0);
        cStartOfDay.set(Calendar.SECOND, 0);
        cStartOfDay.set(Calendar.MILLISECOND, 0);
        return cStartOfDay.getTimeInMillis();
    }

    public static long getEndOfToday()
    {
        Calendar cEndOfDay = Calendar.getInstance();
        cEndOfDay.set(Calendar.HOUR_OF_DAY, 23);
        cEndOfDay.set(Calendar.MINUTE, 59);
        cEndOfDay.set(Calendar.SECOND, 59);
        cEndOfDay.set(Calendar.MILLISECOND, 999);
        return cEndOfDay.getTimeInMillis();
    }

ドキュメントの理解に基づいて、達成しようとしているものに適切なパラメーターを渡しました。

しかし、奇妙なことに、デバッグ中にリストに返された UsageStats オブジェクトを調べると、多くのオブジェクトが時間を表す mBeginTimeStamp 値 (エポックからのミリ秒単位で測定された、UsageStats オブジェクトが表す時間範囲の開始を表す long 値) を持っています。前日から。たとえば、今日の 12 月 13 日の午前 11 時にテストしているときに、リスト内の 1 つのパッケージの mBeginTimeStamp 値が 12 月 12 日の午後 1 時を指していました。

私に関する限り、これらの値は、UTC 時間ではなく、ローカル タイム ゾーンでの時間の表現です。

4

0 に答える 0