11

ユーザーが音量キーを上下に押した場合、放送受信機でそれを検出できますか? 完全なコードが必要です。

ここに私のインテントフィルターがあります

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を与えます...何か考えはありますか?

4

1 に答える 1

13

インテントには EXTRA_KEY_EVENT エクストラがありません。新しいボリュームを含む追加の android.media.EXTRA_VOLUME_STREAM_VALUE があります。

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

古い値を保存すると、音量を上げたり下げたりしたかどうかを推測できます。

于 2012-09-24T08:56:00.937 に答える