【问题标题】:Android: Prevent music volume from being changedAndroid:防止音乐音量被改变
【发布时间】:2012-05-15 11:52:22
【问题描述】:

我正在使用 Androids MediaPlayer 播放服务中的一些音乐。播放音乐时,可以通过音量摇键改变音乐音量。但是我不希望用户可以在播放过程中更改音乐音量。

如何做到这一点?

在获取 keydown 事件并返回 true 时是可能的,但这仅在应用程序处于顶部时才有效。由于我是通过服务播放音乐,所以在屏幕关闭或应用程序在后台播放时也会播放,因此仍然可以更改音量。

我的另一个想法是打电话

setVolumeControlStream( AudioManager.STREAM_RING );

在开始播放音乐后,我无法从服务中调用它,只能从活动中调用...

或者是否可以在另一个流(响铃或闹钟)上播放音乐,但让音量摇杆仍然改变音乐流?

有什么想法吗?

【问题讨论】:

  • 为什么要阻止这种情况?能够调节音量听起来是个不错的功能?

标签: android volume


【解决方案1】:

'当您的应用程序处于后台时,您不能截取密钥,而是侦听 KeyPress 本身。你可以注册一个 ContentObserver'

Is there a broadcast action for volume changes?

【讨论】:

  • 这行得通,但是 ContentObserver 的 onChange 方法只有在显示新卷的对话框消失后才会被调用。所以您仍然可以更改音量,音量对话框将显示新音量,当它消失时,您可以重置音量。这不是我要找的……你能不能阻止音乐音量对话框出现,以便立即调用 onChange?
【解决方案2】:

由于我还没有找到其他方法,如果音量已更改,我会以大约每秒 5 次的速度检查计时器。如果有,我把它改回来。

这是一个非常丑陋的解决方案,但它确实有效,如果没有其他方法可以做到这一点,我不得不这样。

唯一真正可怕的是,当您按下音量键时会出现音量对话框。有没有办法禁用音量对话框?

或者你知道更好的解决方案吗?

【讨论】:

    猜你喜欢
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多