Google TalkBack’ı Açıklamak: Android Erişilebilirliğine Teknik Bir Dalış

Mohammad Khakpaki
Appcent
Published in
5 min readOct 5, 2023

Giriş

Uygulama geliştirmenin sürekli değişen manzarasında, bir temel ilke daima kararlı bir şekilde durmaktadır: kapsayıcılık.

Teknoloji dünyamızla etkileşim kurma şeklimizi şekillendirdikçe, yeteneklerinden bağımsız olarak herkesin dijital deneyimlerle sorunsuz bir şekilde etkileşim kurabilmesi, zorunlu hale gelir. İşte Android erişilebilirliği, Google TalkBack öncülüğünde sahneye çıkıyor.

Kotlin’de zarif kodlar yazmaktan hoşlanan bir Android geliştirici olarak, kullanıcıları etkileyen ve büyüleyen uygulamalar oluşturmayı nasıl yapacağınızı biliyorsunuz. Şimdi uzmanlığınızı bir adım daha ileri taşımanın ve Google TalkBack’in perspektifinden erişilebilirliği benimsemenin zamanı geldi. Bu makale, sizi teknik bir keşif yolculuğuna çıkaracak, Google TalkBack’in mekaniklerine derinlemesine inceleyecek ve bu güçlü aracı Android uygulamalarınızın erişilebilirliğini artırmak için nasıl kullanabileceğinizi keşfedecektir.

Android’te Erişilebilirliği Anlama

Android uygulamalarındaki erişilebilirlik önemi sadece görsel görünümle sınırlı değildir. Herkesin, engellilere yönelik kullanıcılar da dahil olmak üzere, uygulamanızla etkileşim kurabilmesini sağlamakla ilgilidir. Google’ın Android Erişilebilirlik Paketi, kullanıcılara yardımcı olmak için TalkBack gibi bir ekran okuyucu olarak çalışan özellikler sunar. Erişilebilirliği benimseyerek, tüm kullanıcıların uygulama içeriğinizle etkileşim kurabileceği bir ortam oluşturuyorsunuz.

Google TalkBack’i Tanıma

Google TalkBack, şimdi Android Erişilebilirlik Paketi olarak bilinen, Google tarafından Android cihazlar için geliştirilen bir erişilebilirlik hizmetidir. Görme engellilere veya diğer engellilere sahip bireylere Android cihazlarını etkili bir şekilde kullanmalarında yardımcı olmak için tasarlanmıştır. Bu hizmet, kullanıcıların cihazın arayüzü üzerinde gezinmelerine, uygulamalarla etkileşim kurmalarına ve bilgilere erişmelerine yardımcı olmak için konuşma geri bildirimi ve diğer işitsel ipuçları sağlar. Özellikle görsel işaretler yerine işitsel veya dokunsal geri bildirime güvenenler için oldukça kullanışlıdır. Android Erişilebilirlik Paketi, ekran okuma, sesli komutlar ve farklı kullanıcılar için Android cihazların erişilebilirliğini artırmak için diğer araçlar gibi çeşitli özellikler içerir.

Ekran okuma özelliği, ekranda görünen içeriği yüksek sesle okumak için tasarlanmıştır ve kullanıcılara el hareketleriyle etkileşim kurma ve gezinme olanağı sağlar. TalkBack ile uygulamanız, konuşma geri bildirimi sağlayabilir ve kullanıcıların uygulama arayüzünüzün öğelerini keşfetmelerine yardımcı olabilir.

Google TalkBacki Başlatma

Google TalkBacki Başlatma

TalkBack’i Android cihazınızda etkinleştirmek oldukça basittir. Ayarlar > Erişilebilirlik > TalkBack yolunu izleyin ve anahtarı açın. Etkinleştirildiğinde, kullanıcılar uygulamanızı keşfetmek için jestleri kullanabilir.

