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

标签 java android

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

最佳答案

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

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

获取对 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/

相关文章:

java - Java 中的边界检查

android - 将 GCM 与 Asp.Net 服务器一起使用推送通知

android - 无法启动服务 - 需要 ACCESS_MOCK_LOCATION 安全设置

android - AutoCompleteTextView 下拉列表文本根据搜索文本突出显示

android - 使用 Picasso 从 URL 加载到 ImageView,ImageView 上没有白色闪光

java - 如何在写入 Java 字符串之前检查它是否适合 Cassandra TEXT 列?

java - 如何避免在我的java bean中使用Spring注释并仅在配置类中使用它们?

java - 翻译为 Kotlin 时,我是否应该更新我的 java 文件以命名为 kotlin?

javascript - 如何在java脚本中迭代和打印java表单对象的属性?

Java BigDecimal 可能的溢出错误