Android BroadCastReceiver для увеличения громкости вверх и вниз

Если пользователь нажимает клавишу громкости вверх или вниз, можно ли ее обнаружить в моем широковещательном приемнике? Мне нужен полный код.

Вот мой фильтр Intent

IntentFilter filter = new IntentFilter(); filter.addAction("android.media.VOLUME_CHANGED_ACTION"); 

И мой метод onReceive

 public void onReceive(Context arg0, Intent intent) { KeyEvent ke = (KeyEvent)intent.getExtras().get(Intent.EXTRA_KEY_EVENT); if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) { System.out.println("I got volume up event"); }else if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) { System.out.println("I got volume key down event"); } } 

Это дает мне null KeyEvent … любую идею?

Solutions Collecting From Web of "Android BroadCastReceiver для увеличения громкости вверх и вниз"

У этого намерения нет дополнительного EXTRA_KEY_EVENT. У него есть дополнительный файл android.media.EXTRA_VOLUME_STREAM_VALUE, который содержит новый том.

 int volume = (Integer)intent.getExtras().get("android.media.EXTRA_VOLUME_STREAM_VALUE"); 

Если вы сохраните старое значение, вы можете сделать вывод, был ли нажат громкость вверх или вниз.