gpt4 book ai didi

android - 屏幕关闭时的 AccessibilityService OnKeyEvent

转载 作者:行者123 更新时间:2023-11-29 01:36:30 33 4
gpt4 key购买 nike

我正在使用 AccessibilityService OnKeyEvent 来捕获 Headsethook。这样一来,即使我的应用程序未处于焦点状态,我也可以在按下键和按下键时触发事件。

但是,一旦屏幕熄灭,它就不起作用了。有什么办法解决这个问题吗?

最佳答案

AccessibilityService 在屏幕关闭时将不起作用。所以要实现在断电时捕获 KeyEvent 的效果,您应该使用其他替代方法。

如果你只想捕获HEADSETHOOK,你可以使用MediaButtonIntentReceiver代替AccessibilityService:注册一个BroadcastReceiver接收 ACTION_MEDIA_BUTTON Intent ,因此可以在后台捕获 KEYCODE_MEDIA_*KEYCODE_HEADSETHOOK,即使屏幕关闭也是如此。

AndroidManifest.xml

<receiver android:name="com.exmaple.MediaButtonReceiver"><intent-filter >
<action android:name="android.intent.action.MEDIA_BUTTON"></action>
</intent-filter></receiver>

MediaButtonReceiver.java

...
public void onReceive(Context context, Intent intent) {
...
KeyEvent keyEvent = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
int keyCode = keyEvent.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_HEADSETHOOK:
...
}
}
...
}

如果您不希望其他应用捕获HEADSETHOOK,您应该使用AudioManager 来注册它:

...
AudioManager mAudioManager =(AudioManager)getSystemService(Context.AUDIO_SERVICE);
ComponentName mbCN = new ComponentName(getPackageName(),MediaButtonIntentReceiver.class.getName());
mAudioManager.registerMediaButtonEventReceiver(mbCN);
...
//mAudioManager.unregisterMediaButtonEventReceiver(mbCN);
...

注意:大多数音乐播放器应用也使用MediaButton,当它们注册MediaButton接收器时,您的应用将失去AudioManager的焦点,所以你也许应该使用 AudioFocusChangeListener 来监听焦点变化并重新注册。

如果您还想在后台捕获其他键。据我所知,root 是一个很好的解决方案。您可以使用 getevent 命令来捕获输入设备的所有日志流。然后触发所需 key 的日志。

关于android - 屏幕关闭时的 AccessibilityService OnKeyEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27630852/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com