在Android中创建“中间人”耳机按钮控制器

时间:2011-01-24 20:49:56

标签: android android-emulator

所有

我已经找到了答案,但我没有得到任何确切的信息......这是我第一次写一个Android应用程序,所以请保持温和:)

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

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

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

我一直在修改各种各样的BroadcastReceiver类和intent过滤器等,但问题的一部分是Eclipse附带的bult-in Android模拟器似乎没有能力模拟用户插入耳机和/或随后点击耳机按钮。因此,每当我得到一些看起来很有前途的东西时,我必须把它放到我的实际手机上并尝试一下 - 耗费时间和麻烦。

然后提出3个问题:

  1. 我错过了一些显而易见的事实 - 这是一个真正的问题,如果是的话,它已经解决了吗?

  2. 如果这是一个问题,是否可以编写这样的中间人应用程序?

  3. 是否有其他Android模拟器可以检查与耳机相关的活动?
  4. 谢谢,

1 个答案:

答案 0 :(得分:1)

我已经写完了这种应用程序。它被称为这个主题:耳机按钮控制器; - )

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

干杯克里斯托夫