Ali mühendisleri görme engellilere "görmek" için ne gibi çalışmalar yaptı?

Aliimei'nin rehberi: Çin'de yaklaşık 13 milyon görme engelli insan var Ortalama olarak her 100 kişiden 1'i karanlıkta yaşıyor. Bugün, akıllı cihazların yardımıyla tüm yönleri kapsayan İnternet ile kör insanlar bağımsız fırsatlar elde ettiler: sosyalleşme, çevrimiçi alışveriş, haberlere göz atma, müzik dinleme ... İnternet onlara daha fazla şeye erişme ve daha ileri gitme imkanı veriyor. İnternet ürünlerinin erişilebilirliği, görme engelli bireylerin yaşam kalitesini doğrudan etkileyecektir. Bu nedenle, topluma daha iyi entegre olmalarına yardımcı olmak için bilgi engelsiz bir ortam oluşturmak özellikle önemli ve acildir.

Daha iyi bir bilgi erişilebilirliği deneyimi sağlamak için, Dingding iOS erişilebilirlik desteğini tamamladıktan sonra, Dingding Android, Haziran 2017 ortasında engelsiz yenileme çalışmalarına başladı. Ortak "Shenzhen Information Accessibility Research Association" ile iki aydan fazla süren ortak çabaların, sürekli iletişimin, testlerin ve iyileştirmenin ardından, DingTalk Android erişilebilirlik desteği iyi bir kullanılabilirliğe ulaştı.

DingTalk Android erişilebilirlik desteğinin proje sürecini birlikte inceleyelim.

Erişilebilirlik Desteğine Giriş

Görme bozukluğu olan kullanıcılar, mobil cihazın ekran içeriğini gerçekten göremezler, bu nedenle etkileşimi tamamlamak için ekran okuma yazılımı kullanmaları ve esas olarak işitmeye ihtiyaçları vardır. Şu anda, Android cihazlar çoğunlukla engelsiz yardımcı hizmet olarak Talkback kullanıyor.

Talkback, Android sisteminde yerleşik bir erişilebilirlik hizmetidir. Birden çok sürüm güncellemesinden sonra, şu anda daha iyi bir deneyime sahiptir. Görme engelli kullanıcıların o anda ekranda ne olduğunu, neye dokunduklarını ve neler yapabileceklerini bilmelerini sağlamak için temel olarak ses, titreşim ve diğer sesli geri bildirimleri kullanır.

Talkback açıldıktan sonra temel çalıştırma yöntemi:

1. Kaydırma: iki parmağınızla kaydırın.

2. Tıklama: Görünümü seçtikten sonra ekranda herhangi bir yere çift tıklayın.

3: Uzun basış: Görünümü seçtikten sonra çift tıklayın ve basılı tutun.

4. Sola ve sağa kaydırın: önceki öğe sonraki öğe

Aşağıda, engelsiz destek için yapılması gerekenleri açıklamak için engelsiz erişim için optimize edilmiş bir DingTalk örneği verilmiştir: Sadece varış yerini bilerek nasıl yapılacağını bilebilirim. Aşağıda bazı sohbet sahneleri verilmiştir.

Sesli okumayı gözlemleyebilmek için, yukarıdaki örnek Talkback'te geliştirici tarafından ayarlanan "Ses çıkışını göster" seçeneğini etkinleştirir.

Yapmamız gereken, Görünümü odaklamak ve ekran okuyucunun en uygun açıklamayı okumasına izin vermektir, böylece görme engelli kullanıcılar nerede olduklarını ve ne yapabileceklerini bilsinler.

Erişilebilir olay dağıtımı

Erişilebilirliği daha iyi desteklemek için Android erişilebilirlik çerçevesinin çalışma prensibinin anlaşılmasına yardımcı olmak için erişilebilirlik etkinliği dağıtım sürecini kaynak kodu düzeyinden analiz ediyoruz:

sendAccessibilityEvent (AccessibilityEvent.TYPE_VIEW_SELECTED); sendAccessibilityEvent (AccessibilityEvent.TYPE_VIEW_CLICKED);

