Android - переопределена кнопка громкости затронула кнопку назад? - PullRequest
5 голосов
/ 27 марта 2011

Используя приведенный ниже код, я прекратил использование кнопок регулировки громкости, если только я не транслирую аудио (иначе это раздражающе меняет громкость звонка), но кнопка «Назад» не работает.

Нажатие кнопки «Назад» должно попасть на рабочий стол моего телефона (или выйти из моего приложения, как вы ожидаете), но ничего не происходит. Если я открою меню, «Назад» закроет меню, как и должно, но я не могу выйти из приложения.

Я скопировал код на другие действия в моем приложении, если я открыл другое действие в своем приложении, потому что кнопка «Назад» не работает, я не могу вернуться к главному экрану:)

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    //Suppress the use of the volume keys unless we are currently listening to the stream
    if(keyCode==KeyEvent.KEYCODE_VOLUME_UP) {
        if(StreamService.INT_PLAY_STATE==0){
            return true;
        }else{
            return false;
        }
    }
    if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN) {
        if(StreamService.INT_PLAY_STATE==0){
            return true;
        }else{
            return false;
        }
    }
return false;

Почему это происходит?

Ответы [ 4 ]

5 голосов
/ 27 марта 2011

Более простой и надежный способ, с помощью которого клавиши регулировки громкости всегда контролируют громкость мультимедиа, - вставить эту строку в onCreate():

вашей деятельности.
setVolumeControlStream(AudioManager.STREAM_MUSIC);
5 голосов
/ 27 марта 2011

Не проверял, но я думаю, что вам нужно включить еще, где вы вызываете super.onKeyDown, то есть:

if(keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
   code
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
   more code
} else {
   super.onKeyDown(keyCode, event);
}

В противном случае вы фиксируете все коды клавиш и возвращаете false после проверки кодов громкости.

3 голосов
/ 27 марта 2011

Чувак, просто измените аудиоконтент этого действия на громкость мультимедиа:

http://developer.android.com/reference/android/media/AudioManager.html

РЕДАКТИРОВАТЬ:

private AudioManager audio;

Внутри onCreate:

audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

Переопределить onKeyDown:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
    case KeyEvent.KEYCODE_VOLUME_UP:
        audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
        return true;
    case KeyEvent.KEYCODE_VOLUME_DOWN:
        audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
        return true;
    default:
        return false;
    }
}
0 голосов
/ 28 апреля 2016
public boolean onKeyDown(int keyCode, KeyEvent event) {

    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
        //your code
        return true;

    } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
        //your code
        return true;
    } else {

        super.onKeyDown(keyCode, event);
    }


    return true;

}
...