Slide 1

Slide 1 text

锓锓遤⹛酤縨涸 "DDFTTJCJMJUZ Young & Johnny

Slide 2

Slide 2 text

泹狎䟴 • 揘㿁ဩՈ眢緹चᰂ䨝
 緹አ襎脲讨ਁ硽䋊 ፽疩 • NCC 翕殷篷ᵑ繸咳疻甛㹓䨝 甛㹓 • 篷ᵑ繸翕殷䲒介Ո㹓璢懺 拻䒍

Slide 3

Slide 3 text

c໡൞ᇏ๯ാૼ֥ℶᅰᆀ c໡൞ೂޅ൐Ⴈ໡֥൭Ὠ c໡෮მ֥֞↜ⅳ նἙ

Slide 4

Slide 4 text

https://fb.com/j796160836 Johnny Sung Mobile devices Developer https://plus.google.com/+JohnnySung http://about.me/j796160836

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Ӯ碝皞砮襎岄

Slide 7

Slide 7 text

uPresenter iOS Client https://itunes.apple.com/app/id978059571 https://itunes.apple.com/app/id977146419 Mac Server https://play.google.com/store/apps/details?id=com.johnnyworks.presenter Android Client

Slide 8

Slide 8 text

uPresenter

Slide 9

Slide 9 text

uPresenter

Slide 10

Slide 10 text

uPresenter for Wear Ready to present When presenting

Slide 11

Slide 11 text

for Apple Watch uPresenter Ready to present When presenting

Slide 12

Slide 12 text

uPresenter iOS Client https://itunes.apple.com/app/id978059571 https://itunes.apple.com/app/id977146419 Mac Server https://play.google.com/store/apps/details?id=com.johnnyworks.presenter Android Client

Slide 13

Slide 13 text

նἙ c໡൞۽ӱ℩ cᄝῘứഈေᇿၩ൉喁Ĥ cỚᧄ↥ᅰḧỆᆜ֥ཬ௑҄

Slide 14

Slide 14 text

Voice Over iOS

Slide 15

Slide 15 text

ᄸ喁Ῐ c၂ϮἉᇹ൐Ⴈ7PJDF0WFS

Slide 16

Slide 16 text

ॹ෎Ῐ c၂ϮἉᇹ൐ႨἉᇹ൐Ⴈॹ෎ᾗ

Slide 17

Slide 17 text

ॹ෎Ῐ c)PNFᾗ’ề೘༯đῘ⬏⇢Ẫ

Slide 18

Slide 18 text

7PJDF0WFS൭Ⅎࢺℚ

Slide 19

Slide 19 text

ฐ෬ ề⇢ cề၂༯ ∻5BMLCBDLཌྷ๝ ଉአ瞲碍物

Slide 20

Slide 20 text

⇢≢ࢊề cቐႷ߁ọ ∻5BMLCBDLཌྷ๝ ଉአ瞲碍物

Slide 21

Slide 21 text

ềὧ (Click) cềؽ༯ ∻5BMLCBDLཌྷ๝ ଉአ瞲碍物

Slide 22

Slide 22 text

c⅄ᆷềؽ༯ cࢤⅹ㍂ỗểὐ c٢ၻ  cஅᅶ .BHJD5BQ ଉአ瞲碍物

Slide 23

Slide 23 text

঵ồ c⅄ᆷཟഈ߁ c ạⅽ঵ồ֞᾵ඏ ଉአ瞲碍物

Slide 24

Slide 24 text

঵ồ c⅄ᆷཟ༯߁၂༯ cạଢభ໊ᇂ঵ồ
 ֞᾵ඏ ଉአ瞲碍物

Slide 25

Slide 25 text

ي∉ קਈ c೘ᆷཟഈཟ༯߁ c ཟഈཟ༯⚂၂∉
 ↌∉⏟´ℭ൐Ⴈ 
 ଉአ瞲碍物

Slide 26

Slide 26 text

ي∉ קਈ c೘ᆷཟቐཟႷ߁ c ཟభཟᗥ⚂၂∉
 ም૫ي∉ℭ൐Ⴈ 
 ଉአ瞲碍物

Slide 27

Slide 27 text

⊨⁛ c൭ᆷؽᆷ࿈⊨ ଉአ瞲碍物

Slide 28

Slide 28 text

⊨⁛ cọቔ cṌⅳ cሳჭ cሳẞ c∽ၻ෎؇ cಸఖ

Slide 29

