1. Gewinne jetzt ein UMiDIGI C Note - alle Informationen findest du hier!!
  1. schmandroid, 23.02.2012 #1
    schmandroid

    schmandroid Threadstarter Neuer Benutzer

    Hallo zusammen,

    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!
     
  2. schmandroid, 23.02.2012 #2
    schmandroid

    schmandroid Threadstarter Neuer Benutzer

    Die Änderung des Menübuttons, so dass dieser wie DpadCenter funktioniert, läuft übrigens. Nur bei den Lautstärkebuttons klappt nach wie vor nichts...:confused:
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Jedem Benutzer eine eigene ID zuweisen? Android App Entwicklung 16.03.2017
[ERLEDIGT] Navigation Drawer stürzt ab nach dem schchließen durch thread Android App Entwicklung 13.03.2017
SQLite asynchron benutzen Android App Entwicklung 26.02.2017
Benachrichtigung/Erinnerung an den Benutzer Android App Entwicklung 14.02.2017
TabLayout mit RecyclerView zur weiteren Navigation Android App Entwicklung 06.01.2017
Brauche Vorschläge welche GUI Elemente ich benutzen soll in meiner App Android App Entwicklung 24.12.2016
Wie erstelle ich Icons für die Items im Navigation Drawer (xml Format) Android App Entwicklung 09.12.2016
Import Fehler beim Navigation Drawer Android App Entwicklung 01.12.2016
Fehler im Navigation Drawer Android App Entwicklung 24.11.2016
Benutzer eindeutig identifizieren ohne Registrierung Android App Entwicklung 28.10.2016
Du betrachtest das Thema "Volumetasten zur Navigation benutzen" im Forum "Android App Entwicklung",