我正在尝试制作一个高级的“请勿打扰”应用程序,因此我正在使用 SDK 中的 NotificationListenerService。每当 onNotificationPosted 触发时,我都可以取消通知并将其从通知抽屉中删除。但是,手机仍会振动半秒钟,用户仍会注意到通知,从而使整个应用的用处降低。
你知道如何解决这个问题并有效地防止手机响铃/振动吗?
提前致谢
最佳答案
要关闭通知的声音,请按如下方式使用 AudioManager
:
// Turn off sound
mAudioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
// Turn on sound
mAudioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
关闭振动比较棘手
setVibrateSetting
api 在 API 16 中已弃用。根据 [android 开发者网站](https://developer.android.com/reference/android/media/AudioManager.html#setVibrateSetting(int,int)),
Applications should maintain their own vibrate policy based on current ringer mode that can be queried via getRingerMode().
一个丑陋的解决方法是使用铃声模式通过 RINGER_MODE_SILENT
启用/禁用振动。 这将使整个手机静音(来电和通知)。
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
并在显示通知时的几秒后或 onNotificationPosted
事件结束时恢复到之前的状态。
关于Android NotificationListenerService : prevent notification from being displayed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44197274/