From d28967f489996d1d74ff5c0bbb9c19d158efbf37 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Thu, 14 Apr 2016 09:37:08 -0400 Subject: [PATCH] Phone call vibrate should obey user preference. Bug: 27353237 Change-Id: I6b52e378c9e664600720025af30596be09aeb19d --- .../java/com/android/server/VibratorService.java | 6 ++++++ .../statusbartest/NotificationTestList.java | 23 ++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java index 2924cef09d17..5ba07cf2c8a6 100644 --- a/services/core/java/com/android/server/VibratorService.java +++ b/services/core/java/com/android/server/VibratorService.java @@ -454,6 +454,12 @@ public class VibratorService extends IVibratorService.Stub return; } + if (vib.mUsageHint == AudioAttributes.USAGE_NOTIFICATION_RINGTONE + && Settings.System.getInt( + mContext.getContentResolver(), Settings.System.VIBRATE_WHEN_RINGING, 0) == 0) { + return; + } + int mode = mAppOpsService.checkAudioOperation(AppOpsManager.OP_VIBRATE, vib.mUsageHint, vib.mUid, vib.mOpPkg); if (mode == AppOpsManager.MODE_ALLOWED) { diff --git a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java index 6c8be3978ccf..a4aab7c268b0 100644 --- a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java +++ b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java @@ -25,6 +25,7 @@ import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; +import android.media.AudioAttributes; import android.os.Bundle; import android.os.Vibrator; import android.os.Handler; @@ -86,6 +87,28 @@ public class NotificationTestList extends TestActivity } private Test[] mTests = new Test[] { + new Test("Phone call") { + public void run() + { + Notification n = new Notification.Builder(NotificationTestList.this) + .setSmallIcon(R.drawable.icon2) + .setContentTitle("phone call") + .setLights(0xff0000ff, 1, 0) + .setDefaults(Notification.DEFAULT_LIGHTS|Notification.DEFAULT_VIBRATE) + .setSound(Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + + getPackageName() + "/raw/ringer"), + new AudioAttributes.Builder().setUsage( + AudioAttributes.USAGE_NOTIFICATION_RINGTONE).build()) + .setPriority(Notification.PRIORITY_MAX) + .setVibrate(new long[] { + 300, 400, 300, 400, 300, 400, 300, 400, 300, 400, 300, 400, + 300, 400, 300, 400, 300, 400, 300, 400, 300, 400, 300, 400, + 300, 400, 300, 400, 300, 400, 300, 400, 300, 400, 300, 400 }) + .setFullScreenIntent(makeIntent2(), true) + .build(); + mNM.notify(7001, n); + } + }, new Test("Post a group") { public void run() { -- 2.11.0