Android 在后台长按“收听硬件媒体”按钮
我需要捕捉媒体按钮的长按事件,即使设备已锁定或应用程序处于后台。onKey listener不适用于后台应用程序。我有一个BroadcastReceiver的工作示例,但它只适用于短新闻。我正在使用AudioManager注册接收器。当我长时间按下按钮时,在控制台中可以看到: I/MediaSessionService(684):基于语音的交互:即将使用ACTION\u WEB\u搜索 I/ActivityManager(684):从显示器0上的uid 1000启动u0{act=android.speech.action.WEB_SEARCH flg=0x10800000} 因此,我尝试了通过context.registerReceiver()方法进行ACTION\u WEB\u搜索,但没有成功。我还将receiver with intent过滤器添加到清单文件中Android 在后台长按“收听硬件媒体”按钮,android,button,background,long-press,Android,Button,Background,Long Press,我需要捕捉媒体按钮的长按事件,即使设备已锁定或应用程序处于后台。onKey listener不适用于后台应用程序。我有一个BroadcastReceiver的工作示例,但它只适用于短新闻。我正在使用AudioManager注册接收器。当我长时间按下按钮时,在控制台中可以看到: I/MediaSessionService(684):基于语音的交互:即将使用ACTION\u WEB\u搜索 I/ActivityManager(684):从显示器0上的uid 1000启动u0{act=android.
我还有别的办法吗?或者有人知道有效的解决方案吗?我已经搜索和测试这一功能5天了,我真的很生气=我找到了你在这里描述的问题的答案 您只需长按媒体按钮,将意向过滤器添加到要启动的活动中 当屏幕解锁时,将调用WEB_搜索 当屏幕锁定时,会调用VOICE\u SEARCH\u HANDS\u FREE 向MainActivity添加操作的清单文件:
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait">
<intent-filter android:priority="1000000">
<action android:name="android.speech.action.VOICE_SEARCH_HANDS_FREE" />
<action android:name="android.speech.action.WEB_SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我完全没有听到你的答案!非常感谢你!
@Override
public void onAttachedToWindow() {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
}