summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJohn Spurlock <jspurlock@google.com>2014-07-18 13:02:39 -0400
committerJohn Spurlock <jspurlock@google.com>2014-07-19 11:57:51 -0400
commit7b41467704f941b11af6aace3e40993afc7f6c6f (patch)
tree4590d4c1b8e949cfd86fa21c141b84d80d8b3ab9 /core
parentad8f1673f6f28fd9187b21a0a683208ad27bb87f (diff)
downloadframeworks_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.java9
-rw-r--r--core/java/android/hardware/input/InputManager.java6
-rw-r--r--core/java/android/os/IVibratorService.aidl4
-rw-r--r--core/java/android/os/NullVibrator.java6
-rw-r--r--core/java/android/os/SystemVibrator.java13
-rw-r--r--core/java/android/os/Vibrator.java40
-rw-r--r--core/java/com/android/internal/app/IAppOpsService.aidl4
-rw-r--r--core/java/com/android/internal/widget/RotarySelector.java9
-rw-r--r--core/java/com/android/internal/widget/SlidingTab.java9
-rw-r--r--core/java/com/android/internal/widget/WaveView.java9
-rw-r--r--core/java/com/android/internal/widget/multiwaveview/GlowPadView.java9
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);
}
}