我已经看到几个类似的问题与解决方案,但我找不到适合我的情况。音量首选项 - 阻止音量键
我正在使VolumePreference(扩展DialogPreference)让我们的用户选择音量级别的一些警报。
在其他优选情况下,用户选择在警报期间播放的期望的铃声。当用户在VolumePreference中选择音量时也会播放,所以他知道它实际上是如何发声的。
在另一个首选项中,用户选择是否在播放时应该“覆盖”手机的媒体音量级别 - 我这样做,所以如果用户想要具有固定音量级别的闹铃,那么它不应该受到音量键等。 如果用户选择这样做,在AlarmActivity中开始播放闹钟之前,我使用AudioManager将音量设置为最大音量,并拦截音量键的所有keyDown事件,在闹钟结束后恢复音量级别。
问题是,我无法阻止我的VolumePreference中的音量键,因为没有onKeyDown方法。
经过一番检查后,我发现AudioManager的registerMediaButtonEventReceiver方法是“注册一个组件作为MEDIA_BUTTON意图的唯一接收者”,我相信这可能有助于我的情况(制作一些空的接收器),甚至进行音量锁定更普遍的(注册时,我要开始锁定,注销后解锁),但它是从API8工作,而我正在为API7应用程序 - 这仍持有超过市场的10%,从我读,所以我想坚持到它。
有关如何阻止PreferenceDialog中音量更改的任何想法?