정보공간_1

[4기 강남 이상훈] Mobile Accessibility[모바일 애플리케이션 접근성 지침]-Part 3 본문

IT 놀이터/Elite Member Tech & Talk

[4기 강남 이상훈] Mobile Accessibility[모바일 애플리케이션 접근성 지침]-Part 3

알 수 없는 사용자 2013. 10. 25. 03:56

 이전 포스팅에서 행정안전부와 한국정보화진흥원에서 발표한 "모바일 애플리케이션 접근성 지침-행정안전부고시 제2011-38호"와 "모바일 애플리케이션 [안드로이드] 접근성 점검 메뉴얼 [v1.0]" 을 참고하여 모바일 애플리케이션 준수사항 7가지를 소개해 드렸습니다. 이번 포스팅은 모바일 애플리케이션 권고사항 리스트 8가지 중 평가 제외 항목 3가지를 적용 방법과 함께 설명해 드리도록 하겠습니다. 

 

우선 그럼 권고 사항이 무엇인지 간략하게 알아보고 가도록 하겠습니다. 

권고 사항이란?

 모바일 애플리케이션의 접근성 향상을 위하여 무리한 부담이 되지 않는 한 준수할 것을 권장하는 사항을 말합니다. 


 그럼 본격적으로 권고사항 리스트 중 평가제외 항복 3가지에 대하여 알아보고 적용 방법을 알려드리도록 하겠습니다.  비록 평가 제외 항목이나, 되도록이면 준수하여 사용해야 하는 사항이니 알아 놓으시면 좋을 것 같습니다.


모바일 애플리케이션 권고사항 평가 제외 항목 3가지


1. 기본 사용자 인터페이스 컴포넌트

2. 범용 폰트 이용

3. 장애인 등 사용자 평가


  Application은 운영체제 및 플랫폼에서 제공하는 Native UI를 사용하는 것이 가장 바람직 합니다. 그 이유는 개발자가 직적 customizing 한 UI를 사용할 경우, talkback 등 다양한 접근성 기능을 잃을 가능성이 많이 존재하기 때문입니다. 하지만 개발자 및 디자이너, 기획자의 입장에서는 Native UI만을 사용하기에는 한계가 있기 마련입니다. 따라서 최대한 Native UI를 사용하도록 하되, 불가피 할 경우 제가 소개해드릴 아래의 방법으로 접근성을 준수하 실 수 있습니다. 

우선 Native UI란 Android에서 제공하는 Button, TextView, EditText , ListView , CheckBox, RadioButton, Gallery, Spinner, AutoCompleteTextView, ImageWsitcher, TextSwitcher 등의 widget을 의미하며, android developer 사이트에서 widget의 종류를 확인 하실 수 있습니다. 


* Android UI component : http://developer.android.com/auide/topics/ui/index.html\


 그렇다면 본격적으로 직접 customizing한 컴포넌트에 대한 접근성 적용 방법을 알아 보도록 하겠습니다. 

접근성 지원을 위한 4대 주요 작업

1) 사용자 선택(클릭 등)에 대한 처리

2) 접근성 API 구현

3) 접근성 이벤트 전달

4) 접근성 이벤트 처리

우선 1)에 해당하는 사용자 선택(클릭)에 대한 처리는 보통 Virtual D-pad에서 선택버튼으로 사용 되는 '중앙(center)'에 대한 입력 처리를 지칭 합니다. 

 모든 기본 뷰에서는 KEYCODE_DPAD_CENTER 키 이벤트가 적용되고 있으나, 사용자 변형 뷰에서는 KEYCODE_DPAD_CENTER 이벤트에 대한 처리를 해 주셔야 합니다. onKeyUp method를 Override 하여 따로 처리하여 주시면 됩니다.  관련 method는 아래와 같습니다.

booleanonKeyUp(int keyCode, KeyEvent event)
Called when a key was released and not handled by any of the views inside of the activity.


    @Override
    public boolean onKeyUp (int keyCode , KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT ) {

mCurrentValue--;

sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED); 

return true;

        }

// .. 중략
 
}



 접근성 관련 이벤트들은 사용자 입력에 대한 메세지이고, 이 메세지는 접근성 서비스에 의해 처리 됩니다. 따라서 2)번에 해당하는 메세지를 처리할 API를 적용시켜 주어야 하는데 방법은 아래와 같습니다. (ICS 기준)

voidonPopulateAccessibilityEvent(AccessibilityEvent event)
Called from dispatchPopulateAccessibilityEvent(AccessibilityEvent) giving a chance to this 
View to populate the accessibility event with its text content.

위의 method를 활용하면 해당 사용자 customizing 인터페이스에 대한 텍스트 설명을 지정 할 수 있습니다. 

    @Override
   
public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) {
       
super.onPopulateAccessibilityEvent(host, event);
       
// We call the super implementation to populate its text for the
       
// event. Then we add our text not present in a super class.
       
// Very often you only need to add the text for the custom view.
       
CharSequence text = getText();
       
if (!TextUtils.isEmpty(text)) {
           
event.getText().add(text);
       
}
   
}

 customizing 인터페이스에 대한 이벤트 초기화는

