S
schmandroid
Neues Mitglied
- 0
Hallo zusammen,
in einem ListView nutze ich folgenden Code um die Funktion der Lautstärketasten zu ändern:
es wird also z.B. beim VolumeDown-KeyCode stattdessen ein DpadDown-Event gesendet.
Das ganze klappt so weit ganz gut und ermöglicht mir das Programmieren barrierefreier Anwendungen.
Wenn ich den gleichen Code jedoch in einer "normalen" Activity nutze passiert absolut nichts wenn ich die Lautstärketasten bediene (also auch kein lauter/leiser).
Im Emulator funktioniert die Navigation mit dem virtuellen DPad. Kann mir jemand sagen Danke schonmal & viele Grüße!
in einem ListView nutze ich folgenden Code um die Funktion der Lautstärketasten zu ändern:
Code:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// die Tastenbelegung wird nur geändert wenn Barrierefreiheit eingestellt ist
if (barrierefrei) {
// die action beschreibt wie die Taste betätigt wird
int action = event.getAction();
// der keycode beschreibt welche Taste betätigt wird
int keyCode = event.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_DOWN:
if (action == KeyEvent.ACTION_DOWN) {
// Falls die Taste "leiser" gedrückt wird soll ein "abwärts" KeyEvent gesendet werden
//if (barrierefrei) vibrator.vibrate(100);
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_DOWN));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_DOWN));
}
return true;
case KeyEvent.KEYCODE_VOLUME_UP:
if (action == KeyEvent.ACTION_DOWN) {
// Falls die Taste "lauter" gedrückt wird soll ein "aufwärts" KeyEvent gesendet werden
//if (barrierefrei) vibrator.vibrate(100);
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_UP));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_UP));
}
return true;
case KeyEvent.KEYCODE_MENU:
if (action == KeyEvent.ACTION_DOWN) {
// Falls die Taste "Menu" gedrückt wird soll ein "center" KeyEvent gesendet werden
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_CENTER));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_CENTER));
}
return true;
default:
return super.dispatchKeyEvent(event);
}
}
else {
return super.dispatchKeyEvent(event);
}
}
es wird also z.B. beim VolumeDown-KeyCode stattdessen ein DpadDown-Event gesendet.
Das ganze klappt so weit ganz gut und ermöglicht mir das Programmieren barrierefreier Anwendungen.
Wenn ich den gleichen Code jedoch in einer "normalen" Activity nutze passiert absolut nichts wenn ich die Lautstärketasten bediene (also auch kein lauter/leiser).
Im Emulator funktioniert die Navigation mit dem virtuellen DPad. Kann mir jemand sagen Danke schonmal & viele Grüße!