gpt4 book ai didi

java - 观察应用程序所做的音量变化

转载 作者:太空宇宙 更新时间:2023-11-03 13:34:06 25 4
gpt4 key购买 nike

我有一个 ContentObserver 注册到 android.provider.Settings.System 应该观察任何音量的变化。单击硬件音量按钮时会按预期收到通知,但当我通过 AudioManager.setStreamVolume 或 AudioManager.adjustStreamVolume 更改音频音量时不会收到通知。

这是我的 ContentObserver 的样子:

// this is a Service
this.getApplicationContext().getContentResolver().registerContentObserver(
android.provider.Settings.System.CONTENT_URI,
true, new ContentObserver(new Handler()) {
public void onChange(boolean selfChange) {
Log.d("ContentObserver", "got notified");
}
});

这里是我对 AudioManager.adjustStreamVolume 的调用:

// this.context is the activities context
this.context.getSystemService(Context.AUDIO_SERVICE).adjustStreamVolume(
AudioManager.STREAM_RING, AudioManager.ADJUST_LOWER,
AudioManager.FLAG_SHOW_UI);

我已阅读 thisthat发布和 AudioManagerSettings.System文档,并且找不到为什么在使用音量按钮更改音量时通知 Observer 而在使用 AudioManager 更改音量时不通知 Observer 的原因。

感谢您的帮助!

最佳答案

AudioManager 确实广播了一个 Intent

android.media.VOLUME_CHANGED_ACTION`

但这不是官方文档的一部分。所以这可能会在未来的版本中改变。但是您至少可以将其用于 Gingerbread 设备。

您可以在 here 的 Intent 中找到更多关于附加功能的信息

关于java - 观察应用程序所做的音量变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9226988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com