Örneğin, bu jestleri kullanarak uygulamanızda TalkBack ile gezinebilirsiniz:

  1. Tek Dokunma: Bu jest, öğeleri seçmek, düğmeleri etkinleştirmek ve ekran üzerindeki öğelerle etkileşim kurmak için kullanılır.
  2. Çift Dokunma: Hızlı bir şekilde ekrana çift dokunarak seçtiğiniz öğeyi onaylar veya seçilen seçeneği etkinleştirir.
  3. Sağa veya Sola Kaydırma: Bir parmakla sağa veya sola kaydırarak farklı öğeler arasında gezinebilirsiniz, örneğin menüler, düğmeler veya metin.
  4. Yukarı veya Aşağı Kaydırma: Bir parmakla dikey kaydırma, ekrandaki metin ve resim gibi içerikleri keşfetmenizi sağlar. Aşağı kaydırmak önceki öğeyi okurken yukarı kaydırmak bir sonrakini okur.
  5. İki Parmakla Yukarı veya Aşağı Kaydırma: Bu jest, daha uzun listeler veya içerikler arasında kaydırmak için kullanılır, örneğin web sayfaları veya belgeler.
  6. İki Parmakla Sola veya Sağa Kaydırma: Bu jest, sayfalar veya ekranlar arasında gezinmenizi sağlar, örneğin ana ekranlar veya sekmeler arasında geçiş yapmak.
  7. İki Parmakla Çift Dokunma: Bu, TalkBack konuşmasını duraklatmak veya devam ettirmek için evrensel bir jesttir.
  8. Üç Parmakla Kaydırma: Üç parmakla sola veya sağa kaydırarak sayfalar arasında gezinebilirsiniz, örneğin web tarayıcısındaki sekmeler arasında geçiş yapmak.
  9. Üç Parmakla Yukarı Kaydırma: Bu jest, genel bağlam menüsünü açar ve çeşitli seçeneklere ve ayarlara erişmenizi sağlar.
  10. Dokunarak Keşfetme: Bir parmakla ekranda gezinmek ve farklı öğeleri keşfetmek için ekrana dokunun. TalkBack, şu anda dokunduğunuz öğe hakkında konuşma geri bildirimi sağlar.

Uygulamanızı TalkBack Uyumlu Yapmak

contentDescription:
Uygulamanızı TalkBack dostu hale getirmek için UI öğeleri için içerik açıklamalarını uygulamayı düşünün. Kotlin’de içerik açıklamalarını kod tarafından ayarlayabilirsiniz:

view.contentDescription = "Launch the chat"

yada xml ile bu şekilde yapa bilirsiniz.

<androidx.appcompat.widget.AppCompatImageView
android:contentDescription="Launch the chat"/>

Bu açıklamalar, TalkBack kullanıcılarına bağlam sağlayarak uygulamanızın anlaşılmasını artırır.

importantForAccessibility:

Ek olarak, erişilebilirlik hizmetlerinin UI öğelerinizle nasıl etkileşimde bulunacağını kontrol etmek için importantForAccessibility özniteliğini uygun şekilde ayarlayarak, uygulamanızın genel erişilebilirliğini iyileştirmek için kullanabilirsiniz. Bu özellik, bağlam sağlama, anlamlı bilgi iletmek ve engelliler için uygulamanızın genel erişilebilirliğini artırmak için özellikle faydalıdır.

importantForAccessibility özniteliği şu değerleri alabilir:

  1. auto (Varsayılan): Bu, varsayılan davranıştır. Bir öğenin erişilebilirlik açısından önemi, görünürlüğü ve diğer faktörlere göre belirlenir. Bir öğe ekranın görünürse, genellikle erişilebilirlik açısından önemli kabul edilir.
  2. yes: Bu, öğeyi açıkça erişilebilirlik için önemli olarak işaretler, hatta şu anda ekranın görünür olmasa bile. Bu, ekranın dışında olabilecek ancak erişilebilirlik hizmetleri tarafından duyurulması gereken öğeler için kullanışlıdır.
  3. no: Bu, öğeyi erişilebilirlik açısından önemli olmayacak şekilde işaretler. Erişilebilirlik hizmetleri bu öğeyi görmezden gelecektir. Bu, dekoratif veya ilgisiz öğeler için kullanılır ve kullanıcılara anlamlı bilgi sağlamayan öğeler için nadiren kullanılır.
  4. noHideDescendants: Bu değer, öğenin kendisinin erişilebilirlik açısından önemli olmadığını, ancak çocuk öğelerinin olduğunu belirtir. Bu, konteynerler veya düzenler için kullanışlıdır, konteyner kendisi anlamlı bilgi sağlamaz, ancak çocukları sağlar.
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, World!"
android:importantForAccessibility="yes" />

