JoeDevHeadphoneControls 扩展
检测用户按下耳机上的物理按键(有线耳机与蓝牙耳机都支持),把按下的键通过 HeadsetButtonPressed 事件返回,可作为逻辑配合 App Inventor 内置的 Player 等播放器做耳机线控。
作者已在 Beats Studio 3(原帖误拼为 Beads)与 Apple EarPods 上实测通过;不确定是否适配市面上所有耳机。
下载
joejsanz.joedevheadphonecontrols.aix(v1.1)
HeadphoneControls.aia - 原作者完整演示项目
HeadphoneControlsTest.aia - 精简测试项目(仅本扩展与播放器)
基本信息
- 版本:
v1.1 - 发布时间:
2025-11-30(首发),v1.1 更新于2025-12-02 - JDK:
11 - 最低 API 级别:
21 - 构建方式:
FAST-CLI v5.3.2-premium - 体积:aix 约 10.3KB;示例项目 HeadphoneControls.aia 约 2.2MB、HeadphoneControlsTest.aia 约 2.1MB(仅含本扩展与播放器的精简版)
截图
StartHeadphoneControl 方法

StopHeadphoneControl 方法

HeadsetButtonPressed 事件

方法
- StartHeadphoneControl开启耳机按键检测()
- 开启耳机按键检测(v1.0 方法名,单数)。
- StopHeadphoneControl停止耳机按键检测()
- 停止耳机按键检测:清理 MediaSession 并释放 AudioFocus(v1.0 方法名,单数)。
- StartHeadphoneControls开启耳机按键检测()
- 开启耳机按键检测(v1.1 新增,复数,可更精细地控制何时激活)。
- StopHeadphoneControls停止耳机按键检测()
- 停止耳机按键检测(v1.1 新增,复数)。
事件
- HeadsetButtonPressed耳机按键按下时(按键动作)
- 耳机上的按键被按下时触发。buttonAction 取值:Play、Pause、Play_Pause、Stop、Next、Previous、Fast_Forward、Rewind、Call_Button(中央键)。
使用注意(重要,来自作者与社区实测)
- 必须在 Screen 初始化时调用 Start:作者专门确认过”你是在初始化时加的这个功能吗?”——放在初始化事件里才能生效。
- App 内必须先有声音在播:App 拿到 AudioFocus 优先级后才能接管耳机按键;App 内没有播放音频时按键检测无效。先从 App 内开始播放,之后耳机键才可用。
- 只有中央键的单键耳机:中央键交替返回 Play / Pause(社区成员 Marco_M 实测确认)。
- WebView 抢占焦点会令检测失效:Marco_M 的案例里,一个定时器打开隐藏 WebView 加载电台网页后耳机键失灵,禁用那组积木后恢复——作者定位为”有东西在运行并阻塞了它”。
- v1.0 曾因移除了 MediaService 扩展自动申请的权限而失效,v1.1 补上了
FOREGROUND_SERVICE权限,可独立使用、不再受其它扩展控制。
版本更新
v1.1(2025-12-02)
- Manifest 补上缺失的
FOREGROUND_SERVICE权限:独立使用(不依赖其它扩展)也能正常工作。 - 新增 StartHeadphoneControls / StopHeadphoneControls 两个方法(复数命名),更精细地控制耳机检测的启停时机。
版权信息
本文档内容依据原作者发布页面整理翻译,版权归原作者所有。
- 原作者:Joe J. Sánchez(Joejsanz)
- 原始网址:https://community.appinventor.mit.edu/t/headphonecontrols-detects-when-the-user-presses-the-physical-buttons-on-the-headphones-both-wired-and-bluetooth/160553
- 发布日期:2025年11月30日
扫码添加客服咨询