3

我正在开发一个Android应用程序,我的应用程序一旦启动就会发出警报,但我想禁用外部音量按钮,这样当手机发出警报时,用户无法调低警报音量。我已经在我的手机上使用 Android 版本 2.3.5 进行了测试,但它无法正常工作。下面是我的编码。希望有人可以帮助我...谢谢。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event){

    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP){
        Toast.makeText(this, "Volume Up", Toast.LENGTH_LONG).show();
        return true;
    }

    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){
        Toast.makeText(this, "Volume Down", Toast.LENGTH_LONG).show();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}
4

3 回答 3

10

尝试覆盖dispatchKeyEvent(KeyEvent event)

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    boolean result;
     switch( event.getKeyCode() ) {
        case KeyEvent.KEYCODE_VOLUME_UP:
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            result = true;
            break;

         default:
            result= super.dispatchKeyEvent(event);
            break;
     }

     return result;
}

见这篇文章

于 2012-11-21T14:32:04.870 回答
0

最好的方法是在一个音频流( AudioManager.STREAM_ALARM )上播放警报声音,并使音量按钮与另一个音频流(setVolumeControlStream(AudioManager.STREAM_MUSIC);)相关联。http://developer.android.com/training/managing-audio/volume-playback.html#HardwareVolumeKeys

于 2012-11-21T14:54:44.887 回答
0

只需返回 true 即可禁用音量操作。现在您可以通过 onVolumeDown() 和 onVolumeUp() 函数执行其他操作。

 @Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
       if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN)
          onVolumeDown();
    if(keyCode==KeyEvent.KEYCODE_VOLUME_UP)
        onVolumeUp();

    return true;
    //return super.onKeyDown(keyCode, event);
}
于 2019-08-27T21:07:14.653 回答