Prendendo il tasto del volume su Android

Voglio intraprendere il sovrapposto per il volume su e giù. Al momento il mio codice è:

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { Log.v(TAG, event.toString()); if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){ mLamp.moveBackward(); return false; } else if(keyCode == KeyEvent.KEYCODE_VOLUME_UP){ mLamp.moveForward(); return false; } return true; } public boolean onKeyUp(int keyCode, KeyEvent event) { Log.v(TAG, event.toString()); if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){ return false; } else if(keyCode == KeyEvent.KEYCODE_VOLUME_UP){ return false; } return true; } 

Ciò triggers la function mLamp.moveBackward() e mLamp.moveForward() ma cambia ancora il volume del suono. Cosa devo fare perché la rumorosità del suono non cambia?

  • Evidenziare la row selezionata ListView
  • Personalizza ActionBar TabBar (ActionBarSherlock)
  • I blocchi di WebView WebView vengono reindirizzati da https a http
  • Come controllare quale ID di notifica viene cliccato?
  • Android Studio - Google mappa ancora vuota sul vero dispositivo Android sul rilascio apk
  • Android: limitare i frammenti che caricano con un viewPager
  • 3 Solutions collect form web for “Prendendo il tasto del volume su Android”

    Se hai gestito l'evento, restituisci true . Se si desidera consentire l'esecuzione dell'evento dal ricevitore successivo, restituire false .

    È importnte restituire true se si è gestito l'evento, ma se non hai gestito l'evento, è bene assicurarsi che l'evento sia ancora gestito dalla superclass. Ecco un codice dalla mia applicazione:

     @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP) { changeColor(keyCode); return true; } return super.onKeyDown(keyCode, event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP) { // do nothing return true; } return super.onKeyUp(keyCode, event); } 

    Nel mio caso era necessaria la chiamata a superclass in modo che altri pulsanti hardware sul dispositivo continuassero a funzionare.

     public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) { return true; } else if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) { return true; } return dispatchKeyEvent(event); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.