即使手机静音,也能在Android通知中播放声音

12

我的应用正在显示通知,并在显示通知时播放声音。但是当我的手机处于“静音模式”下时,通知不会播放声音。我想要“覆盖”音量设置,即使设置为静音模式也要播放声音。有办法做到这一点吗?


5
如果您在重要会议中将手机设为静音模式,但仍希望从某个应用程序听到通知声,那么这会使您感到满意吗?这就是用户设置静音模式的原因。 - user123
4
好的,因为我的应用程序将有这样一个选项:“即使设置了静音模式也播放声音”,所以用户可以选择使用或不使用此功能 ;) - Sergio Viudes
所以唯一的解决方案是将模式更改为正常模式,播放通知声音,然后将静音模式设置回去。 - user123
1
有时候你仍然想要覆盖这个功能。例如,如果你想从蓝牙设备上ping你的手机以找到它。那么在所有情况下,即使手机处于静音模式,你也希望手机发出声音。 - nilsi
3个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
8

你可以使用MediaPlayer作为通知提示音,通过启动一个服务,在通知显示时播放MediaPlayer。

为了让声音停止,需要在通知的PendingIntent的BroadcastReceiver中停止服务。

另外,不要忘记在通知取消时停止声音。


我认为你的答案是一个不错的方法。我会尝试一下,谢谢! - Sergio Viudes

7
AudioManager am;
am= (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

谢谢你的回答。我该如何在通知中使用它?在调用myNotificationManager.notify之前应该设置RINGER_MODE_NORMAL,然后再将其设置为静音吗?这是正确的做法吗? - Sergio Viudes
它不起作用了 :( 我将模式设置为正常,然后显示通知,然后再将其设置回静音,但没有声音...如果我不将其设置回静音,声音就会播放... 我希望 NotificationManager.notify 有一个回调函数,在显示通知时执行代码 :( - Sergio Viudes

-3

使用此功能启用通知声音 -

Settings.System.putInt(getContentResolver(),android.provider.Settings.System.NOTIFICATION_SOUND, 1);
不要忘记在清单文件中授予权限 -
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

这段代码是什么作用?它和这个一样吗?AudioManager am; am= (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE); am.setRingerMode(AudioManager.RINGER_MODE_NORMAL); - Sergio Viudes
它将修改系统设置以播放通知声音。如果对您不起作用,请尝试不同的设置,如“SOUND_EFFECTS_ENABLED”、“VOLUME_NOTIFICATION”、“VOLUME_SYSTEM”。有关详细列表,请参阅此处 - mihirjoshi
2
-1:需要额外的权限,而且我认为用户不会高兴自己的设置被更改。有其他方法可以实现这一点,既不那么繁琐,又能给用户带来更好的体验。 - zoltish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,