是否可以在应用程序内更改手机的音量?

时间:2015-07-26 04:26:20

标签: java android

我正在考虑制作一个应用程序,它在某些时间段(由用户设置)禁用手机的音量并启用振动;例如,如果有人在此期间打电话,手机只会振动而不是响铃。有没有办法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用AudioManager类更改音量。来自android参考:

Use Context.getSystemService(Context.AUDIO_SERVICE) to get an instance of this class. 

要设置为振动,请使用setRingerMode方法。常量为:RINGER_MODE_NORMAL,RINGER_MODE_SILENT或RINGER_MODE_VIBRATE。您可以使用getRingerMode()来检查当前正在使用的内容。

答案 1 :(得分:1)

是的,这很有可能。我会尽力详细解释。

通过禁用,我会假设您要将音量设置为最低

获取对AudioManager

的引用
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

现在,您需要知道设备支持的最大音量是什么

int streamMaxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_RING);

现在你应该在整数变量中有最大值,假设你得到6。

因此,您可以设置音量的可能值位于范围0到6 。 (0表示沉默,6表示最响亮)

//set to lowest
audioManager.setStreamVolume(AudioManager.STREAM_RING, 0, AudioManager.FLAG_ALLOW_RINGER_MODES|AudioManager.FLAG_PLAY_SOUND);

//set to loudest
audioManager.setStreamVolume(AudioManager.STREAM_RING, 6, AudioManager.FLAG_ALLOW_RINGER_MODES|AudioManager.FLAG_PLAY_SOUND)

这为您提供了音量级别的完全灵活性

现在,如果您需要将铃声模式更改为VIBRATE,请执行此操作

audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);

如果您只想将其设置为SILENT,只需执行此操作

audiManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

如果您想将其还原为NORMAL,请执行此操作

audiManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);