我正在尝试制作一个高级的“请勿打扰”应用,所以我正在使用SDK中的NotificationListenerService。每当onNotificationPosted触发时,我都可以取消通知并将其从通知抽屉中删除。然而,手机仍然振动半秒钟,用户仍然知道通知,使整个应用程序不那么有用。
您是否知道如何解决此问题并有效防止手机振铃/振动?
提前致谢
答案 0 :(得分:1)
要关闭通知声音,请按以下方式使用AudioManager
:
// Turn off sound
mAudioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
// Turn on sound
mAudioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
关闭振动更加棘手
API中不推荐使用 setVibrateSetting
api。根据[android开发者网站](https://developer.android.com/reference/android/media/AudioManager.html#setVibrateSetting(int,int)),
应用程序应根据当前振铃模式维护自己的振动策略,可以通过getRingerMode()查询。
一个丑陋的解决方法是使用振铃模式使用RINGER_MODE_SILENT
启用/禁用振动。 这会使整个手机静音(来电和通知)。
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
并在显示通知后几秒钟或onNotificationPosted
事件结束时将其恢复到之前的状态。