【问题标题】:Creating 'middleman' headset button controller in Android在 Android 中创建“中间人”耳机按钮控制器
【发布时间】:2012-01-07 08:28:48
【问题描述】:

全部,

我已经搜索过这个问题的答案,但我没有得到任何确切的答案...这是我第一次编写 Android 应用程序,所以请温柔:)

我对 Android 中的最低耳机支持感到非常沮丧 - 不像例如iPhone,它似乎只原生支持单个按钮,因此耳机兼容性上没有音量控制。此外,如果我正在听音乐并且有来电,操作系统会自动暂停音乐,但耳机按钮仍然只能用作媒体按钮 - 我不能用它来接听/结束通话。如果我通过屏幕接听电话并按下耳机按钮,音乐再次响起,但通话仍在继续...

我想创建一个“中间人”应用程序,它可以检测耳机按钮已被按下(通过 Keyevent.KEYCODE_HEADSETHOOK),然后可以确定是否执行默认的 ACTION_MEDIA_BUTTON 操作(在我选择的播放/暂停中切换媒体播放器),或者,如果有来电,暂停音乐并接听电话(然后,再次按下时,结束通话并重新启动媒体播放器)。甚至可以检查耳机按钮上的 ACTION_MULTIPLE 以分配不同的选项(ACTION_MEDIA_NEXT、ACTION_MEDIA_PREVIOUS 等)。也许还能够确定是否按下了耳机上的不同按钮(如果耳机是例如精美的 iPhone 耳机)并将这些按钮按下“翻译”为适当的 ACTION_MEDIA_*)。显然,如果操作系统无法区分不同按钮之间的区别,这可能是不可能的。

显然,这样的应用程序必须以足够高的优先级接收意图,以便能够在当前媒体播放器获得广播之前中止广播。

我一直在修补创建各种 BroadcastReceiver 类和意图过滤器等,但部分问题是 Eclipse 附带的内置 Android 模拟器似乎无法模拟用户插入耳机和/或随后单击耳机按钮。因此,每次我得到看起来很有希望的东西时,我都必须将它放到我的实际手机上并尝试一下——既费时又麻烦。

然后是 3 个问题:

  1. 我是否遗漏了一些明显的问题 - 这是一个真正的问题吗?如果是,是否已经解决了?

  2. 如果有问题,能不能写出这样的中间人app?

  3. 还有其他可以检查耳机相关活动的 Android 模拟器吗?

谢谢,

罗里

【问题讨论】:

  • 我对耳机一无所知,但将它部署到手机上应该非常简单。只需使用 USB 数据线将其插入,当您从 eclipse 运行 Android 应用程序时,它将部署在您的手机上。并不比在模拟器上运行更难。
  • Mayra,你是对的,它看起来不会太糟糕,但由于我保持模拟器打开,在那里复制应用程序需要几秒钟,而将它复制到电话需要更长的时间。也许是因为我只有 USB 1.0(说来话长!)。另外,我不喜欢把应用程序放在我的手机上,除非我知道它们很好用(我的东西几乎肯定不会!)。
  • 其实,我应该再问一个问题:如果有可能有这样一个应用程序,它会在非root手机上运行吗?

标签: android android-emulator


【解决方案1】:

我已经写过这种应用程序。它的名字就像这个主题的主题:耳机按钮控制器;-)

http://www.androidpit.com/en/android/market/apps/app/com.kober.headset/Headset-Button-Controller

克里斯托夫干杯

【讨论】:

  • Christoph:太好了,所以我不需要编写自己的耳机按钮控制器 :) 这是否也允许通过耳机按钮接听来电?
  • 好的,只要阅读它说最新版本确实实现了接听/挂断逻辑的地方。我会告诉你它是否适用于我的 Droid X。
  • 是的,效果很好。 @Martin,如果您正在寻找一个不错的小应用程序,Christoph's 非常酷。
  • 为了方便,market link
  • 这不是问题的答案。
猜你喜欢
  • 1970-01-01
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 2018-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多