voidonInitializeAccessibilityEvent(AccessibilityEvent event)
Initializes an AccessibilityEvent with information about this View which is the event source.
voidonInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info)
Initializes an AccessibilityNodeInfo with information about this view.

method를 활용하여 할 수 있으며 사용법은 아래와 같습니다. 

    @Override
   
public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) {
       
super.onInitializeAccessibilityEvent(host, event);
       
// We call the super implementation to let super classes
       
// set appropriate event properties. Then we add the new property
       
// (checked) which is not supported by a super class.
       
event.setChecked(isChecked());
   
}
   
@Override
   
public void onInitializeAccessibilityNodeInfo(View host,
           
AccessibilityNodeInfoCompat info) {
       
super.onInitializeAccessibilityNodeInfo(host, info);
       
// We call the super implementation to let super classes set
       
// appropriate info properties. Then we add our properties
       
// (checkable and checked) which are not supported by a super class.
        info
.setCheckable(true);
        info
.setChecked(isChecked());
       
// Quite often you only need to add the text for the custom view.
       
CharSequence text = getText();
       
if (!TextUtils.isEmpty(text)) {
            info
.setText(text);
       
}
   
}


 child View에 대한 이벤트를 처리할 경우에는 아래의 Method를 활용 하시면 됩니다. 

booleanonRequestSendAccessibilityEvent(View child, AccessibilityEvent event)
Called when a child has requested sending an AccessibilityEvent and 
gives an opportunity to its parent to augment the event.
 


 커스텀한 위젯에서 3)접근성 이벤트 전달은 아래와 같이 이벤트를 전달 할 수 있는데 ICS버전에서 전달 할 수 있는 이벤트는 3개가 존재합니다. 

int

TYPE_VIEW_SCROLLEDRepresents the event of scrolling a view.

int

TYPE_VIEW_HOVER_ENTERRepresents the event of a hover enter over a View.

int

TYPE_VIEW_HOVER_EXITRepresents the event of a hover exit over a View.


 마지막으로 커스텀한 위젯에 대한 접근성 지원 방법으로 4)접근성 이벤트 처리만 남았는데요, 이 이벤트가 필요한 이유는 접근성 이벤트가 발생되면 이를 음성으로 출력하기 위한 텍스트 처리가 필요하기 때문입니다. 하지만 위에서 구현한 onPopulateAccessibilityEvent 를 통하여 처리가 됨으로, 이 부분은 앞에서 메세지 처리에 대한 method를 구현해 주셨다면 신경쓰지 않으셔도 될 부분입니다. 



2. 범용 폰트 이용

 애플리케이션에 사용되는 폰트는 폰트의 크기 조절, 확대 기능을 제공하거나 운영체제에서 제공하는 관련 기능을 활용할 수 있는 방법을 제공하는 것이 바람직 합니다. 일반적으로 애플리케이션을 개발 할 때, 운영체제나 플랫폼에서 제공하는 범용 폰트를 사용하여 개발하는 경우가 많으나, 조금 더 예쁜 애플리케이션을 만들고 싶거나, 다른 폰트를 사용하고 싶을 때는 아래와 같은 기능들을 제공하여 개발 하는 것이 좋습니다. 

1) 폰트의 크기 조절, 확대 기능 제공
2) 운영체제에서 제공하는 폰트 관련 기능을 활용할 수 있는 방법 제공
3) 텍스트 표현 시 이미지를 사용하여 텍스트를 표현하는 것 보다, 텍스트를 활용하여 표현하는 것이 바람직 하다. 


 위와 같은 사항을 준수 할 수 없을 경우에는 범용 폰트를 활용 하는 것이 바람직 합니다. 범용 폰트는 제조사 플랫폼 별로 다양한데 갤럭시 S4를 기준으로 하면 아래와 같은 폰트를 활용 하는 것이 좋습니다. 

디바이스

지원 폰트

Galaxy_S4

기본 서체 , 애플 민트 , 초코 쿠키, Samsung Sans , 팅커벨



3. 장애인 등 사용자 평가 

 마지막으로 오늘 소개해드릴 권고사항인 "장애인 등 사용자 평가"입니다. 이는 말 그대로 애플리케이션 개발 시 다양한 모바일 기기에서의 이용 가능여부를 점검해야 하며, 장애인 테스트를 수행하는 것이 바람직 함을 의미 합니다. 특히 장애인 사용자 평가를 수행하는 것이 필요로 합니다. 접근성 개념이 주로 비 장애인들보단 장애인들에게 더욱 유용함을 제공하여 주기 때문입니다. 




 오늘까지 해서 모바일 애플리케이션 접근성 지침 중 준수사항 7가지와, 권고사항 3개지를 알아 보았습니다. 다음 포스팅을 마지막으로 모바일 애플리케이션 관련 포스팅을 모두 마치도록 할 예정입니다. 오늘도 긴 글 읽어 주셔서 감사합니다. 


참고자료 : 

한국정보화진흥원 - 모바일 애플리케이션[안드로이드] 접근성 점검 메뉴얼[v1.0]

모바일 애플리케이션 접근성 지침 - 행정안전부고시 제 2011-38호