イヤホンマイク、ヘッドセットと呼ばれる、再生、進む、戻るボタンの付いたイヤホンを検出します。

方法

dispatchKeyEvent()を、Activityにオーバーライドします。その後、該当するKEYCODEでアクションを指定してあげます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    switch (event.getAction()) {
    case KeyEvent.ACTION_DOWN:
        switch (event.getKeyCode()) {

        case KeyEvent.KEYCODE_HEADSETHOOK:
      //ここに、再生ボタン押下時の動作を指定する
      return true;
        default:
            break;
        }
        break;

    case KeyEvent.ACTION_UP:
        switch (event.getKeyCode()) {
        case KeyEvent.KEYCODE_VOLUME_UP:
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            // キーが離された場合はイベントを捨てる
            return true;
        default:
            break;
        }
        break;

    default:
        break;
    }
    return super.dispatchKeyEvent(event);
}

KEYCODE_HEADSETHOOKってのが、再生ボタンのキーコードです。
キーコードを発見するには、引数であるeventをLogで出力してみればわかります。

1
 Log.v("event", event.toString());

LogCatにこんなかんじで出力されます。
これに気づかなくて、「イヤホン ボタン 検出」とか、「再生ボタン KEYCODE」とかでずっとググってました。
どんなハードウェアボタンもどんと来いですね!