3

我的代码适用于 4 以上的 Android 版本,但在 Android 2.2 或 2.3 中我无法检测到任何事件。Android 日志显示该服务正在运行,但每当我触发一个事件时,它都无法被辅助功能服务识别。在以下代码中:

public void onAccessibilityEvent(AccessibilityEvent event)
{       
    Log.i("abc","------service running---------");

    final int eventType = event.getEventType();

    switch(eventType)
    {
        case AccessibilityEvent.TYPE_VIEW_CLICKED :
                //do something
                break;
        }
}

我也得不到Log "------service running---------"。我错过了什么。是否需要进行任何更改才能在不同版本的 android 上运行相同的代码。

4

1 回答 1

0

您需要通过在 onServiceConnected() 中设置服务的 AccessibilityServiceInfo 来手动指定服务的事件和反馈类型。

以下是 TalkBack 的示例:

@Override
public void onServiceConnected() {
    AccessibilityServiceInfo info = new AccessibilityServiceInfo();
    info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
    info.notificationTimeout = 0;
    info.flags = AccessibilityServiceInfo.DEFAULT;
    setServiceInfo(info);
}
于 2014-01-07T05:23:58.153 回答