Клавиши управления громкостью - PullRequest
4 голосов
/ 21 декабря 2010

В моем приложении я переопределил функции onKeyDown() и onKeyUp() для захвата событий клавиш регулировки громкости. Я использую такие события, чтобы контролировать громкость своего приложения. Я использую музыкальный поток для воспроизведения своих звуков. При обнаружении события, подобного этому, я также показываю собственный тост (похожий на показанный Android). Проблемы, с которыми я сталкиваюсь с этим дублем:

  1. Android всегда воспроизводит звук на событиях клавиш громкости
  2. Этот звук воспроизводится всегда с одинаковой интенсивностью.

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

Ответы [ 2 ]

9 голосов
/ 16 июня 2011

На самом деле звук воспроизводится в onKeyUp (...), так что вы можете просто перегрузить метод в своей деятельности, когда он вызывается для клавиш регулировки громкости:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP) || (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)) {
       return true;
    }
    return super.onKeyUp(keyCode, event);
}

Это сработало для меня :)

0 голосов
/ 27 января 2011

Это странно, потому что я писал аналогичную функциональность, а Android, кажется, воспроизводит более громкие звуки, когда вы увеличиваете громкость потока.

am.setStreamVolume(AudioManager.STREAM_MUSIC, progress,AudioManager.FLAG_PLAY_SOUND);

Вот что я использовал в своем приложении. am является экземпляром AudioManager, который вы можете получить, написав:

AudioManager am = (AlarmManager) getSystemService(AUDIO_SERVICE);

Чтобы отключить звук, вы можете заменить AudioManager.FLAG_PLAY_SOUND значением «0», что должно его отключить.

Я не уверен, возможно ли заменить этот звук в AudioManager, но вы можете воспроизводить эти пользовательские звуки с помощью MediaPlayer внутри ваших методов onKeyDown.

Надеюсь, это поможет.

...