View.java'da, yukarıdaki sendAccessibilityEvent'e benzer birçok yöntem çağrısı görebiliriz. İşte erişilebilir olayların dağılımını görmemiz için başlangıç noktası.

Son olarak, AccessibilityService'den miras alınan ekran okuma yardımcı APP'sinin onAccessibilityEvent (AccessibilityEvent olayı) yöntemi, erişilebilirlik istemini tamamlamak için çağrılır. Talkback böyle bir uygulamadır. OnAccessibilityEvent'te, olayın içeriğini analiz eder, yüksek sesle okur ve diğer sesli geri bildirimleri okur. Elbette, kendi erişilebilirlik yardımcı APP'imizi geliştirmek için AccessibilityService'i de devralabiliriz.

Yukarıdaki şekil, yöntem çağrısı dizisinden engelsiz olay dağıtım sürecini göstermektedir.

Erişilebilirlik çalışma listesi

1. contentDescription, en basit ve en etkili olan kullanıcı arabirimi öğelerini işaretler

Bu, erişilebilirlik desteğindeki en basit ve en önemli görevdir ve erişilebilirlik desteği çalışmalarının% 90'ı buna güvenilerek tamamlanabilir.

TalkBack, ekran okuma içeriği olarak Görünüm bileşeninin dört özelliğini kullanır: contentDescription, bileşen türü (resimler, düğmeler vb.) Ve durum (örneğin, onay kutusunun seçili durumu). Son üçü, Android çerçevesi tarafından otomatik olarak desteklenir. ContentDescription özelliği ekranda görüntülenmeyecektir. Kullanıcı bu kontrollere gittiğinde, açıklama metni okunacaktır. ImageView için ImageButton, CheckBox, contentDescription zorunlu özniteliklerdir. TextView ve Button gibi metin niteliklerine sahip öğeler eklenmemesi için seçilebilir ve Android çerçevesi, metin niteliklerini ekran okuma içeriği olarak kullanır. ContentDescription kısa ve açık olmalı ve uzun olmamalıdır Daha uzun bir açıklama metni görme engelli kullanıcıların işletim verimliliğini etkileyecektir.

2. Odakla gezinmeyi başlatın, görüntü odağını başlatın ve odak sırasını kontrol edin

Görme engelli kullanıcılar, mevcut arayüzdeki çalıştırılabilir öğelerin konumunu doğru bir şekilde belirleyemezler.Dokunmatik işlemlerle karşılaştırıldığında, çalıştırılabilir öğelerin odağını sola ve sağa kaydırarak daha sık elde ederler. Bu nedenle erişilebilirlikteki bir diğer önemli görev, öğelerin odağını kontrol etmektir.

Kullanıcı arabirimi öğesinin android: odaklanabilir özelliği true olarak ayarlandığında, kullanıcının öğeye odaklanmak ve onunla etkileşim kurmak için yön kontrolünü kullanmasına izin verilir. Android çerçevesi tarafından sağlanan kullanıcı arayüzü kontrolleri varsayılan olarak odaklanabilir , Aynı zamanda Android, geliştiricilerin kullanıcı arayüzü kontrolünün odaklanılabilir olup olmadığını belirlemesine ve kontrole odaklanma talebinde bulunmasına olanak tanıyan bir API sağlar. Erişilebilirlik desteğinde, her bir işlem öğesinin odaklanılabilir olmasını sağlamak gerekir ve aynı zamanda erişilebilirlik kullanıcılarını engelleyen öğelerin odaklanmamaya ayarlanması gerekir.

Odak sırası, komşu öğeleri belirli bir yönde bulan bir algoritmaya dayanır. Bazı durumlarda, varsayılan algoritma, geliştirici tarafından tanımlanan sırayla eşleşmeyebilir veya kullanıcı için mantıklı olmayabilir. Bu durumlarda, odak sırasını açıkça geçersiz kılmak için mizanpaj dosyasında android: nextFocusxxx niteliğini kullanabilirsiniz.

3. Özel Görünüm

