Пользовательская тема для Media Volume Controller (как бы она ни называлась) Android?

Я пытаюсь настроить тему Media Volume Controller (я не знаю, как она называется, просто попробуйте назвать ее). Это что-то вроде Toast с заголовком «Media Volume», который появляется, когда мы нажимаем кнопки громкости (+ и -) в играх. Но я не знаю, какой это вид, или это тост, или диалог. Насколько я пытался, я не мог найти ничего, что ссылалось бы на это. Только Activity.setVolumeControlStream(AudioManager.STREAM_MUSIC), чтобы включить его в свою активность, и ничего больше >_‹ Если кто-то знает, как настроить его или просто его имя, пожалуйста, помогите мне! Спасибо.


person Anh Tuan    schedule 08.10.2010    source источник


Ответы (2)


Извините за непонимание вашего вопроса.

Я думаю, что способ, которым вы можете настроить «Контроллер громкости мультимедиа», - это самостоятельно контролировать громкость и показывать свой настраиваемый вид (или тост). Поскольку тост «Media Volume» (это тост, см. исходный код VolumePanel.onShowVolumeChanged) создается и отображается системой Android, которую вы не можете настроить.

Вот пример кода, который может решить вашу проблему:

public boolean onKeyDown(int keyCode, KeyEvent event) {
    AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
        // Or use adjustStreamVolume method.
        am.adjustVolume(AudioManager.ADJUST_RAISE, AudioManager.FLAG_PLAY_SOUND);
        Toast.makeText(this, "Volume up", Toast.LENGTH_SHORT).show();
        return false;
    } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
        // Or use adjustStreamVolume method.
        am.adjustVolume(AudioManager.ADJUST_LOWER, AudioManager.FLAG_PLAY_SOUND);
        Toast.makeText(this, "Volume down", Toast.LENGTH_SHORT).show();
        return false;
    }
    return super.onKeyDown(keyCode, event);
}
person Tony    schedule 10.10.2010
comment
Еще раз спасибо за вашу помощь. Я попробую ваше предложение. Очень жаль, что я новичок в Stackflow, поэтому не могу проголосовать за вас. - person Anh Tuan; 11.10.2010

Вы можете переопределить onKeyDown своей игровой активности. И показать «Тост» в соответствии с только что нажатой клавишей. onKeyDown будет вызываться при нажатии клавиши в вашей деятельности. Ниже приведен пример кода:

public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
        // show volumn up toast
    } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
        // show volumn down toast
    }
    return super.onKeyDown(keyCode, event);
}
person Tony    schedule 08.10.2010
comment
Спасибо за помощь. Я также думал об этом, но этот контроллер громкости мультимедиа не является тостом, потому что, если он отображается и вы нажимаете кнопку громкости, он не появится снова, а изменит полосу громкости (тост исчезнет, ​​а затем снова появится через несколько секунд). секунды). И он расположен вверху экрана, а не внизу, как Toast. Ааа, хотел бы я знать, к какому классу он принадлежит ›_‹ - person Anh Tuan; 09.10.2010
comment
Ань Туан, я думаю, что это на самом деле Тост. Взгляните на Toast API. Есть возможность установить пользовательский вид для Toast, и вы можете изменить содержимое Toast во время его отображения, а также вы можете изменить положение Toast, используя метод setGravity(). - person Ridcully; 28.01.2011