Loading core/java/android/app/ContextImpl.java +2 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UiContext; import android.compat.annotation.UnsupportedAppUsage; import android.content.AttributionSource; import android.content.AutofillOptions; import android.content.BroadcastReceiver; import android.content.ComponentName; Loading Loading @@ -60,7 +61,6 @@ import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.net.Uri; import android.content.AttributionSource; import android.os.Binder; import android.os.Build; import android.os.Bundle; Loading Loading @@ -3120,6 +3120,7 @@ class ContextImpl extends Context { mForceDisplayOverrideInResources = container.mForceDisplayOverrideInResources; mIsConfigurationBasedContext = container.mIsConfigurationBasedContext; mContextType = container.mContextType; mContentCaptureOptions = container.mContentCaptureOptions; } else { mBasePackageName = packageInfo.mPackageName; ApplicationInfo ainfo = packageInfo.getApplicationInfo(); Loading core/java/android/hardware/ISensorPrivacyManager.aidl +4 −0 Original line number Diff line number Diff line Loading @@ -48,4 +48,8 @@ interface ISensorPrivacyManager { void suppressIndividualSensorPrivacyReminders(int userId, int sensor, IBinder token, boolean suppress); void addUserGlobalIndividualSensorPrivacyListener(int sensor, in ISensorPrivacyListener listener); void removeUserGlobalIndividualSensorPrivacyListener(int sensor, in ISensorPrivacyListener listener); } No newline at end of file core/java/android/hardware/SensorPrivacyManager.java +34 −7 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.annotation.SystemApi; import android.annotation.SystemService; import android.annotation.TestApi; import android.annotation.UserIdInt; import android.app.ActivityManager; import android.content.Context; import android.os.Binder; import android.os.IBinder; Loading Loading @@ -247,8 +248,7 @@ public final class SensorPrivacyManager { @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void addSensorPrivacyListener(@Sensors.Sensor int sensor, @NonNull OnSensorPrivacyChangedListener listener) { addSensorPrivacyListener(sensor, mContext.getUserId(), mContext.getMainExecutor(), listener); addSensorPrivacyListener(sensor, mContext.getMainExecutor(), listener); } /** Loading Loading @@ -283,7 +283,25 @@ public final class SensorPrivacyManager { @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void addSensorPrivacyListener(@Sensors.Sensor int sensor, @NonNull Executor executor, @NonNull OnSensorPrivacyChangedListener listener) { addSensorPrivacyListener(sensor, mContext.getUserId(), executor, listener); Pair<OnSensorPrivacyChangedListener, Integer> key = new Pair<>(listener, sensor); synchronized (mIndividualListeners) { ISensorPrivacyListener iListener = mIndividualListeners.get(key); if (iListener == null) { iListener = new ISensorPrivacyListener.Stub() { @Override public void onSensorPrivacyChanged(boolean enabled) { executor.execute(() -> listener.onSensorPrivacyChanged(sensor, enabled)); } }; mIndividualListeners.put(key, iListener); } try { mService.addUserGlobalIndividualSensorPrivacyListener(sensor, iListener); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } } /** Loading Loading @@ -361,7 +379,7 @@ public final class SensorPrivacyManager { @SystemApi @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY) public boolean isSensorPrivacyEnabled(@Sensors.Sensor int sensor) { return isSensorPrivacyEnabled(sensor, mContext.getUserId()); return isSensorPrivacyEnabled(sensor, getCurrentUserId()); } /** Loading Loading @@ -392,7 +410,7 @@ public final class SensorPrivacyManager { @RequiresPermission(Manifest.permission.MANAGE_SENSOR_PRIVACY) public void setSensorPrivacy(@Sources.Source int source, @Sensors.Sensor int sensor, boolean enable) { setSensorPrivacy(source, sensor, enable, mContext.getUserId()); setSensorPrivacy(source, sensor, enable, getCurrentUserId()); } /** Loading Loading @@ -428,7 +446,7 @@ public final class SensorPrivacyManager { @RequiresPermission(Manifest.permission.MANAGE_SENSOR_PRIVACY) public void setSensorPrivacyForProfileGroup(@Sources.Source int source, @Sensors.Sensor int sensor, boolean enable) { setSensorPrivacyForProfileGroup(source , sensor, enable, mContext.getUserId()); setSensorPrivacyForProfileGroup(source , sensor, enable, getCurrentUserId()); } /** Loading Loading @@ -463,7 +481,7 @@ public final class SensorPrivacyManager { @RequiresPermission(Manifest.permission.MANAGE_SENSOR_PRIVACY) public void suppressSensorPrivacyReminders(int sensor, boolean suppress) { suppressSensorPrivacyReminders(sensor, suppress, mContext.getUserId()); suppressSensorPrivacyReminders(sensor, suppress, getCurrentUserId()); } /** Loading Loading @@ -590,4 +608,13 @@ public final class SensorPrivacyManager { throw e.rethrowFromSystemServer(); } } private int getCurrentUserId() { try { return ActivityManager.getService().getCurrentUserId(); } catch (RemoteException e) { e.rethrowFromSystemServer(); } return 0; } } core/java/android/service/voice/HotwordDetectionService.java +2 −5 Original line number Diff line number Diff line Loading @@ -72,8 +72,7 @@ import java.util.function.IntConsumer; @SystemApi public abstract class HotwordDetectionService extends Service { private static final String TAG = "HotwordDetectionService"; // TODO (b/177502877): Set the Debug flag to false before shipping. private static final boolean DBG = true; private static final boolean DBG = false; private static final long UPDATE_TIMEOUT_MILLIS = 5000; Loading Loading @@ -151,9 +150,7 @@ public abstract class HotwordDetectionService extends Service { @Override public void updateState(PersistableBundle options, SharedMemory sharedMemory, IRemoteCallback callback) throws RemoteException { if (DBG) { Log.d(TAG, "#updateState"); } Log.v(TAG, "#updateState" + (callback != null ? " with callback" : "")); HotwordDetectionService.this.onUpdateStateInternal( options, sharedMemory, Loading core/java/android/service/voice/SoftwareHotwordDetector.java +1 −1 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ import java.io.PrintWriter; **/ class SoftwareHotwordDetector extends AbstractHotwordDetector { private static final String TAG = SoftwareHotwordDetector.class.getSimpleName(); private static final boolean DEBUG = true; private static final boolean DEBUG = false; private final IVoiceInteractionManagerService mManagerService; private final HotwordDetector.Callback mCallback; Loading Loading
core/java/android/app/ContextImpl.java +2 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UiContext; import android.compat.annotation.UnsupportedAppUsage; import android.content.AttributionSource; import android.content.AutofillOptions; import android.content.BroadcastReceiver; import android.content.ComponentName; Loading Loading @@ -60,7 +61,6 @@ import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.net.Uri; import android.content.AttributionSource; import android.os.Binder; import android.os.Build; import android.os.Bundle; Loading Loading @@ -3120,6 +3120,7 @@ class ContextImpl extends Context { mForceDisplayOverrideInResources = container.mForceDisplayOverrideInResources; mIsConfigurationBasedContext = container.mIsConfigurationBasedContext; mContextType = container.mContextType; mContentCaptureOptions = container.mContentCaptureOptions; } else { mBasePackageName = packageInfo.mPackageName; ApplicationInfo ainfo = packageInfo.getApplicationInfo(); Loading
core/java/android/hardware/ISensorPrivacyManager.aidl +4 −0 Original line number Diff line number Diff line Loading @@ -48,4 +48,8 @@ interface ISensorPrivacyManager { void suppressIndividualSensorPrivacyReminders(int userId, int sensor, IBinder token, boolean suppress); void addUserGlobalIndividualSensorPrivacyListener(int sensor, in ISensorPrivacyListener listener); void removeUserGlobalIndividualSensorPrivacyListener(int sensor, in ISensorPrivacyListener listener); } No newline at end of file
core/java/android/hardware/SensorPrivacyManager.java +34 −7 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.annotation.SystemApi; import android.annotation.SystemService; import android.annotation.TestApi; import android.annotation.UserIdInt; import android.app.ActivityManager; import android.content.Context; import android.os.Binder; import android.os.IBinder; Loading Loading @@ -247,8 +248,7 @@ public final class SensorPrivacyManager { @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void addSensorPrivacyListener(@Sensors.Sensor int sensor, @NonNull OnSensorPrivacyChangedListener listener) { addSensorPrivacyListener(sensor, mContext.getUserId(), mContext.getMainExecutor(), listener); addSensorPrivacyListener(sensor, mContext.getMainExecutor(), listener); } /** Loading Loading @@ -283,7 +283,25 @@ public final class SensorPrivacyManager { @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void addSensorPrivacyListener(@Sensors.Sensor int sensor, @NonNull Executor executor, @NonNull OnSensorPrivacyChangedListener listener) { addSensorPrivacyListener(sensor, mContext.getUserId(), executor, listener); Pair<OnSensorPrivacyChangedListener, Integer> key = new Pair<>(listener, sensor); synchronized (mIndividualListeners) { ISensorPrivacyListener iListener = mIndividualListeners.get(key); if (iListener == null) { iListener = new ISensorPrivacyListener.Stub() { @Override public void onSensorPrivacyChanged(boolean enabled) { executor.execute(() -> listener.onSensorPrivacyChanged(sensor, enabled)); } }; mIndividualListeners.put(key, iListener); } try { mService.addUserGlobalIndividualSensorPrivacyListener(sensor, iListener); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } } /** Loading Loading @@ -361,7 +379,7 @@ public final class SensorPrivacyManager { @SystemApi @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY) public boolean isSensorPrivacyEnabled(@Sensors.Sensor int sensor) { return isSensorPrivacyEnabled(sensor, mContext.getUserId()); return isSensorPrivacyEnabled(sensor, getCurrentUserId()); } /** Loading Loading @@ -392,7 +410,7 @@ public final class SensorPrivacyManager { @RequiresPermission(Manifest.permission.MANAGE_SENSOR_PRIVACY) public void setSensorPrivacy(@Sources.Source int source, @Sensors.Sensor int sensor, boolean enable) { setSensorPrivacy(source, sensor, enable, mContext.getUserId()); setSensorPrivacy(source, sensor, enable, getCurrentUserId()); } /** Loading Loading @@ -428,7 +446,7 @@ public final class SensorPrivacyManager { @RequiresPermission(Manifest.permission.MANAGE_SENSOR_PRIVACY) public void setSensorPrivacyForProfileGroup(@Sources.Source int source, @Sensors.Sensor int sensor, boolean enable) { setSensorPrivacyForProfileGroup(source , sensor, enable, mContext.getUserId()); setSensorPrivacyForProfileGroup(source , sensor, enable, getCurrentUserId()); } /** Loading Loading @@ -463,7 +481,7 @@ public final class SensorPrivacyManager { @RequiresPermission(Manifest.permission.MANAGE_SENSOR_PRIVACY) public void suppressSensorPrivacyReminders(int sensor, boolean suppress) { suppressSensorPrivacyReminders(sensor, suppress, mContext.getUserId()); suppressSensorPrivacyReminders(sensor, suppress, getCurrentUserId()); } /** Loading Loading @@ -590,4 +608,13 @@ public final class SensorPrivacyManager { throw e.rethrowFromSystemServer(); } } private int getCurrentUserId() { try { return ActivityManager.getService().getCurrentUserId(); } catch (RemoteException e) { e.rethrowFromSystemServer(); } return 0; } }
core/java/android/service/voice/HotwordDetectionService.java +2 −5 Original line number Diff line number Diff line Loading @@ -72,8 +72,7 @@ import java.util.function.IntConsumer; @SystemApi public abstract class HotwordDetectionService extends Service { private static final String TAG = "HotwordDetectionService"; // TODO (b/177502877): Set the Debug flag to false before shipping. private static final boolean DBG = true; private static final boolean DBG = false; private static final long UPDATE_TIMEOUT_MILLIS = 5000; Loading Loading @@ -151,9 +150,7 @@ public abstract class HotwordDetectionService extends Service { @Override public void updateState(PersistableBundle options, SharedMemory sharedMemory, IRemoteCallback callback) throws RemoteException { if (DBG) { Log.d(TAG, "#updateState"); } Log.v(TAG, "#updateState" + (callback != null ? " with callback" : "")); HotwordDetectionService.this.onUpdateStateInternal( options, sharedMemory, Loading
core/java/android/service/voice/SoftwareHotwordDetector.java +1 −1 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ import java.io.PrintWriter; **/ class SoftwareHotwordDetector extends AbstractHotwordDetector { private static final String TAG = SoftwareHotwordDetector.class.getSimpleName(); private static final boolean DEBUG = true; private static final boolean DEBUG = false; private final IVoiceInteractionManagerService mManagerService; private final HotwordDetector.Callback mCallback; Loading