Android çerçevesi tarafından sağlanan erişilebilirlik olayları ihtiyaçlarımızı karşılayamadığında, örneğin bir ilerleme çubuğunu sürükleyin ve mevcut ilerlemeyi görme engelli kullanıcılara geri bildirmek istediğimizde, şu anda görünümü özelleştirmemiz gerekir. Yukarıdaki erişilebilirlik olaylarının dağıtım sürecinin kaynak kodu analizi yoluyla, erişilebilirlik desteği durumunda özel bir görünümün yapabileceği birkaç şeyi kabaca anlamak da mümkündür. Burada derinlemesine genişletmeyeceğim İlgilenen okuyucular aşağıdaki belgenin özel görünüm bölümüne başvurabilirler.

sendAccessibilityEvent () // Uygun bir zamanda bir erişilebilirlik olayı gönder onInitializeAccessibilityEvent () // Erişilebilirlik olaylarını başlatın dispatchPopulateAccessibilityEvent () // Erişilebilirlik olaylarının üzerine yaz onInitializeAccessibilityNodeInfo () // Bu yöntem AccessibilityNodeInfo nesnesini doldurur ve erişilebilirlik hizmeti nesnesi daha fazla bağlam alır ve kullanıcılara uygun geri bildirim sağlar.

4. Özel erişilebilirlik hizmetleri

Android, Talkback dahil olmak üzere standart erişilebilirlik hizmetleri sağlar ve geliştiriciler de kendi erişilebilirlik hizmetlerini oluşturup yayınlayabilir. Birçok siyah teknoloji işlevini tamamlamak için kullanıcılar adına çalışmak üzere engelsiz hizmetleri bile kullanabiliriz. Google tarafından sağlanan örnek demoyu örnek olarak alalım.

1) Erişilebilirlik hizmeti bildirimi, diğer Hizmet hizmetleri gibi, hizmetin de AndroidManifest.xml'de bildirilmesi gerekir.

2) Erişilebilirlik hizmeti parametre yapılandırması, kodla dinamik olarak ayarlanabilir ve android4.0'dan sonra kullanılabilir < meta veri > Etiket tamamlandı.

accessibilityEventTypes // belirlenmiş monitör Tıklama, pencere değişikliği gibi dinleme süresi türü. packageNames // Erişilebilirliği belirtin Hizmetin işleyebileceği uygulama paketi adı, birden çok uygulama mevcuttur ", "Ayrılmış canRetrieveWindowContent // mümkün mü Pencere içeriğini alın

3) Erişilebilirlik hizmeti yöntemleri, özel erişilebilirlik hizmetlerinin AccessibilityService'den devralması ve onAccessibilityEvent, onInterrupt ve bu sınıfın diğer yöntemlerini geçersiz kılması gerekir. Görünüm bağlamı gibi bilgiler AccessibilityEvent aracılığıyla elde edilebilir ve hatta kullanıcı adına çalışabilir. "Kırmızı zarf eklentisi alın" ve benzerleri çoğunlukla erişilebilirlik hizmetlerine dayalıdır.

4) AccessibilityEvent'e sesli veya titreşimli geri bildirim sağlayın ve erişilebilirlik hizmetleri sağlayın

5. Test etme

Erişilebilirlik optimizasyonu, özellikle ihmallerin ve yanlış kullanımın olacağı Dingding gibi daha fazla işleve sahip uygulamalar için bir gecede gerçekleştirilebilecek bir şey değildir.Aynı zamanda, contentDescription özelliği eklendiğinde NPE istisnalarının ortaya çıkmasının önlenmesi gerekir. Bu nedenle, engelsiz optimizasyon sürecinde test ve regresyon gerekli bağlantılardır.Otomatik test yapmak için Espresso veya Robolectric de kullanılabilir. Test yöntemi ve test içeriği referansı:

https://developer.android.com/training/accessibility/testing.html

Ek olarak, engelsiz optimizasyon sürecini çivileyen kabul testine yardımcı olmak için profesyonel bir engelsiz ekiple iletişime geçebiliriz, Shenzhen Engelsiz Bilgi Araştırma Derneği Muazzam yardım ve destek için çok minnettarım.

