gpt4 book ai didi

android - onKeyEvent 和无障碍服务

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:50:25 25 4
gpt4 key购买 nike

我的用户将使用启用 TalkBack 或其他一些可访问的服务。我想在我们的应用程序中捕获 onKeyEvent 事件,但该事件被分派(dispatch)到已启用的辅助功能服务。我创建了以下基本辅助功能服务。

public class Accessibility_Service extends AccessibilityService {

private String TAG = Accessibility_Service.class.getSimpleName();

@Override
public boolean onKeyEvent(KeyEvent event) {
int action = event.getAction();
int keyCode = event.getKeyCode();
if (action == KeyEvent.ACTION_UP) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
Log.d("Hello", "KeyUp");
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
Log.d("Hello", "KeyDown");
}
return true;
} else {
return super.onKeyEvent(event);
}
}

/**
* Passes information to AccessibilityServiceInfo.
*/
@Override
public void onServiceConnected() {
Log.v(TAG, "on Service Connected");
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.packageNames = new String[] { "com.camacc" };
info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
info.notificationTimeout = 100;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
setServiceInfo(info);

}// end onServiceConnected

/**
* Called on an interrupt.
*/
@Override
public void onInterrupt() {
Log.v(TAG, "***** onInterrupt");

}// end onInterrupt

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
// TODO Auto-generated method stub

}
}// end Accessibility_Service class

当我检查 logcat 时,我没有收到任何响应。是否可以在 TalkBack 或其他此类无障碍服务之前使用音量调低和调高事件?

谢谢。

编辑:

添加了以下标志仍然没有运气:

info.flags = AccessibilityServiceInfo.FLAG_REQUEST_FILTER_KEY_EVENTS;

最佳答案

尝试在 xml 资源中像这样配置辅助功能服务,如果您需要更多信息,请查看:https://developer.android.com/guide/topics/ui/accessibility/services.html

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeContextClicked|typeViewClicked"
android:packageNames="com.example.andres.eventcapture"
android:accessibilityFlags="flagRequestFilterKeyEvents"
android:accessibilityFeedbackType="feedbackAllMask"
android:notificationTimeout="50"
android:canRetrieveWindowContent="true"
android:settingsActivity=""
android:canRequestFilterKeyEvents="true"
/>

效果很好!

关于android - onKeyEvent 和无障碍服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25661861/

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