Ring Calls and Vibrate Notifications on Android

I want calls to ring audibly, and I want notifications to vibrate silently.

Is that too much to ask for? Recent Android versions make this exceedingly reasonable configuration nearly impossible to implement.

Update 2023-12-28: Android 14 finally fixed this problem by providing separate settings for ringtone volume and notification volume! Just set your notification volume to 0, set your ringtone volume to something above 0, and stop reading this blog post.

The solution

Android’s native Do Not Disturb (henceforth “DND”) feature is the perfect solution except that it doesn’t allow notifications to vibrate. So we’ll roll that feature ourselves:

  1. Enable DND and keep it turned on forever
  2. Allow calls to interrupt DND. On Android 11, this option is at Settings > Sound > Do Not Disturb > People > Calls
  3. Install Tasker
  4. Create a new “Do Disturb” profile that overrides the notification behavior of your permanent DND by triggering a 200ms vibration whenever a new notification arrives (optionally with your waking hours as a second constraint if you’re an extremely light sleeper like me):

I’ve been using this setup for six months now. The only downside is that I can no longer identify apps by their custom vibration patterns, but that’s a relatively small price to pay.


The non-solutions

My path to the solution above is littered with the bodies of many failed attempts, some documented below. Note that Android has two subtly annoying limitations to work around:

Faking vibrate mode via inaudible notifications

Strategy: Remove notification audio directly.

  1. Permanently disable both DND and vibrate mode
  2. Roll your own vibrate mode by going into Sound settings and changing the Default notification sound to the None option (which might be located inside My Sounds)

Fatal flaw: Some apps use their own custom notification sounds, which still play.

Overriding system volume via PagerDuty

Strategy: Give up hope on ringing all calls audibly and settle for ringing only PagerDuty calls audibly.

  1. Permanently enable vibrate mode
  2. Go into the PagerDuty app’s settings and enable system volume override

Fatal flaw: That override option just flat out doesn’t work on my Pixel 2.

Temporarily unmuting the ringer via Tasker

Strategy: Stay in vibrate mode but use Tasker to temporarily disable vibrate mode during calls.

  1. Permanently enable vibrate mode
  2. Create a Tasker profile that disables vibrate mode whenever a call comes in and reenables vibrate mode when the call ends

Fatal flaw: Android doesn’t actually let you leave vibrate mode while ringing?!

Ringing on the media channel via Tasker

Strategy: Stay in vibrate mode and use Tasker to “ring” calls by simply playing an MP3 file that you specify.

  1. Permanently enable vibrate mode
  2. Follow these instructions to create a Tasker profile that plays an audio file when a call comes in

Fatal flaw: There’s an Android OS bug that causes the ringtone to continue looping forever?! The provided workaround doesn’t work on my Pixel 2.