2013-06-08 2 views
0

젤리 빈 (Android 버전 4.1.1)이 포함 된 Android 휴대 전화에서 접근성 이벤트를 수신하려고합니다.Android Accessibility onAccessibilityEvent가 젤리 콩에서 수신되지 않았습니다.

나는 (특히 JB 및 사전 JB 사이의 호환성에 대한)이 문제를 해결하는 몇 가지 질문을 본 적이 :

Android accessibility service detect notification

AccessibilityService is started but does not receive AccessibilityEvents on JellyBean

Android accessibility service

Android accessibility service backwards compatibility and jelly bean

을 이 모든 질문에 따르면 (sp 나는 이전 버전과의 호환성을 보장하지 않으려면 ecially 마지막은) 내가해야 할 일은 내 매니페스트 파일에 라인을

android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" 

를 추가하고 XML 설정 파일을 포함하는 것입니다.

알림을 알림 창에 게시 할 때 onAccessibilityEvent 알림을받을 수 없습니다. 여기 여기 내 코드

public class NotificationService extends AccessibilityService { 

private static final Logger logger = LoggerFactory.getLogger ("NotificationService"); 

@Override 
public void onCreate() 
{ 
    super.onCreate(); 
    logger.trace ("onCreate"); 
} 

@Override 
public void onDestroy() 
{ 
    super.onDestroy(); 
    logger.trace ("onDestroy"); 
} 

@Override 
protected void onServiceConnected() { 
    logger.trace("onServiceConnected"); 
    AccessibilityServiceInfo info = new AccessibilityServiceInfo(); 
    info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED; 
     info.feedbackType = AccessibilityServiceInfo.FEEDBACK_ALL_MASK; 
    info.notificationTimeout = 100; 
    setServiceInfo(info); 
} 

@Override 
public void onInterrupt() { 
    // TODO Auto-generated method stub 
} 

@Override 
public void onAccessibilityEvent(AccessibilityEvent event) { 
    logger.trace("onAccessibilityEvent"); 


    if (event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) { 
     logger.info("notification: " + event.getText()); 
    } 

} 

} 

입니다 내가 매니페스트 파일 여기

<service android:name=".NotificationService" 
     android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> 
    <intent-filter> 
     <action android:name="android.accessibilityservice.AccessibilityService" /> 
    </intent-filter> 
    <meta-data android:name="android.accessibilityservice" 
       android:resource="@xml/accessibilityservice" /> 
</service> 

에서 서비스를 선언하는 방법 것은 내가 할 수있는 내 응용 프로그램을 실행하면 내 accessibilityservice.xml

<?xml version="1.0" encoding="utf-8"?> 
<accessibility-service xmlns:android="http://Schemas.android.com/apk/res/android" 
    android:accessibilityEventTypes="typeNotificationStateChanged" 
    android:accessibilityFeedbackType="feedbackAllMask" 
    android:notificationTimeout="100" /> 

입니다 서비스가 생성되어 연결되는지 확인하지만 AccessibilityEvents는 수신되지 않습니다.

감사합니다.

답변

1

이것은 Android 4.1.1에서는 작동했지만 Android 4.2 (Jelly Bean)에서는 실패했습니다. 또한 SDK 변경을 고려하여 value-v17 폴더를 추가해야합니다. 이 솔루션을 확인하십시오. https://stackoverflow.com/a/12042493/1179638