Merge "Change registerUsageSessionObserver to take Duration for timelimits"

This commit is contained in:
Michael Wachenschwanz
2019-03-13 20:35:49 +00:00
committed by Android (Google) Code Review
3 changed files with 36 additions and 8 deletions

View File

@@ -1198,7 +1198,7 @@ package android.app.usage {
method public int getUsageSource();
method @RequiresPermission(allOf={android.Manifest.permission.SUSPEND_APPS, android.Manifest.permission.OBSERVE_APP_USAGE}) public void registerAppUsageLimitObserver(int, @NonNull String[], @NonNull java.time.Duration, @NonNull java.time.Duration, @Nullable android.app.PendingIntent);
method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void registerAppUsageObserver(int, @NonNull String[], long, @NonNull java.util.concurrent.TimeUnit, @NonNull android.app.PendingIntent);
method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void registerUsageSessionObserver(int, @NonNull String[], long, @NonNull java.util.concurrent.TimeUnit, long, @NonNull java.util.concurrent.TimeUnit, @NonNull android.app.PendingIntent, @Nullable android.app.PendingIntent);
method @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void registerUsageSessionObserver(int, @NonNull String[], @NonNull java.time.Duration, @NonNull java.time.Duration, @NonNull android.app.PendingIntent, @Nullable android.app.PendingIntent);
method public void reportUsageStart(@NonNull android.app.Activity, @NonNull String);
method public void reportUsageStart(@NonNull android.app.Activity, @NonNull String, long);
method public void reportUsageStop(@NonNull android.app.Activity, @NonNull String);

View File

@@ -28,6 +28,14 @@ package android.app.admin {
}
package android.app.usage {
public final class UsageStatsManager {
method @Deprecated @RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE) public void registerUsageSessionObserver(int, @NonNull String[], long, @NonNull java.util.concurrent.TimeUnit, long, @NonNull java.util.concurrent.TimeUnit, @NonNull android.app.PendingIntent, @Nullable android.app.PendingIntent);
}
}
package android.content {
public class Intent implements java.lang.Cloneable android.os.Parcelable {

View File

@@ -660,6 +660,30 @@ public final class UsageStatsManager {
}
}
/**
* @deprecated use {@link #registerUsageSessionObserver(int, String[], Duration, Duration,
* PendingIntent, PendingIntent)}.
*
* @removed
* @hide
*/
@Deprecated
@SystemApi
@RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE)
// STOPSHIP b/128455269: remove this method
public void registerUsageSessionObserver(int sessionObserverId,
@NonNull String[] observedEntities, long timeLimit, @NonNull TimeUnit timeUnit,
long sessionThresholdTime, @NonNull TimeUnit sessionThresholdTimeUnit,
@NonNull PendingIntent limitReachedCallbackIntent,
@Nullable PendingIntent sessionEndCallbackIntent) {
final Duration timeLimitDuration = Duration.ofMillis(timeUnit.toMillis(timeLimit));
final Duration sessionThresholdDuration =
Duration.ofMillis(sessionThresholdTimeUnit.toMillis(sessionThresholdTime));
registerUsageSessionObserver(sessionObserverId, observedEntities, timeLimitDuration,
sessionThresholdDuration, limitReachedCallbackIntent, sessionEndCallbackIntent);
}
/**
* Register a usage session observer that receives a callback on the provided {@code
* limitReachedCallbackIntent} when the sum of usages of apps and tokens in the {@code
@@ -679,11 +703,8 @@ public final class UsageStatsManager {
* null and must include at least one package or token.
* @param timeLimit The total time the set of apps can be used continuously before the {@code
* limitReachedCallbackIntent} is delivered. Must be at least one minute.
* @param timeUnit The unit for time specified in {@code timeLimit}. Cannot be null.
* @param sessionThresholdTime The time that can take place between usage sessions before the
* next session is considered a new session. Must be non-negative.
* @param sessionThresholdTimeUnit The unit for time specified in {@code sessionThreshold}.
* Cannot be null.
* @param limitReachedCallbackIntent The {@link PendingIntent} that will be dispatched when the
* usage limit is exceeded by the group of apps. The
* delivered Intent will also contain the extras {@link
@@ -703,14 +724,13 @@ public final class UsageStatsManager {
@SystemApi
@RequiresPermission(android.Manifest.permission.OBSERVE_APP_USAGE)
public void registerUsageSessionObserver(int sessionObserverId,
@NonNull String[] observedEntities, long timeLimit, @NonNull TimeUnit timeUnit,
long sessionThresholdTime, @NonNull TimeUnit sessionThresholdTimeUnit,
@NonNull String[] observedEntities, @NonNull Duration timeLimit,
@NonNull Duration sessionThresholdTime,
@NonNull PendingIntent limitReachedCallbackIntent,
@Nullable PendingIntent sessionEndCallbackIntent) {
try {
mService.registerUsageSessionObserver(sessionObserverId, observedEntities,
timeUnit.toMillis(timeLimit),
sessionThresholdTimeUnit.toMillis(sessionThresholdTime),
timeLimit.toMillis(), sessionThresholdTime.toMillis(),
limitReachedCallbackIntent, sessionEndCallbackIntent,
mContext.getOpPackageName());
} catch (RemoteException e) {