1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Volumetasten zur Navigation benutzen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von schmandroid, 23.02.2012.

  1. schmandroid, 23.02.2012 #1
    schmandroid

    schmandroid Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    23.02.2012
    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

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    23.02.2012
    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:
     

Diese Seite empfehlen