Not: Kör mühendislerin çalışmalarını anlamak istiyorsanız, bu tarihi makaleyi okuyabilirsiniz:

Siyah ekranla yüzleşen ve kodu geri alan programlama, nihai hedefi kendini işsiz kılmaktır.

Özel durumlar ve önlemler

  • Koşullar izin verdiğinde, varsayılan olarak erişilebilirlik desteği sağlayan Android'in yerleşik arayüz denetimlerini kullanın. DingTalk'un mevcut kısmı CheckBox yerine ImageView kullanır Bu yöntemin kullanıcı arayüzünde bir farkı yoktur, ancak engelsiz etkileşimli modda, görme engelli kişiler mevcut Görünüm çalışma modunu ve seçilen durumu doğru bir şekilde bilemezler. ImageView, CheckBox işlevini tamamlamak için doğrudan kullanılmamalıdır.

  • EditView, çünkü contentDescription yerine ipucu kullanmanız gerekir. Metin kutusu boş olduğunda, ipucu görme engelli kullanıcıya ne girmesi gerektiğini sorabilir Metin kutusu boş olmadığında, talkback ipucu yerine geçerli giriş metninin içeriğini okuyacaktır. ContentDescription ayarlanırsa, bu deneyim kaybedilecektir.

  • Küçük kontrol grubu, eğer kontrol önerilen dokunma boyutundan küçükse, bu kontrolleri birleştirmek için ViewGroup'u kullanmayı düşünebilir ve kombinasyon için içerik açıklaması sağlamak için android: contentDescription'ı kullanabilirsiniz. Tıklanabilir alanı artırmak ve geçersiz odağı azaltmak için.

  • İşlevleri değiştirilmiş kontroller için, kullanıcı uygulamayı normal şekilde kullanıyorsa, uygulamadaki düğmelerin veya diğer kontrollerin işlevi değişecektir (örneğin, bir düğme oynatmadan duraklatmaya değişir), android: içerik Düğmenin açıklaması buna göre yapılmalıdır. değişiklik.

  • Tarih seçici (DatePicker) gibi bağımsız işlevler sağlayan bir grup kontrol olan ilişkili kontroller, kullanıcı ilişkili kontrollerdeki tek tek kontrollerle etkileşime girdiğinde etkili ses geri bildirimi sağlar.

  • Erişilebilirlik ses geri bildirimini tamamlayın Örneğin, geliştirici, bir kitabın otomatik sayfa çevirme işlevi gibi uygulama tarafından gerçekleştirilen işlemden kullanıcıyı bilgilendirmek istiyorsa, erişilebilirlik hizmetinin kullanıcı için bilgileri okumasını sağlamak için announceForAccessibility (CharSequence) yöntemi kullanılmalıdır.

  • Erişilebilirlikteki contentDescription niteliği en basit ve en etkili olandır ve girişin doğru olduğundan emin olunmalıdır.

  • Düzeni oluşturmadan önce, tasarım kılavuzlarında sağlanan erişilebilirlik çözümlerini inceleyin ve uygulayın. https://material.io/guidelines/usability/accessibility.html#accessibility-principles

Dingding Android erişilebilirlik ilerlemesi

Daha iyi bir bilgi erişilebilirliği deneyimi sağlamak için, görme engelli kullanıcıların DingTalk'ı normal kullanıcılar kadar olabildiğince kullanabilmeleri için, DingTalk iOS'un erişilebilirlik desteğini tamamlamak için DingTalk Android, Haziran 2017 ortasında engelsiz yenileme çalışmasına başladı. Ortak "Shenzhen Information Accessibility Research Association" ile iki aydan fazla süren ortak çabaların, sürekli iletişimin, testlerin ve iyileştirmenin ardından, DingTalk Android erişilebilirlik desteği iyi bir kullanılabilirliğe ulaştı. Şu anda, Zhejiang Körler Okulu gibi kuruluşlar halihazırda kullanımda. Engelsiz konularda kullanıcı geri bildirimlerini mümkün olan en kısa sürede almak ve bunlarla zamanında ilgilenmek için engelsiz yeşil kanallar da kurduk.

