Я хотел бы переопределить кнопку «volume» на Android-телефоне. Например, Когда я нажимаю увеличение или уменьшение, громкость не изменяется, но только для печати слова.Как переопределить кнопку «volume» на android
ответ
Просто переопределить OnKeyDown метод, как это:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_VOLUME_UP){
//Do whatever you want to do on Volume Up
return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){
//Do whatever you want to do on Volume Down
return true
}
return false;
}
PROTIP: Если вы хотите, чтобы это поведение на всех ваших действий, а не только один, просто сделать это в MainActivity.java (или что вы хотите назвать это) и сделать все другие действия продлением MainActivity.
PROTIP 2: Не делайте этого, если это абсолютно необходимо, и вы уведомляете пользователя, что он работает именно так. Пользователи Android обычно жалуются, что не имеют общего поведения между приложениями.
Вы должны переопределить метод dispatchKeyEvent(), как это:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int action = event.getAction();
int keyCode = event.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
if (action == KeyEvent.ACTION_UP) {
//TODO
Toast.makeText(this,"Your First Word",Toast.LENGTH_SHORT).show();
}
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
if (action == KeyEvent.ACTION_DOWN) {
//TODO
Toast.makeText(this,"Your Second Word",Toast.LENGTH_SHORT).show();
}
return true;
default:
return super.dispatchKeyEvent(event);
}
}
Таким образом, вы будете создавать тост при нажатии на громкость или при отпускании громкости. 'KeyEvent.ACTION_UP' не относится к тому, это действие, которое вы получаете при нажатии, а' KeyEvent.ACTION_DOWN' - это действие, которое вы получаете при выпуске. – razielsarafan
посмотреть мой код работает я уже опробовал !! –