diff options
author | John Spurlock <jspurlock@google.com> | 2014-03-19 22:09:06 -0400 |
---|---|---|
committer | John Spurlock <jspurlock@google.com> | 2014-03-21 08:57:53 -0400 |
commit | f9e1a0b369740e11ea1ed4f141ffb936fc1a6cdb (patch) | |
tree | 4095fb5381f5140c540ad157a788aae7252f9338 | |
parent | e003e7e8ca0bd697838ce48700d3fee8faf5110d (diff) | |
download | frameworks_base-f9e1a0b369740e11ea1ed4f141ffb936fc1a6cdb.zip frameworks_base-f9e1a0b369740e11ea1ed4f141ffb936fc1a6cdb.tar.gz frameworks_base-f9e1a0b369740e11ea1ed4f141ffb936fc1a6cdb.tar.bz2 |
Annotate framework vibrate calls with stream hints.
Migrate existing framework usages of Vibrator.vibrate to use
the new overload with an explicit stream hint. This prevents
them from being blocked by rules targeting the unspecified stream.
For calls that pass the existing appops check in VibrateService,
pass streamHint down to the input device vibrator so we don't lose
the signal, but leave it up to InputManager to decide what to do
with it - currently unused.
Change-Id: I65c944e4010edea29a412bf57d8d7d3b8098b746
11 files changed, 27 insertions, 14 deletions
diff --git a/core/java/android/view/VolumePanel.java b/core/java/android/view/VolumePanel.java index 52f9c0b..b05225b 100644 --- a/core/java/android/view/VolumePanel.java +++ b/core/java/android/view/VolumePanel.java @@ -787,7 +787,7 @@ public class VolumePanel extends Handler implements OnSeekBarChangeListener, Vie return; } - mVibrator.vibrate(VIBRATE_DURATION); + mVibrator.vibrate(VIBRATE_DURATION, AudioManager.STREAM_SYSTEM); } protected void onRemoteVolumeChanged(int streamType, int flags) { diff --git a/core/java/com/android/internal/widget/RotarySelector.java b/core/java/com/android/internal/widget/RotarySelector.java index f856027..64ce918 100644 --- a/core/java/com/android/internal/widget/RotarySelector.java +++ b/core/java/com/android/internal/widget/RotarySelector.java @@ -24,6 +24,7 @@ import android.graphics.Paint; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; +import android.media.AudioManager; import android.os.UserHandle; import android.os.Vibrator; import android.provider.Settings; @@ -34,7 +35,9 @@ import android.view.View; import android.view.VelocityTracker; import android.view.ViewConfiguration; import android.view.animation.DecelerateInterpolator; + import static android.view.animation.AnimationUtils.currentAnimationTimeMillis; + import com.android.internal.R; @@ -676,7 +679,7 @@ public class RotarySelector extends View { mVibrator = (android.os.Vibrator) getContext() .getSystemService(Context.VIBRATOR_SERVICE); } - mVibrator.vibrate(duration); + mVibrator.vibrate(duration, AudioManager.STREAM_SYSTEM); } } diff --git a/core/java/com/android/internal/widget/SlidingTab.java b/core/java/com/android/internal/widget/SlidingTab.java index aebc4f6..deb0fd7 100644 --- a/core/java/com/android/internal/widget/SlidingTab.java +++ b/core/java/com/android/internal/widget/SlidingTab.java @@ -21,6 +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.os.UserHandle; import android.os.Vibrator; import android.provider.Settings; @@ -821,7 +822,7 @@ public class SlidingTab extends ViewGroup { mVibrator = (android.os.Vibrator) getContext() .getSystemService(Context.VIBRATOR_SERVICE); } - mVibrator.vibrate(duration); + mVibrator.vibrate(duration, AudioManager.STREAM_SYSTEM); } } diff --git a/core/java/com/android/internal/widget/WaveView.java b/core/java/com/android/internal/widget/WaveView.java index 0c5993b..86f14b3 100644 --- a/core/java/com/android/internal/widget/WaveView.java +++ b/core/java/com/android/internal/widget/WaveView.java @@ -25,6 +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.os.UserHandle; import android.os.Vibrator; import android.provider.Settings; @@ -582,7 +583,7 @@ public class WaveView extends View implements ValueAnimator.AnimatorUpdateListen mVibrator = (android.os.Vibrator) getContext() .getSystemService(Context.VIBRATOR_SERVICE); } - mVibrator.vibrate(duration); + mVibrator.vibrate(duration, AudioManager.STREAM_SYSTEM); } } diff --git a/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java b/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java index 93ea5b3..772dc5f 100644 --- a/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java +++ b/core/java/com/android/internal/widget/multiwaveview/GlowPadView.java @@ -30,6 +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.os.Bundle; import android.os.UserHandle; import android.os.Vibrator; @@ -564,7 +565,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); + mVibrator.vibrate(mVibrationDuration, AudioManager.STREAM_SYSTEM); } } diff --git a/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java b/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java index e22d1e8..4648f39 100644 --- a/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java +++ b/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java @@ -31,6 +31,7 @@ import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.RectF; import android.graphics.drawable.Drawable; +import android.media.AudioManager; import android.os.Bundle; import android.os.UserHandle; import android.os.Vibrator; @@ -599,7 +600,7 @@ public class MultiWaveView extends View { mContext.getContentResolver(), Settings.System.HAPTIC_FEEDBACK_ENABLED, 1, UserHandle.USER_CURRENT) != 0; if (mVibrator != null && hapticEnabled) { - mVibrator.vibrate(mVibrationDuration); + mVibrator.vibrate(mVibrationDuration, AudioManager.STREAM_SYSTEM); } } diff --git a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java index e1a4bb2..48a6522 100644 --- a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java +++ b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java @@ -22,6 +22,7 @@ import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.content.Context; +import android.media.AudioManager; import android.os.Vibrator; import android.util.Log; import android.view.Gravity; @@ -605,7 +606,7 @@ public class ExpandHelper implements Gefingerpoken, OnClickListener { mVibrator = (android.os.Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE); } - mVibrator.vibrate(duration); + mVibrator.vibrate(duration, AudioManager.STREAM_SYSTEM); } } diff --git a/packages/SystemUI/src/com/android/systemui/SearchPanelView.java b/packages/SystemUI/src/com/android/systemui/SearchPanelView.java index b096ead..09aa60f 100644 --- a/packages/SystemUI/src/com/android/systemui/SearchPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/SearchPanelView.java @@ -25,6 +25,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.res.Resources; +import android.media.AudioManager; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; @@ -207,7 +208,8 @@ public class SearchPanelView extends FrameLayout implements Settings.System.HAPTIC_FEEDBACK_ENABLED, 1, UserHandle.USER_CURRENT) != 0) { Resources res = context.getResources(); Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); - vibrator.vibrate(res.getInteger(R.integer.config_search_panel_view_vibration_duration)); + vibrator.vibrate(res.getInteger(R.integer.config_search_panel_view_vibration_duration), + AudioManager.STREAM_SYSTEM); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 9540bd4..91325ae 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -49,6 +49,7 @@ import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.inputmethodservice.InputMethodService; +import android.media.AudioManager; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -2713,7 +2714,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { void vibrate() { android.os.Vibrator vib = (android.os.Vibrator)mContext.getSystemService( Context.VIBRATOR_SERVICE); - vib.vibrate(250); + vib.vibrate(250, AudioManager.STREAM_SYSTEM); } Runnable mStartTracing = new Runnable() { diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java index 52f9aa9..aa756a1 100644 --- a/services/core/java/com/android/server/VibratorService.java +++ b/services/core/java/com/android/server/VibratorService.java @@ -362,7 +362,7 @@ public class VibratorService extends IVibratorService.Stub } catch (RemoteException e) { } if (vib.mTimeout != 0) { - doVibratorOn(vib.mTimeout, vib.mUid); + doVibratorOn(vib.mTimeout, vib.mUid, vib.mStreamHint); mH.postDelayed(mVibrationRunnable, vib.mTimeout); } else { // mThread better be null here. doCancelVibrate should always be @@ -481,7 +481,7 @@ public class VibratorService extends IVibratorService.Stub return vibratorExists(); } - private void doVibratorOn(long millis, int uid) { + private void doVibratorOn(long millis, int uid, int streamHint) { synchronized (mInputDeviceVibrators) { try { mBatteryStatsService.noteVibratorOn(uid, millis); @@ -491,7 +491,7 @@ public class VibratorService extends IVibratorService.Stub final int vibratorCount = mInputDeviceVibrators.size(); if (vibratorCount != 0) { for (int i = 0; i < vibratorCount; i++) { - mInputDeviceVibrators.get(i).vibrate(millis); + mInputDeviceVibrators.get(i).vibrate(millis, streamHint); } } else { vibratorOn(millis); @@ -554,6 +554,7 @@ public class VibratorService extends IVibratorService.Stub final int len = pattern.length; final int repeat = mVibration.mRepeat; final int uid = mVibration.mUid; + final int streamHint = mVibration.mStreamHint; int index = 0; long duration = 0; @@ -574,7 +575,7 @@ public class VibratorService extends IVibratorService.Stub // duration is saved for delay() at top of loop duration = pattern[index++]; if (duration > 0) { - VibratorService.this.doVibratorOn(duration, uid); + VibratorService.this.doVibratorOn(duration, uid, streamHint); } } else { if (repeat < 0) { diff --git a/services/core/java/com/android/server/power/ShutdownThread.java b/services/core/java/com/android/server/power/ShutdownThread.java index 88a27f5..8fed79f 100644 --- a/services/core/java/com/android/server/power/ShutdownThread.java +++ b/services/core/java/com/android/server/power/ShutdownThread.java @@ -24,6 +24,7 @@ import android.app.IActivityManager; import android.app.ProgressDialog; import android.bluetooth.BluetoothAdapter; import android.bluetooth.IBluetoothManager; +import android.media.AudioManager; import android.nfc.NfcAdapter; import android.nfc.INfcAdapter; import android.content.BroadcastReceiver; @@ -498,7 +499,7 @@ public final class ShutdownThread extends Thread { // vibrate before shutting down Vibrator vibrator = new SystemVibrator(); try { - vibrator.vibrate(SHUTDOWN_VIBRATE_MS); + vibrator.vibrate(SHUTDOWN_VIBRATE_MS, AudioManager.STREAM_SYSTEM); } catch (Exception e) { // Failure to vibrate shouldn't interrupt shutdown. Just log it. Log.w(TAG, "Failed to vibrate during shutdown.", e); |