Slide 29 text

ọቔ c⦄Ԣ c⬏Ⴈ⇊ଢč≁℟ọቔĎ cṌൕ㬪ໃồ cၛఋṌṌൕ c۷؟ čޓഒ"QQႵᆦჱĎ

Slide 30

Slide 30 text

Ệᆜ⅂ᆴ cഈ༯߁ọ ଉአ瞲碍物

Slide 31

Slide 31 text

ْ߭ c⅄ᆷቐႷῲ߭ℍọ
 ޓཞ಻ו֥൭Ⅎ ଉአ瞲碍物 čၹ㬪ޓഒ"QQႵᆦჱĎ

Slide 32

Slide 32 text

Ἤṅ∦ଞ c೘ᆷề೘༯ čᇿၩ҂ေ↪Ẕ֞Ď ଉአ瞲碍物

Slide 33

Slide 33 text

%FNP

Slide 34

Slide 34 text

-*/& cⅶⅾ≁´㢻Ⴕࢊề ? ? ?

Slide 35

Slide 35 text

Ḩ₽ളࠃ๙ cο₦⫸ⅾோ଀Ẁ 1 2 MBVODI@TFBSDI ο₦ MBVODI@OFBSCZ ο₦

Slide 36

Slide 36 text

ଲ೶ದℸྛọᇆ߰↌ cο₦⫸ⅾோ଀Ẁ cؽἠࢊề ⅾோο₦ ẛ໓ሳ JDPO@DBMM ο₦ ֞ک৘₴ 1 2

Slide 37

Slide 37 text

ٚьᅳ cؽἠࢊề ⅾோο₦ ẛ໓ሳ c ο₦↥مề⇢ OPPEMF ၘṉπ ο₦ ⚏ൊ ၘṉπ ο₦ 1 2

Slide 38

Slide 38 text

ൊᄝٚь cࢊềⅆ྽↜ⅳ cᆺ὜⫸wο₦x ⅄֑֑ṓ ☪∹֑ṓ
 ෻К൧↋Ὅ⃯ᇏὍਫ਼ؽ؍ཛྷ ଲὨṳ၀൧ ଲὨṳ↥଀ᄪҔ֑ṓ

Slide 39

Slide 39 text

ൊᄝٚь ο₦ ο₦ ο₦ ο₦ c๙๙ᆺ⫸wο₦x

Slide 40

Slide 40 text

↜ⅳ

Slide 41

Slide 41 text

ೲ衔 ೲ衔 ೲ衔...?

Slide 42

Slide 42 text

"DDFTTJCJMJUZGPSJ04 c℟קูս໓ሳ NSString * accessibilityLabel; NSString * accessibilityHint; UIAccessibilityTraits accessibilityTraits;

Slide 43

Slide 43 text

঵ồ֥ࡏἧGPSJ04 ໡֥ቋḨđο₦đềؽ༯ῲյῘ accessibilityLabel accessibilityHint accessibilityTraits

Slide 44

Slide 44 text

℟קูս໓ሳ • accessibilityLabel • accessibilityHint • accessibilityTraits

Slide 45

Slide 45 text

cࡌ℟4QFDေ୆ቓ၂ἠ≾∄֥ο₦ ο₦

Slide 46

Slide 46 text

୆ॖି὜≾∄ቓ ॢϢο₦ ⅾோ

Slide 47

Slide 47 text

ᄝ9DPEF֥∄ሰ

Slide 48

Slide 48 text

⫸ఏῲࣼṉ≾∄ “ ” ο₦ “ ” accessibilityLabel accessibilityHint accessibilityTraits

Slide 49

Slide 49 text

ⅾோ֥ο₦ ୆ॖି὜≾∄ቓ

Slide 50

Slide 50 text

ᄝ9DPEF֥∄ሰ

Slide 51

Slide 51 text

⫸ఏῲࣼṉ≾∄ “btn.png”đο₦

Slide 52

Slide 52 text

୆ὕႵॖି὜≾∄ቓ ⅾோ֥ο₦ ໓ሳ

Slide 53

Slide 53 text

ᄝ9DPEF֥∄ሰ

Slide 54

Slide 54 text

ᇀᧄ≾ἠખ

Slide 55

Slide 55 text

⫸ఏῲࣼṉ≾∄ “btn.png”đο₦ ໡֥ቋḨ

Slide 56

Slide 56 text

