接收Android中的耳机操作

时间:2015-05-16 15:07:49

标签: android groovy bluetooth

我试图为Android编写一个音乐播放器作为学校的项目,我试图拦截我的蓝牙耳机的动作(Parrot Zik 2.0,如果重要的话)。

这是我目前的代码:

AndroidManifest.xml

<receiver android:name=".core.MediaButtonReceiver">
    <intent-filter android:priority="100">
        <action android:name="android.intent.action.MEDIA_BUTTON" />
    </intent-filter>
</receiver>

在我的班级MediaButtonReceiver中我为测试目的写了以下内容(Groovy):

public class MediaButtonReceiver extends BroadcastReceiver
{

    @Override
    void onReceive(Context context, Intent intent)
    {
        def intentAction = intent.action
        if(!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) return

        def event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT) as KeyEvent
        if(event == null) return

        def action = event.action

        Log.e(this.class.toString(), "action : ${action}")
        switch(action)
        {
            case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
                Log.e(this.class.toString(), "Play/pause")
                abortBroadcast()
                break
            case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
                Log.e(this.class.toString(), "Previous")
                abortBroadcast()
                break
            case KeyEvent.KEYCODE_MEDIA_NEXT:
                Log.e(this.class.toString(), "Next")
                abortBroadcast()
                break
            case KeyEvent.KEYCODE_VOLUME_UP:
                Log.e(this.class.toString(), "Volume up")
                abortBroadcast()
                break
            case KeyEvent.KEYCODE_VOLUME_DOWN:
                Log.e(this.class.toString(), "Volume down")
                abortBroadcast()
                break
        }
    }
}

使用以下内容时:

E/class augier.fr.phoebius.core.MediaButtonReceiver﹕ 0
E/class augier.fr.phoebius.core.MediaButtonReceiver﹕ 1

所以看起来我确实抓到了一些东西,但看起来它只对应于按下按钮然后释放按钮时的事件,而且我无法将其与任何特定动作相匹配。

我可能错误地使用它,但到目前为止,我还没有找到解释如何在互联网上捕捉媒体相关事件的教程。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

而不是

def action = event.keyCode

试试这个:

ActiveForm