如何覆盖我的Android应用程序之外的侧音量键

时间:2012-08-09 00:14:23

标签: android android-activity volume

我想禁用侧音量按钮,因此控制音量的唯一方法是来自我的Android应用程序内的专用活动。 我通过添加以下代码设法为我的所有活动禁用它:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    Log.d(TAG, "onKeyDown = " + keyCode);
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
        return true;
        }
    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
        return true;
    }
    return super.onKeyDown(keyCode, event);

}

但我不知道如何禁用我从我的应用程序开始的活动(例如我启动图库应用程序)!

我知道“Volume Locker”应用可以做类似的事情。

1 个答案:

答案 0 :(得分:3)

在公共API中不可能抑制您自己的活动之外的关键事件,如果有一个应用程序已经设法执行它们正在做的事情将被平台设计者视为恶意,并将修复一些点。

基于对该应用程序的描述(注意:我从未亲自使用过它)

  

防止意外更改音量设置,立即安装Volume Locker。   此应用程序通过托盘通知或弹出窗口确认您所做的更改,有助于防止意外的音量更改。如果您不批准更改,则卷将在设定的秒数内重置...通过将超时设置为“即时”,锁定的卷将立即恢复而不会提示。

我怀疑实际上正在做的是使用类似于in this answer的技术来监听音量按钮,并且只是恢复立即做出的任何改变(ish)。这将使用户看起来像按键按下什么也没做,但实际上发生的事情是音量改变然后迅速改变回来。