diff options
author | John Spurlock <jspurlock@google.com> | 2014-07-18 13:02:39 -0400 |
---|---|---|
committer | John Spurlock <jspurlock@google.com> | 2014-07-19 11:57:51 -0400 |
commit | 7b41467704f941b11af6aace3e40993afc7f6c6f (patch) | |
tree | 4590d4c1b8e949cfd86fa21c141b84d80d8b3ab9 /core | |
parent | ad8f1673f6f28fd9187b21a0a683208ad27bb87f (diff) | |
download | frameworks_base-7b41467704f941b11af6aace3e40993afc7f6c6f.zip frameworks_base-7b41467704f941b11af6aace3e40993afc7f6c6f.tar.gz frameworks_base-7b41467704f941b11af6aace3e40993afc7f6c6f.tar.bz2 |
Zen mode filtering should use new usage constants.
Refactor stream-based calls to usage-based calls.
Bug:15279516
Change-Id: I3f7757d8123c14670e2ad5f8e6aa4e9803efe7ec
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/app/AppOpsManager.java | 9 | ||||
-rw-r--r-- | core/java/android/hardware/input/InputManager.java | 6 | ||||
-rw-r--r-- | core/java/android/os/IVibratorService.aidl | 4 | ||||
-rw-r--r-- | core/java/android/os/NullVibrator.java | 6 | ||||
-rw-r--r-- | core/java/android/os/SystemVibrator.java | 13 | ||||
-rw-r--r-- | core/java/android/os/Vibrator.java | 40 | ||||
-rw-r--r-- | core/java/com/android/internal/app/IAppOpsService.aidl | 4 | ||||
-rw-r--r-- | core/java/com/android/internal/widget/RotarySelector.java | 9 | ||||
-rw-r--r-- | core/java/com/android/internal/widget/SlidingTab.java | 9 | ||||
-rw-r--r-- | core/java/com/android/internal/widget/WaveView.java | 9 | ||||
-rw-r--r-- | core/java/com/android/internal/widget/multiwaveview/GlowPadView.java | 9 |
11 files changed, 75 insertions, 43 deletions
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index c91c90c..990ea85 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -17,10 +17,12 @@ package android.app; import android.Manifest; +import android.media.AudioAttributes.AttributeUsage; import android.os.Binder; import android.os.IBinder; import android.os.UserManager; import android.util.ArrayMap; + import com.android.internal.app.IAppOpsService; import com.android.internal.app.IAppOpsCallback; @@ -954,15 +956,16 @@ public class AppOpsManager { * defined by {@link #setMode}. * * @param code The operation to restrict. - * @param stream The {@link android.media.AudioManager} stream type. + * @param usage The {@link android.media.AudioAttributes} usage value. * @param mode The restriction mode (MODE_IGNORED,MODE_ERRORED) or MODE_ALLOWED to unrestrict. * @param exceptionPackages Optional list of packages to exclude from the restriction. * @hide */ - public void setRestriction(int code, int stream, int mode, String[] exceptionPackages) { + public void setRestriction(int code, @AttributeUsage int usage, int mode, + String[] exceptionPackages) { try { final int uid = Binder.getCallingUid(); - mService.setAudioRestriction(code, stream, uid, mode, exceptionPackages); + mService.setAudioRestriction(code, usage, uid, mode, exceptionPackages); } catch (RemoteException e) { } } diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java index b5efa8e..e5995b0 100644 --- a/core/java/android/hardware/input/InputManager.java +++ b/core/java/android/hardware/input/InputManager.java @@ -21,6 +21,7 @@ import com.android.internal.util.ArrayUtils; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.content.Context; +import android.media.AudioAttributes; import android.os.Binder; import android.os.Handler; import android.os.IBinder; @@ -857,8 +858,7 @@ public final class InputManager { * @hide */ @Override - public void vibrate(int uid, String opPkg, long milliseconds, - int streamHint) { + public void vibrate(int uid, String opPkg, long milliseconds, AudioAttributes attributes) { vibrate(new long[] { 0, milliseconds}, -1); } @@ -867,7 +867,7 @@ public final class InputManager { */ @Override public void vibrate(int uid, String opPkg, long[] pattern, int repeat, - int streamHint) { + AudioAttributes attributes) { if (repeat >= pattern.length) { throw new ArrayIndexOutOfBoundsException(); } diff --git a/core/java/android/os/IVibratorService.aidl b/core/java/android/os/IVibratorService.aidl index 4d05e2d..6f2857d 100644 --- a/core/java/android/os/IVibratorService.aidl +++ b/core/java/android/os/IVibratorService.aidl @@ -20,8 +20,8 @@ package android.os; interface IVibratorService { boolean hasVibrator(); - void vibrate(int uid, String opPkg, long milliseconds, int streamHint, IBinder token); - void vibratePattern(int uid, String opPkg, in long[] pattern, int repeat, int streamHint, IBinder token); + void vibrate(int uid, String opPkg, long milliseconds, int usageHint, IBinder token); + void vibratePattern(int uid, String opPkg, in long[] pattern, int repeat, int usageHint, IBinder token); void cancelVibrate(IBinder token); } diff --git a/core/java/android/os/NullVibrator.java b/core/java/android/os/NullVibrator.java index 7b870ac..f14d965 100644 --- a/core/java/android/os/NullVibrator.java +++ b/core/java/android/os/NullVibrator.java @@ -16,6 +16,8 @@ package android.os; +import android.media.AudioAttributes; + /** * Vibrator implementation that does nothing. * @@ -40,7 +42,7 @@ public class NullVibrator extends Vibrator { * @hide */ @Override - public void vibrate(int uid, String opPkg, long milliseconds, int streamHint) { + public void vibrate(int uid, String opPkg, long milliseconds, AudioAttributes attributes) { vibrate(milliseconds); } @@ -49,7 +51,7 @@ public class NullVibrator extends Vibrator { */ @Override public void vibrate(int uid, String opPkg, long[] pattern, int repeat, - int streamHint) { + AudioAttributes attributes) { if (repeat >= pattern.length) { throw new ArrayIndexOutOfBoundsException(); } diff --git a/core/java/android/os/SystemVibrator.java b/core/java/android/os/SystemVibrator.java index 8d9cf54..c488811 100644 --- a/core/java/android/os/SystemVibrator.java +++ b/core/java/android/os/SystemVibrator.java @@ -17,6 +17,7 @@ package android.os; import android.content.Context; +import android.media.AudioAttributes; import android.util.Log; /** @@ -58,13 +59,13 @@ public class SystemVibrator extends Vibrator { * @hide */ @Override - public void vibrate(int uid, String opPkg, long milliseconds, int streamHint) { + public void vibrate(int uid, String opPkg, long milliseconds, AudioAttributes attributes) { if (mService == null) { Log.w(TAG, "Failed to vibrate; no vibrator service."); return; } try { - mService.vibrate(uid, opPkg, milliseconds, streamHint, mToken); + mService.vibrate(uid, opPkg, milliseconds, usageForAttributes(attributes), mToken); } catch (RemoteException e) { Log.w(TAG, "Failed to vibrate.", e); } @@ -75,7 +76,7 @@ public class SystemVibrator extends Vibrator { */ @Override public void vibrate(int uid, String opPkg, long[] pattern, int repeat, - int streamHint) { + AudioAttributes attributes) { if (mService == null) { Log.w(TAG, "Failed to vibrate; no vibrator service."); return; @@ -85,7 +86,7 @@ public class SystemVibrator extends Vibrator { // anyway if (repeat < pattern.length) { try { - mService.vibratePattern(uid, opPkg, pattern, repeat, streamHint, + mService.vibratePattern(uid, opPkg, pattern, repeat, usageForAttributes(attributes), mToken); } catch (RemoteException e) { Log.w(TAG, "Failed to vibrate.", e); @@ -95,6 +96,10 @@ public class SystemVibrator extends Vibrator { } } + private static int usageForAttributes(AudioAttributes attributes) { + return attributes != null ? attributes.getUsage() : AudioAttributes.USAGE_UNKNOWN; + } + @Override public void cancel() { if (mService == null) { diff --git a/core/java/android/os/Vibrator.java b/core/java/android/os/Vibrator.java index c1d4d4c..152cc12 100644 --- a/core/java/android/os/Vibrator.java +++ b/core/java/android/os/Vibrator.java @@ -18,7 +18,7 @@ package android.os; import android.app.ActivityThread; import android.content.Context; -import android.media.AudioManager; +import android.media.AudioAttributes; /** * Class that operates the vibrator on the device. @@ -62,7 +62,7 @@ public abstract class Vibrator { * @param milliseconds The number of milliseconds to vibrate. */ public void vibrate(long milliseconds) { - vibrate(milliseconds, AudioManager.USE_DEFAULT_STREAM_TYPE); + vibrate(milliseconds, null); } /** @@ -71,12 +71,13 @@ public abstract class Vibrator { * {@link android.Manifest.permission#VIBRATE}. * * @param milliseconds The number of milliseconds to vibrate. - * @param streamHint An {@link AudioManager} stream type corresponding to the vibration type. - * For example, specify {@link AudioManager#STREAM_ALARM} for alarm vibrations or - * {@link AudioManager#STREAM_RING} for vibrations associated with incoming calls. + * @param attributes {@link AudioAttributes} corresponding to the vibration. For example, + * specify {@link AudioAttributes#USAGE_ALARM} for alarm vibrations or + * {@link AudioAttributes#USAGE_NOTIFICATION_TELEPHONY_RINGTONE} for + * vibrations associated with incoming calls. */ - public void vibrate(long milliseconds, int streamHint) { - vibrate(Process.myUid(), mPackageName, milliseconds, streamHint); + public void vibrate(long milliseconds, AudioAttributes attributes) { + vibrate(Process.myUid(), mPackageName, milliseconds, attributes); } /** @@ -100,7 +101,7 @@ public abstract class Vibrator { * you don't want to repeat. */ public void vibrate(long[] pattern, int repeat) { - vibrate(pattern, repeat, AudioManager.USE_DEFAULT_STREAM_TYPE); + vibrate(pattern, repeat, null); } /** @@ -122,29 +123,30 @@ public abstract class Vibrator { * @param pattern an array of longs of times for which to turn the vibrator on or off. * @param repeat the index into pattern at which to repeat, or -1 if * you don't want to repeat. - * @param streamHint An {@link AudioManager} stream type corresponding to the vibration type. - * For example, specify {@link AudioManager#STREAM_ALARM} for alarm vibrations or - * {@link AudioManager#STREAM_RING} for vibrations associated with incoming calls. + * @param attributes {@link AudioAttributes} corresponding to the vibration. For example, + * specify {@link AudioAttributes#USAGE_ALARM} for alarm vibrations or + * {@link AudioAttributes#USAGE_NOTIFICATION_TELEPHONY_RINGTONE} for + * vibrations associated with incoming calls. */ - public void vibrate(long[] pattern, int repeat, int streamHint) { - vibrate(Process.myUid(), mPackageName, pattern, repeat, streamHint); + public void vibrate(long[] pattern, int repeat, AudioAttributes attributes) { + vibrate(Process.myUid(), mPackageName, pattern, repeat, attributes); } /** * @hide - * Like {@link #vibrate(long, int)}, but allowing the caller to specify that + * Like {@link #vibrate(long, AudioAttributes)}, but allowing the caller to specify that * the vibration is owned by someone else. */ - public abstract void vibrate(int uid, String opPkg, - long milliseconds, int streamHint); + public abstract void vibrate(int uid, String opPkg, long milliseconds, + AudioAttributes attributes); /** * @hide - * Like {@link #vibrate(long[], int, int)}, but allowing the caller to specify that + * Like {@link #vibrate(long[], int, AudioAttributes)}, but allowing the caller to specify that * the vibration is owned by someone else. */ - public abstract void vibrate(int uid, String opPkg, - long[] pattern, int repeat, int streamHint); + public abstract void vibrate(int uid, String opPkg, long[] pattern, int repeat, + AudioAttributes attributes); /** * Turn the vibrator off. diff --git a/core/java/com/android/internal/app/IAppOpsService.aidl b/core/java/com/android/internal/app/IAppOpsService.aidl index 8e6fa58..9ff2cf4 100644 --- a/core/java/com/android/internal/app/IAppOpsService.aidl +++ b/core/java/com/android/internal/app/IAppOpsService.aidl @@ -37,8 +37,8 @@ interface IAppOpsService { List<AppOpsManager.PackageOps> getOpsForPackage(int uid, String packageName, in int[] ops); void setMode(int code, int uid, String packageName, int mode); void resetAllModes(); - int checkAudioOperation(int code, int stream, int uid, String packageName); - void setAudioRestriction(int code, int stream, int uid, int mode, in String[] exceptionPackages); + int checkAudioOperation(int code, int usage, int uid, String packageName); + void setAudioRestriction(int code, int usage, int uid, int mode, in String[] exceptionPackages); void setDeviceOwner(String packageName); void setProfileOwner(String packageName, int userHandle); diff --git a/core/java/com/android/internal/widget/RotarySelector.java b/core/java/com/android/internal/widget/RotarySelector.java index 64ce918..866f89b 100644 --- a/core/java/com/android/internal/widget/RotarySelector.java +++ b/core/java/com/android/internal/widget/RotarySelector.java @@ -24,7 +24,7 @@ import android.graphics.Paint; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; -import android.media.AudioManager; +import android.media.AudioAttributes; import android.os.UserHandle; import android.os.Vibrator; import android.provider.Settings; @@ -54,6 +54,11 @@ public class RotarySelector extends View { private static final boolean DBG = false; private static final boolean VISUAL_DEBUG = false; + private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) + .build(); + // Listener for onDialTrigger() callbacks. private OnDialTriggerListener mOnDialTriggerListener; @@ -679,7 +684,7 @@ public class RotarySelector extends View { mVibrator = (android.os.Vibrator) getContext() .getSystemService(Context.VIBRATOR_SERVICE); } - mVibrator.vibrate(duration, AudioManager.STREAM_SYSTEM); + mVibrator.vibrate(duration, VIBRATION_ATTRIBUTES); } } diff --git a/core/java/com/android/internal/widget/SlidingTab.java b/core/java/com/android/internal/widget/SlidingTab.java index deb0fd7..65feab1 100644 --- a/core/java/com/android/internal/widget/SlidingTab.java +++ b/core/java/com/android/internal/widget/SlidingTab.java @@ -21,7 +21,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Rect; import android.graphics.drawable.Drawable; -import android.media.AudioManager; +import android.media.AudioAttributes; import android.os.UserHandle; import android.os.Vibrator; import android.provider.Settings; @@ -67,6 +67,11 @@ public class SlidingTab extends ViewGroup { private boolean mHoldLeftOnTransition = true; private boolean mHoldRightOnTransition = true; + private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) + .build(); + private OnTriggerListener mOnTriggerListener; private int mGrabbedState = OnTriggerListener.NO_HANDLE; private boolean mTriggered = false; @@ -822,7 +827,7 @@ public class SlidingTab extends ViewGroup { mVibrator = (android.os.Vibrator) getContext() .getSystemService(Context.VIBRATOR_SERVICE); } - mVibrator.vibrate(duration, AudioManager.STREAM_SYSTEM); + mVibrator.vibrate(duration, VIBRATION_ATTRIBUTES); } } diff --git a/core/java/com/android/internal/widget/WaveView.java b/core/java/com/android/internal/widget/WaveView.java index 86f14b3..9e7a649 100644 --- a/core/java/com/android/internal/widget/WaveView.java +++ b/core/java/com/android/internal/widget/WaveView.java @@ -25,7 +25,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable; -import android.media.AudioManager; +import android.media.AudioAttributes; import android.os.UserHandle; import android.os.Vibrator; import android.provider.Settings; @@ -81,6 +81,11 @@ public class WaveView extends View implements ValueAnimator.AnimatorUpdateListen */ private static final float GRAB_HANDLE_RADIUS_SCALE_ACCESSIBILITY_ENABLED = 1.0f; + private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) + .build(); + private Vibrator mVibrator; private OnTriggerListener mOnTriggerListener; private ArrayList<DrawableHolder> mDrawables = new ArrayList<DrawableHolder>(3); @@ -583,7 +588,7 @@ public class WaveView extends View implements ValueAnimator.AnimatorUpdateListen mVibrator = (android.os.Vibrator) getContext() .getSystemService(Context.VIBRATOR_SERVICE); } - mVibrator.vibrate(duration, AudioManager.STREAM_SYSTEM); + mVibrator.vibrate(duration, VIBRATION_ATTRIBUTES); } } diff --git a/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java b/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java index 841a02a..b680fab 100644 --- a/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java +++ b/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java @@ -30,7 +30,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.drawable.Drawable; -import android.media.AudioManager; +import android.media.AudioAttributes; import android.os.Bundle; import android.os.UserHandle; import android.os.Vibrator; @@ -94,6 +94,11 @@ public class GlowPadView extends View { private static final float RING_SCALE_EXPANDED = 1.0f; private static final float RING_SCALE_COLLAPSED = 0.5f; + private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) + .build(); + private ArrayList<TargetDrawable> mTargetDrawables = new ArrayList<TargetDrawable>(); private AnimationBundle mWaveAnimations = new AnimationBundle(); private AnimationBundle mTargetAnimations = new AnimationBundle(); @@ -565,7 +570,7 @@ public class GlowPadView extends View { mContext.getContentResolver(), Settings.System.HAPTIC_FEEDBACK_ENABLED, 1, UserHandle.USER_CURRENT) != 0; if (mVibrator != null && hapticEnabled) { - mVibrator.vibrate(mVibrationDuration, AudioManager.STREAM_SYSTEM); + mVibrator.vibrate(mVibrationDuration, VIBRATION_ATTRIBUTES); } } |