发布
社区首页 >问答首页 >MediaCompat -挂钩按钮

MediaCompat -挂钩按钮
EN

Stack Overflow用户
提问于 2018-05-13 16:41:05
回答 1查看 160关注 0票数 0

我有以下代码来捕获耳机上的钩子按钮按下。这段代码适用于Android4.1、Android5.0和7.0

我有两个耳机,

第一个是一个简单的三星免提/耳机,它与一个旧的三星手机一起提供。它只有一个按钮。

第二个是带有免提麦克风的索尼耳机,它也只有一个按钮。

当插入Android4.1或Android5时,这两款耳机都可以识别OnPlay方法中的按钮按下(见下面的代码)。

然而,在Android7.1.2中,当我使用三星耳机时,当钩子按钮被按下时,onPlay方法不会被调用。

按下索尼头戴式耳机按钮会导致调用onPlay方法。

我添加了注释掉的代码,以查看应用程序是否正在接收MediaButton事件。如果我使用三星耳机并按下按钮,它会导致MediaButton事件,我使用onMediaButtonEvent对其进行了验证。

为什么这个mediabutton事件不能转换成onPlay --只有在Android7.1.2的情况下,而且也只能使用那个特定的耳机。

我应该在活动中看什么。

代码语言:javascript
代码运行次数:0
复制
private void initMediaSessions()
{
    mSession = new MediaSessionCompat(getApplicationContext(), VoiceTicketService.class.getSimpleName());

    mSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS);
    mSession.setMediaButtonReceiver(null);

    mStateBuilder = new PlaybackStateCompat.Builder()
            .setActions(PlaybackStateCompat.ACTION_PLAY);
    mSession.setPlaybackState(mStateBuilder.build());
    mSession.setCallback(new MediaSessionCompat.Callback()
                         {
                             //callback code is here.
                             @Override
                             public void onPlay()
                             {
                                 Log.d("onPlay", "Hook key  pressed UI is active");
                                 toggleRecogniserState();
                             }
                             @Override
                             public void onStop()
                             {
                                 Log.d("onStop", "Hook key  pressed UI is active");
                                 toggleRecogniserState();
                             }
                             @Override
                             public void onPause()
                             {
                                 Log.d("onPause", "Hook key  pressed UI is active");
                                 toggleRecogniserState();
                             }
                       /*      @Override
                             public boolean onMediaButtonEvent(Intent mediaButtonEvent)
                             {
                                 KeyEvent event = (KeyEvent)mediaButtonEvent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
                                 Log.d("onMediaButtonEvent ", "Hook key  pressed UI is active "+event.getAction());
                                 if(event.getAction()==0)
                                    toggleRecogniserState();
                                 return true;
                             }*/
                         }
    );
    mSession.setActive(true);
}
EN

回答 1

Stack Overflow用户

发布于 2018-05-14 14:18:35

我已经在事件上使用getKeycode()解决了这个问题。

按下挂钩按钮所需的KeyCode为79。当在Android 4.1,5.0上测试时,两个耳机都会发送此按键码79。

然而,Android 7.1是在小米手机上运行的,小米手机有自己的Android模块。我认为这就是罪魁祸首,它将三星耳机按下的按钮识别为键码88而不是79。所以这是一个特定于手机的问题,而不是Android的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50314308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档