我正在考虑制作一个应用程序,在特定时间段(由用户设置)禁用手机音量并仅启用振动;例如,如果有人在此期间打电话,手机只会振动而不是响铃。有什么方法可以做到这一点吗?
最佳答案
是的,这很有可能。我会尽力详细解释。
通过禁用,我会假设您想要将音量设置为最低,
获取对 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);
如果您想将其恢复为正常
,只需执行此操作
audiManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
关于java - 是否可以在应用程序内更改手机的音量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31633606/