Merge "Add user-switching observer to AttentionDetector" into qt-dev

This commit is contained in:
Yi Jiang
2019-05-30 16:12:48 +00:00
committed by Android (Google) Code Review

View File

@@ -19,6 +19,8 @@ package com.android.server.power;
import static android.provider.Settings.System.ADAPTIVE_SLEEP; import static android.provider.Settings.System.ADAPTIVE_SLEEP;
import android.Manifest; import android.Manifest;
import android.app.ActivityManager;
import android.app.SynchronousUserSwitchObserver;
import android.attention.AttentionManagerInternal; import android.attention.AttentionManagerInternal;
import android.attention.AttentionManagerInternal.AttentionCallbackInternal; import android.attention.AttentionManagerInternal.AttentionCallbackInternal;
import android.content.ContentResolver; import android.content.ContentResolver;
@@ -28,6 +30,7 @@ import android.database.ContentObserver;
import android.os.Handler; import android.os.Handler;
import android.os.PowerManager; import android.os.PowerManager;
import android.os.PowerManagerInternal; import android.os.PowerManagerInternal;
import android.os.RemoteException;
import android.os.SystemClock; import android.os.SystemClock;
import android.os.UserHandle; import android.os.UserHandle;
import android.provider.Settings; import android.provider.Settings;
@@ -54,6 +57,8 @@ public class AttentionDetector {
private static final String TAG = "AttentionDetector"; private static final String TAG = "AttentionDetector";
private static final boolean DEBUG = false; private static final boolean DEBUG = false;
private Context mContext;
private boolean mIsSettingEnabled; private boolean mIsSettingEnabled;
/** /**
@@ -132,6 +137,7 @@ public class AttentionDetector {
} }
public void systemReady(Context context) { public void systemReady(Context context) {
mContext = context;
updateEnabledFromSettings(context); updateEnabledFromSettings(context);
mPackageManager = context.getPackageManager(); mPackageManager = context.getPackageManager();
mContentResolver = context.getContentResolver(); mContentResolver = context.getContentResolver();
@@ -141,6 +147,13 @@ public class AttentionDetector {
mMaxAttentionApiTimeoutMillis = context.getResources().getInteger( mMaxAttentionApiTimeoutMillis = context.getResources().getInteger(
com.android.internal.R.integer.config_attentionApiTimeout); com.android.internal.R.integer.config_attentionApiTimeout);
try {
final UserSwitchObserver observer = new UserSwitchObserver();
ActivityManager.getService().registerUserSwitchObserver(observer, TAG);
} catch (RemoteException e) {
// Shouldn't happen since in-process.
}
context.getContentResolver().registerContentObserver(Settings.System.getUriFor( context.getContentResolver().registerContentObserver(Settings.System.getUriFor(
Settings.System.ADAPTIVE_SLEEP), Settings.System.ADAPTIVE_SLEEP),
false, new ContentObserver(new Handler()) { false, new ContentObserver(new Handler()) {
@@ -326,4 +339,11 @@ public class AttentionDetector {
mRequested.set(false); mRequested.set(false);
} }
} }
private final class UserSwitchObserver extends SynchronousUserSwitchObserver {
@Override
public void onUserSwitching(int newUserId) throws RemoteException {
updateEnabledFromSettings(mContext);
}
}
} }