是否可以对Android应用程序中的耳机音量增大/减小键做出反应?

时间:2011-04-07 16:45:30

标签: android media

我想知道实际上是否可以对Android应用程序中的耳机音量控制按钮作出反应。每当我使用支持iPhone / iPod的耳机时,我都可以使用带有各种音乐应用程序的暂停/前进/后退按钮,但是没有人可以对音量控制做出反应。

我经常搜索,但没有找到任何直接解决此问题的内容。

我很好奇这是对Android平台还是我正在使用的应用的限制。如果不是限制,我如何从我自己的Android应用程序中的耳机中捕获音量摇杆事件。

iPhone / iPod似乎能够通过3.5毫米插孔对所有耳机事件作出反应。在我看来它也应该可以在Android中使用。

1 个答案:

答案 0 :(得分:1)

这是100%与应用程序本身相关的问题。有很多很好的例子来解决这个问题。例如,您可以通过以下方式解决此问题:

private MPR mediaPlayerReceiver = new MPR();

onCreate() {
   ...
   IntentFilter mediaFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
   // this is nasty, since most apps set it to 9999, so you need to be higher
   mediaFilter.setPriority(999);
   this.registerReceiver(mediaPlayerReceiver, mediaFilter);
   ...
}

MPR  extends BroadcastReceiver {
    public MPR() {
        super();
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        String intentAction = intent.getAction();
        if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
            return;
        }
        KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
        if (event == null) {
            return;
        }
        try {
            int action = event.getAction();
            switch(action) {
                case KeyEvent.ACTION_DOWN :
                    // handle play/pause here
                    break;
            }
        } catch (Exception e) {
            // something bad happened
        }
        abortBroadcast();
    }
}