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

MediaCompat -挂钩按钮
EN

Stack Overflow用户
提问于 2018-05-13 08: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 06: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

复制
相关文章
python3 TypeError: a
运行telnetlib的时候报错:TypeError: a bytes-like object is required, not ‘str’,原因是因为python2和python3的版本的差异。 在python2中可正常运行,而python3最重要的新特性也是对文本和二进制数据做了更清晰的区分。文本用unicode编码,为str类型,二进制数据则为bytes类型。
py3study
2020/01/03
1.1K0
Mac 安装Python3
Python 2.7.10 (default, Jul 15 2017, 17:16:57) 
星宇大前端
2019/01/15
2K0
Pygraphviz
代码越来越复杂,为了理清架构,需要搞清楚现有代码业务逻辑,没有很顺手的工具,简单写写学习一下。
vanguard
2020/12/30
5750
python3 调用heapq库 时遭遇 "TypeError: unorderable types"
同样的代码在LeetCode上提交,在 python3解释器 下报错,换成 python2解释器 下却好好的:
JNingWei
2018/09/27
7550
python3 调用heapq库 时遭遇 "TypeError: unorderable types"
mac python3 安装parami
$ git clone https://github.com/paramiko/paramiko.git
py3study
2020/01/03
4740
mac> python3 安装Djang
说明:mac系统自带了python2.x (在/System/Library/Frameworks/Python.Frameworks/Version/2.x/...)
py3study
2020/01/03
4990
安装python3(mac、使用brew
其中在最后一行/usr/local/Cellar/python/3.6.5这个便是使用brew安装python3的目录
py3study
2020/01/13
3.1K0
mac系统安装pycharm_mac下载python3
pycharm 是一款针对python开发的优秀的IDE, 以下是针对其在mac上的开发配置使用
全栈程序员站长
2022/09/28
5200
PyGraphviz 安装使用
PyGraphviz 对于图、点和边的设置,如颜色、样式、形状等属性,分别提供有 graph_attr、node_attr 和 edge_attr 属性设置函数。
zhipingChen
2018/09/13
2.2K0
PyGraphviz 安装使用
基础服务系列-Mac 安装Python3
前言 本例采用brew安装。未安装brew,参考Mac 安装Brew。 安装步骤 search brew search python3 ==> Formulae boost-python3 python3 ✔ python@3 ✔ python@3.8 If you meant "python3" specifically: It was migra
用户2146693
2021/12/28
3200
基础服务系列-Mac 安装Python3
mac安装虚拟环境python3
Virtaulenvwrapper是virtualenv的扩展包,可以更方便地新增,删除,复制,切换虚拟环境。
新人小试
2020/03/31
5980
python3搞系统里头之Mac篇
mac系统自带python2环境, 但现在一般使用的都是python3, 而且python2在2020.1.1以后不会再进行维护了, 所以安装个python3还是很有必要的
不止于python
2022/05/31
3140
python3搞系统里头之Mac篇
Mac下Python3安装及基于Idea开发
本篇文章带大家基于Mac OS操作系统,下载、安装Python环境,并基于Idea编写第一个Demo。
程序新视界
2023/04/09
1.1K0
Mac下Python3安装及基于Idea开发
MAC os :LightGBM Installation Error in MacOS with Anaconda Python3
macos 报错 OSError: dlopen(/Users/yanerrol/opt/anaconda3/envs/py366/lib/python3.6/site-packages/lightgbm/lib_lightgbm.so, 6): Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib Referenced from: /Users/yanerrol/opt/anaconda3/envs/py366/lib/python3.6
AI拉呱
2021/03/04
1.5K0
linux下运行python3出现TypeError: a bytes-like object is required, not 'str'
 以上代码用python3运行后,出现TypeError: a bytes-like object is required, not 'str'
逆向小白
2018/09/12
13.8K0
linux下运行python3出现TypeError: a bytes-like object is required, not 'str'
mac os+selenium2+chrome驱动+python3
mac os 10.11.5 mac自带python2.7,自己下载了python3.5,pip list查看系统中的安装包,本人电脑中已经安装了pip和setuptools,若未安装,请先使用
全栈程序员站长
2022/09/07
4710
Mac上最简单配置python3开发环
网上有使用pyenv方式安装python3以实现与系统的python版本共存而不冲突,个人觉得其实没有必要,我们其实可以单独运行python3。 首先我们还是需要先安装python3,这里使用homebrew安装,方便快捷好管理,棒棒哒!
py3study
2020/01/05
1.3K0
Mac下安装Python3、pip、ipython的方法
1 安装Xcode 1.1 App Store 搜索Xcode 并安装 1.2 安装 Xcode command line tool 1.2.1 打开命令行terminal工具 control + space 输入terminal 回车 1.2.2 安装Xcode command line tool xcode-select --install 2 安装套件管理工具 Homebrew 2.1 安装 Homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw
Python疯子
2018/09/06
1.7K0
python3在pycharm中为什么导入random模块不能用? TypeError: ‘module’ object is not callable…
新手学python求大神指导,也用sys导入了random.py的路径,仍然不行。
全栈程序员站长
2022/07/07
1.5K0
Django Models UML
Generate a class diagram based on GraphViz(pygraphviz) and django django-extensions
vanguard
2020/12/09
8260

相似问题

Python3,可除以3,typeError

12

Python3: TypeError:“TypeError”对象不可订阅

11

安装PyGraphviz时出错(Mac、Anaconda)

40

PySide & Python3: TypeError on QAction

10

Python3 Runserver TypeError {newbie}

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档