2017-05-05 3 views
1

Android AccessibilityService을 조사 중이며 가능한 모든 유형의 이벤트, 즉 제스처 및 주요 이벤트를보고 싶었습니다.Android AccessibilityService를 구성하는 방법

나는 protected boolean onGesture(int gestureId) {} 또는 protected boolean onKeyEvent(KeyEvent event) {} 전화를 모두 public void onAccessibilityEvent(final AccessibilityEvent accessibilityEvent) {}

그러나 내 서비스 느 베르를 수신받을 수 있어요.

나는 서비스가 OK 연결을 참조하십시오 접근성 설정에서 내 접근성 서비스를 활성화

나는 서비스가 내가 구성하지 않은 무엇 public void onAccessibilityEvent(final AccessibilityEvent accessibilityEvent) {} 방법

에서 로그 아웃 볼 수 있습니까? 또는 잘못 구성 되었습니까?

내 매니페스트 파일이

<service 
    android:name=".MyAccessibilityService" 
    android:label="My Accessibility" 
    android:enabled="true" 
    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> 

모양은 XML accessibilityservice 내용은 다음과 같습니다 : -

<?xml version="1.0" encoding="utf-8"?> 
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" 
    android:accessibilityEventTypes="typeAllMask" 
    android:accessibilityFeedbackType="feedbackSpoken" 
    android:accessibilityFlags="flagDefault" 
    android:canRequestEnhancedWebAccessibility="true" 
    android:canRequestFilterKeyEvents="true" 
    android:canRequestTouchExplorationMode="true" 
    android:canRetrieveWindowContent="true" 
    android:notificationTimeout="1000" 
    android:packageNames="com.research.my.accessibility" /> 

AccessibilityServiceInfo은 다음과 같다 서비스 : -

@Override 
protected void onServiceConnected() { 
    super.onServiceConnected(); 
    Log.d("TAG", "onServiceConnected"); 

    final AccessibilityServiceInfo accessibilityServiceInfo = new AccessibilityServiceInfo(); 
    accessibilityServiceInfo.eventTypes = AccessibilityEvent.TYPES_ALL_MASK; 
    accessibilityServiceInfo.feedbackType = AccessibilityServiceInfo.FEEDBACK_ALL_MASK; 
    accessibilityServiceInfo.packageNames = new String[] {"com.research.my.accessibility"}; 
    accessibilityServiceInfo.notificationTimeout = 1000; 
    setServiceInfo(accessibilityServiceInfo); 
} 

답변

1

는 당신이 필요로 할 수 있음 플래그를 변경하려면

<?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" 
/> 

이와 비슷한 내용입니다.

또는 FLAG_REQUEST_TOUCH_EXPLORATION_MODE

을 사용해 볼 수도 있습니다.