accessibilityLiveRegion:
accessibilityLiveRegion özniteliği, bir görünümün içeriğindeki değişikliklerin TalkBack gibi erişilebilirlik hizmetleri tarafından nasıl duyurulması gerektiğini belirtmek için Android’te kullanılır. Bu özellik, uygulamanızda metin veya durum mesajlarının gibi dinamik içerik güncellemeleriniz olduğunda, bu güncellemelerin erişilebilirlik hizmetlerini kullanan kullanıcılara net bir şekilde iletilmesini sağlamak için özellikle faydalıdır.

accessibilityLiveRegionözniteliği şu değerleri alabilir:

  1. none (Default): Herhangi bir canlı bölge belirtilmemiştir. Erişilebilirlik hizmetleri görünümün içeriğindeki değişiklikleri otomatik olarak duyurmayacaktır.

2. polite: Görünümdeki içeriğin değişiklikleri erişilebilirlik hizmetleri tarafından duyurulur, ancak mevcut konuşmayı kesmek için daha uygun bir zamanı beklerler. Bu genellikle acil olmayan veya önemsiz güncellemeler için kullanılır.

3. assertive: Görünümdeki içeriğin değişiklikleri hemen erişilebilirlik hizmetleri tarafından duyurulur, hatta mevcut konuşmayı keser. Bu, kullanıcının hemen farkında olması gereken acil veya önemli güncellemeler için kullanılır.

<TextView
android:id="@+id/statusTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Status: Waiting for response"
android:accessibilityLiveRegion="polite" />

Odak Yönetimi ve Erişilebilirlik Ağacı

TalkBack, erişilebilirlik ağacını gezinmek için odaklanmaya dayanır. Uygulamanızın odak yönetiminin sağlam ve tahmin edilebilir olduğundan emin olun. Belirli bir görünüme programlı olarak odaklanmak için şunu kullanabilirsiniz:

view.requestFocus()

Ayrıca, AccessibilityEvents’ı yakalamak ve istediğiniz gibi özelleştirmek için accessibilityDelegate’i kullanabilirsiniz.

örneğin:

picker.accessibilityDelegate = object : View.AccessibilityDelegate() {
override fun onRequestSendAccessibilityEvent(
host: ViewGroup?,
child: View?,
event: AccessibilityEvent?
): Boolean {
if (event?.eventType == AccessibilityEvent.TYPE_VIEW_FOCUSED || event?.eventType == AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED) {
picker.sendAccessibilityEventUnchecked(event)
return false
}
if (event?.eventType == AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED) {
picker.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
return false
}
return super.onRequestSendAccessibilityEvent(host, child, event)
}
}

Bu kod, yalnızca AccessibilityEvent.TYPE_VIEW_FOCUSED ve AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED etkinliklerini ve metin değişiklikleri gerçekleştiğinde erişilebilirlik motorunun bunu duyurmasını sağlar, bu nedenle bu seçici üzerinde erişilebilirlik yalnızca seçici içindeki metin değişikliklerini duyurur.

Son olarak, view.announceForAccessibility("text to read") kullanarak herhangi bir görünümü seçmeden erişilebilirlik sistemine duyurmanız için kullanabilirsiniz.

Erişilebilirlik Kuralları ile Güncel Kalma:

Erişilebilirlik kuralları evrim geçirir, bu nedenle bilgi sahibi olmak çok önemlidir. Android Geliştirici web sitesini erişilebilirlik en iyi uygulamaları hakkında en son kaynaklar için ziyaret edin ve geliştirici topluluğuyla paylaşımda bulunmak ve diğerlerinden öğrenmek için etkileşimde bulunun.

Sonuç:

Özetle, bu makale, Google TalkBack’i Android uygulamalarınıza entegre etmenin, erişilebilirliklerini artırmanın ve kullanıcı merkezli bir yaklaşımı teşvik etmenin nasıl olduğunu göstermiştir. Bu bilgiyle artık yaratımlarınıza herkesin etkileşim kurabilmesini sağlayarak daha geniş bir izleyici kitlesine hitap eden uygulamalar oluşturabilirsiniz.

--

--