마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Android accessibility에서 Focus시키는 방법이 있을까요?

+1 추천

 안녕하세요. 안드로이드와 안드로이드 accessibility를 공부한지 2주된 백수입니다..

 현재 TalkBack과 같은 서비스 앱을 카카오톡 환경에서 작동하게 구현할려고 합니다... 만. TalkBack코드는 안드로이드 초보인 제가 보기에는 힘드네요..

 기본적은 Accessiblity service프로그램은 포커스 기능이(뷰를 클릭하면 선택이 되어지는) 기본적으로 제공되지는 않더군요. 

 아마 어디에서 옵션값을 설정해 줘야 하는것 같은데.. 잘 보이지는 않네요..

 혹시, Accessiblity service에서 포커스 기능을 TalkBack처럼 사용하는 방법이나 코드가 있을까요? 

 그리고 Accessiblity Event에서 "TYPE_VIEW_CLICKED"같은 이벤트가 발생하질 않네요.. 분명 TYPES_ALL_MASK을 시켜줬는데도 말이죠.. 뭐가 문제일까요?!

 가르켜 주시면 감사하겠습니다 ( ; _ ; )

 

 

//Configure these here for compatibility with API 13 and below.
AccessibilityServiceInfo config = new AccessibilityServiceInfo();
config.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
// config.eventTypes += AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
config.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;

config.feedbackType |= AccessibilityServiceInfo.FEEDBACK_SPOKEN;
config.feedbackType |= AccessibilityServiceInfo.FEEDBACK_AUDIBLE;
config.feedbackType |= AccessibilityServiceInfo.FEEDBACK_HAPTIC;

config.flags |= AccessibilityServiceInfo.DEFAULT;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
    config.flags |= AccessibilityServiceInfo.FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY;
    config.flags |= AccessibilityServiceInfo.FLAG_REPORT_VIEW_IDS;
    config.flags |= AccessibilityServiceInfo.FLAG_REQUEST_FILTER_KEY_EVENTS;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    config.flags |= AccessibilityServiceInfo.FLAG_RETRIEVE_INTERACTIVE_WINDOWS;
}
config.notificationTimeout = 0;

config.flags |= AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE;

if (Build.VERSION.SDK_INT >= 16)
    //Just in case this helps
    config.flags = AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS;
setServiceInfo(config);
방랑도사 (190 포인트) 님이 2016년 8월 10일 질문

1개의 답변

+1 추천
 
채택된 답변
포커스 시키는것은 onAccessibilityEvent 함수에서 focus 관련 함수가 있네요.

한번 확인해보세요.

AccessibilityEvent.getSource().findFocus(int)

AccessibilityEvent.getSource().setFocused(boolean)

AccessibilityEvent.getSource().focusSearch(int)

 

그리고 매니페스트에서 아마 접근성 서비스 정의하면서 추가한 meta-data 리소스파일이 있으실겁니다.

거기에서 accessibilityEventTypes에서 파이프로 이벤트 마스크 추가해주셔야 합니다.
Development Guy (70,570 포인트) 님이 2016년 8월 11일 답변
방랑도사님이 2016년 8월 11일 채택됨
...