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