"Mobil İnternet çağında, İnternet olmadan nasıl yaşayacağımızı hayal etmek bizim için zor. Görme engelliler için erişilebilirlik programları yepyeni bir dünya açmalarına yardımcı olabilir." DingTalk uluslararasılaşmasını ilerletmektedir.Erişilebilirlik desteği, yurtiçi ve yurtdışında daha fazla görme engelli kullanıcıya yardımcı olacak, böylece DingTalk'un uluslararasılaştırılmış versiyonu daha yüksek kalite gösterecektir.

Dingding engelsiz çalışmayı desteklemeye devam edecek. Şu anda, PC tarafı erişilebilirlik dönüşümü geliştirme aşamasındadır.Dingding Android ve Dingding iOS ayrıca sonraki yinelemelerde erişilebilirlik desteğini normalleştirecek, erişilebilirlik deneyimini sürekli olarak optimize edecek ve görme engellileri getirecektir. Kullanıcılar daha kullanıcı dostudur ve daha iyi bir uygulamalı deneyime sahiptirler, bırakın DingTalk daha fazla insana yardım etsin ... ...

postscript

Erişilebilirlik optimizasyonu tutarlı bir şekilde yapılması gereken bir şeydir.Umarım herkes, görme engelli grupların İnternet aracılığıyla topluma daha iyi entegre olmasına yardımcı olmak için birlikte çalışır. Daha iyi bir erişilebilirlik optimizasyon planınız varsa, mesaj alanında birlikte tartışmaya hoş geldiniz.

Dingding ekibiyle ilgileniyorsanız, özgeçmişinizi bize de gönderebilirsiniz: dujie.dj@alibaba-inc.com, katılmanızı dört gözle bekliyorum ~

Referans

https://github.com/appium/android-apidemos/blob/master/src/io/appium/android/apis/accessibility/ClockBackService.java

https://darkness463.github.io/2017/04/17/accessibility-event

19 dakika 17 dakikada Thomas maçtan sonra çok mutluydu ama James'in ifadesi çirkindi!
önceki
AFC klasik düzenleme! Katar hakemleri Çin-Irak savaşı çağrısı yapıyor, Çin 2 hakem Kahan düellounu icra ediyor
Sonraki
Kontrol açısından tüketiciler bu arabayı ilk sıraya koydu!
İlk Dünya Kupası final takımı üretildi: arka arkaya şampiyonluğu kazanan üç favori, alt yarıdaki iki takım duramaz
Tayfun No. 18 "Wembiya" bu geceden yarın sabahın erken saatlerine kadar karaya inecek ve Şangay şiddetli yağmurda "Çin Sevgililer Günü" nü karşılayacak
Manchester United'ın kötü bir alışkanlığı, iki süperstarı takım arkadaşlarına kükredi! Mourinho'yu suçlama, devre arasında bunu vurguladı
Xiao Tuo, geri dönüşünde biri tarafından spot ışığından mahrum kaldı ve bir golü kaçırırsa 10 sayı atabilirdi! Harden: Gerçekten benim gibi!
Ücretsiz indirin! "Nine Years Double 11: İnternet Teknolojisi Süper Projesi", 300 sayfalık kuru gıda özü
FFP'yi yok sayın! Soruşturulduktan hemen sonra, AC Milan 2 büyük cihaz satın almak için 70 milyon harcadı!
Alman arabaları Almanya'da yapılmalı mı? Bu arabaların kökeni beklenmedik!
Roewe, eski LaCrosse'u temel alan yepyeni bir 950 üretti ve en yüksek fiyat 86.000 yuan düşürüldü.
Ronaldo'nun halefinden ayrılışı önceden ortaya çıktı: Real Madrid insanları hedefe gönderdi, Bernabéu yeni kralı selamladı
Bu makale Alibaba'nın gerçek zamanlı bilgi işlem teknolojisi olan Blink'in temel teknolojisini ortaya koyuyor: Oruç tutmama hedefine nasıl ulaşılır?
Kutandoug, Savaşçıların gerçek özü kim? Cole'un sözleri reddedilemez!
To Top