cẛ໓ሳ cᆺႵМࣟⅾோο₦ cⅾோഈڭἒۋ∣⃯ ο₦⚧ቔٚൔ “btn.png”đο₦ ο₦

Slide 57

Slide 57 text

cࠎЧჰ≣ğạቐطႷđạഈ֞༯ cሱịⅆ྽ ࢊềⅆ྽ self.view.accessibilityElements = @[view01, view02];

Slide 58

Slide 58 text

⊁Ṧ7PJDF0WFS⬏Ⴈ⊯Ⅲ c䩏⤳๙ᆩ
 UIAccessibilityVoiceOverStatusChanged c஑ỗ
 UIAccessibilityIsVoiceOverRunning()

Slide 59

Slide 59 text

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(voiceOverStatusChanged:) name:UIAccessibilityVoiceOverStatusChanged object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIAccessibilityVoiceOverStatusChanged object:nil]; 䩏⤳/PUJGJDBUJPOT ၍Ԣ/PUJGJDBUJPOT ⊁Ṧ7PJDF0WFS⬏Ⴈ⊯Ⅲ

Slide 60

Slide 60 text

-(void)voiceOverStatusChanged:(NSNotification *)n { if (UIAccessibilityIsVoiceOverRunning()) { // Voice over is running } else { // Voice over is not running } } ஑ỗ7PJDF0WFS⊯Ⅲ ⊁Ṧ7PJDF0WFS⬏Ⴈ⊯Ⅲ

Slide 61

Slide 61 text

c၍ọࢊề
 UIAccessibilityLayoutChangedNotification c὎૫۷ྍ ὜Ⴕọቔၻི 
 UIAccessibilityScreenChangedNotification ࢊề๋၍ http://www.deque.com/blog/dynamic-notifications/

Slide 62

Slide 62 text

ࢊề๋၍ UIAccessibilityPostNotification( UIAccessibilityLayoutChangedNotification, view02); ၍ọࢊề֞ଖἠჭࡱഈ ὎૫۷ྍ ၍ọࢊềֻ֞၂ἠჭࡱഈ UIAccessibilityPostNotification( UIAccessibilityScreenChangedNotification, view01); UIAccessibilityPostNotification(
 UIAccessibilityScreenChangedNotification, nil); ὎૫۷ྍđ❣၍ọࢊề

Slide 63

Slide 63 text

ิൕ⇫༏ UIAccessibilityPostNotification( UIAccessibilityAnnouncementNotification, @"hello");

Slide 64

Slide 64 text

-(BOOL) accessibilityPerformMagicTap { // Do something } cℯቔ .BHJD5BQ ⅄ᆷềؽ༯

Slide 65

Slide 65 text

ק∕⊨⁛ọቔ UIAccessibilityCustomAction *a1 = [[UIAccessibilityCustomAction alloc] initWithName:@"Action 1" target:self selector:@selector(action01:)]; UIAccessibilityCustomAction *a2 = [[UIAccessibilityCustomAction alloc] initWithName:@"Action 2" target:self selector:@selector(action02:)]; self.myButton.accessibilityCustomActions = @[a1, a2];

Slide 66

Slide 66 text

ק∕⊨⁛ọቔ - (BOOL) action01:(UIAccessibilityCustomAction *)action { // Do something return YES; } - (BOOL) action02:(UIAccessibilityCustomAction *)action { // Do something return YES; }

Slide 67

Slide 67 text

ῘứԢấ c"DDFTTJCJMJUZ*OTQFDUPS
 J044JNVMBUPS cሱ࠭ທुु

Slide 68

Slide 68 text

TalkBack Android

Slide 69

Slide 69 text

ν⊬(PPHMFᇿၻ℻ೆم
 IUUQTQMBZHPPHMFDPNTUPSFBQQTEFUBJMT JEDPNHPPHMFBOESPJEBQQTJOQVUNFUIPE[IVZJO భᇂቔ∊ ν⊬∽ὸ ჰ⇫Ỵ∽ၻ 
 IUUQTQMBZHPPHMFDPNTUPSFBQQTEFUBJMT JEDPNJGMZUFLWGMZOPUF

Slide 70

Slide 70 text

℟ק554ႄౣ c℟ק↥ᅰḧ℟ק໓ሳ⊨∽ၻ℻ԛ

Slide 71

Slide 71 text

≁℟ᾗ₲ c℟ק∽࿽∻℻ೆ℟קᾗ₲∻℻ೆم

Slide 72

Slide 72 text

≁℟ᾗ₲ cṉ۷ᾗ₲đ⇢≢ᇏ໓ᇿၻ

Slide 73

Slide 73 text

Ῐ⬏5BML#BDL c℟ק↥ᅰḧ℟ק5BML#BDL

Slide 74

Slide 74 text

5BMLCBDL൭Ⅎࢺℚ

Slide 75

Slide 75 text

ฐ෬ ề⇢ cề၂༯ ∻7PJDF0WFSཌྷ๝ ଉአ瞲碍物

Slide 76

Slide 76 text

⇢≢ࢊề cቐႷ߁ọ ∻7PJDF0WFSཌྷ๝ ଉአ瞲碍物

Slide 77

Slide 77 text

ềὧ (Click) cềؽ༯ ∻7PJDF0WFSཌྷ๝ ଉአ瞲碍物

Slide 78

Slide 78 text

⚂ọ ሱႮ c⅄ᆷቐႷ߁ọ ὜Ⴕၻᾲ֥℥⇉ ଉአ瞲碍物

Slide 79

Slide 79 text

⚂ọ ሱႮ c⅄ᆷഈ༯߁ọ ὜Ⴕၻᾲ֥℥⇉ ଉአ瞲碍物

Slide 80

Slide 80 text

⚂ọ קਈ c὎၂ἠژὂ
 ཟႷᄜສቐ߁ ଉአ瞲碍物 čၹ㬪҂ݺҠቔĎ Ꟛ㨥 穡勲 >

Slide 81

Slide 81 text

ӈႨ⇢Ẫ c὎၂ἠሳ
 ཟ༯Ⴗ߁ Ꟛ㨥 穡勲 L ଉአ瞲碍物

Slide 82

Slide 82 text

ӈႨ⇢Ẫ c≚๔߭∣ c5BMLCBDL℟ק c໓ሳ⊨∽ၻ℟ק

Slide 83

Slide 83 text

ӈႨ⇢Ẫ cạỉ؊Ῐ൓倛ồ c௓ԛഈ၂ओὐ cạ༯၂ἠ⇊ଢῘ൓倛ồ cॹ෎ẹ´

Slide 84

Slide 84 text

cཟႷཟ༯߁ ↾ൕ๙ᆩਙ Ꟛ㨥 穡勲 ଉአ瞲碍物

Slide 85

Slide 85 text

ః෰ӈႨᆷ਷ #BDLᾗ Ẫᆷཟ༯ቐ߁ )PNFᾗ Ẫᆷཟഈቐ߁ ቋ࣍∣Ⴈӱൔ Ẫᆷཟቐഈ߁ ଉአ瞲碍物

Slide 86

Slide 86 text

cềؽ༯đ
 ֻؽ༯οᇾ❣຀ှ Ệᆜ⅂ᆴ ଉአ瞲碍物 čၹ㬪҂ݺҠቔĎ

Slide 87

Slide 87 text

"OESPJEᗥྍᄹ cၻਈᾗॖ॥ᇅ߁㘑 c๝ℭοၻਈ∻ၻਈđ≚๔∽ၻ c㎆ọ൭Ὠđạ༯၂ἠ⇊ଢῘ൓倛ồ

Slide 88

Slide 88 text

%FNP

Slide 89

Slide 89 text

ٚьᅳ cؽἠࢊề ⅾோο₦ ẛ໓ሳ 0,ӑഅ 0,ӑഅο₦ 1 2

Slide 90

Slide 90 text

೘⊺ь૶Ḳ൭ 1 2

Slide 91

Slide 91 text

೘⊺ь૶Ḳ൭ ἐ⇢ഈ૫ὕ൞⇢༯૫Ĥ 1 2

Slide 92

Slide 92 text

:BIPPӑάഅӬ cο₦ࢊề↜ⅳ cο₦Ớб؇↜ⅳ cο₦նཬ↜ⅳ c∉૫ੀӱ↜ⅳ

Slide 93

Slide 93 text

:BIPPӑάഅӬ cࢊề↜ⅳ ⅾோ ຓॿ 㢻Ⴕ଀Ẁ֥ο₦ 5*(&3޷இDD 1 2

Slide 94

Slide 94 text

:BIPPӑάഅӬ cο₦նཬỚб؇↜ⅳ č٢նῄଆൔĎ ྍᄹഅ௖ο₦ %#%#%# Мࣟ ''' Ớбᆴ

Slide 95

Slide 95 text

:BIPPӑάഅӬ c∉૫ੀӱ↜ⅳ 螡䢔珶ߝ ᆙ粙毆薩 奾癱

Slide 96

Slide 96 text

:BIPPӑάഅӬ c∉૫ੀӱ↜ⅳ 螡䢔珶ߝ 奾癱 ᆙ粙毆薩 <ࡆೆᇀἨ໾ṻ>

Slide 97

Slide 97 text

c℟קูս໓ሳDPOUFOU%FTDSJQUJPO "DDFTTJCJMJUZGPS"OESPJE android:contentDescription="౯ጱ磧眢" myButton.setContentDescription("౯ጱ磧眢");

Slide 98

Slide 98 text

ಕ⊾ࢊề ℟קGPDVTBCMFDMJDLBCMF὜Фಕ⊾ android:focusable="true"
 android:clickable="true"

Slide 99

Slide 99 text

ಕ⊾ࢊề

Slide 100

Slide 100 text


 
 
 
 
 
 
 ಕ⊾ࢊề

Slide 101

Slide 101 text

TextView Recent TextView
 192.168.201.146 TextView 11000 ಕ⊾ࢊề RelativeLayout clickable ImageView @drawable/computer 3FDFOU

Slide 102

Slide 102 text

android:importantForAccessibility="auto" • auto - 羬翄ᛔᤈڣ䥁 (毆戔) • yes - ᥝ虏 Talkback ڣ捝 • no - ஺ኼᆿᗭ奲ᆌ讨牧֕䨝薹ຉৼزկ • noHideDescendants - 獊犋虏 Talkback ڣ捝 ޭ੻ಕ⊾ࢊề ಕ⊾ࢊề

Slide 103

Slide 103 text

cࠎЧჰ≣ğạቐطႷđạഈ֞༯ cሱịⅆ྽ ࢊềⅆ྽ android:nextFocusUp="@+id/view01"
 android:nextFocusDown="@+id/view02" android:accessibilityTraversalBefore="@+id/view1"
 android:accessibilityTraversalAfter="@+id/view2"

Slide 104

Slide 104 text

AccessibilityManager manager = (AccessibilityManager) getSystemService(Service.ACCESSIBILITY_SERVICE); 
 if(manager.isEnabled()) {
 // Talkback is running
 } else {
 // Talkback is not running
 } ⊁Ṧ5BMLCBDL൞ڎῘ⬏

Slide 105

Slide 105 text

ࢊề๋၍ view.requestFocus(); ေ౰ࢊề 
 


Slide 106

Slide 106 text

ิൕ⇫༏ view.announceForAccessibility("Hello"); API level 16

Slide 107

Slide 107 text

ῘứԢấ c↾ൕ∽ၻ℻ԛ c⅀⊯᾵ἧ⊁ấ

Slide 108

Slide 108 text

冓೤

Slide 109

Slide 109 text

冓೤ c໓ሳ∻М֥ࣟỚб؇ c8$"(""DPNQMJBODF c8$"("""DPNQMJBODF http://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast Web Content Accessibility Guidelines (WCAG) 2.0

Slide 110

Slide 110 text

冓೤ http://snook.ca/technical/colour_contrast/colour.html

Slide 111

Slide 111 text

ο₦նཬ cYQY (PPHMF cYQY "QQMF https://www.google.com/design/spec/usability/accessibility.html#accessibility-types https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/ LayoutandAppearance.html

Slide 112

Slide 112 text

߭Ἢ c⚇ࢳ↥ᅰḧҠቔ൭Ⅎ cⅾோο₦ေࡆഈูս໓ሳ c਽ၩࢊề֥ⅆ྽đ၍Ԣ঒ࠈ֥ิൕ℥ cᇿၩ冓೤Ớб؇aο₦նཬ cỚᧄ♶≗֥6*đႨο₦ϔ

Slide 113

Slide 113 text

No content

Slide 114

Slide 114 text

3FGFSFODFT • https://developer.apple.com/library/ios/documentation/UIKit/Reference/ UIAccessibility_Protocol/ • http://www.deque.com/blog/dynamic-notifications/ • https://eyes-free.googlecode.com/svn/trunk/documentation/ android_access/index.html • https://www.udemy.com/accessibility-features-on-android/ • http://blog.supertop.co/post/117642258462/custom-accessibility-options- in-unread • http://www.programcreek.com/java-api-examples/index.php? api=android.view.accessibility.AccessibilityManager