Android için Erişilebilirlik Hizmeti Geliştirme

1. Giriş

Erişilebilirlik hizmetleri, Android cihazlarda yüklü uygulamalar adına kullanıcıya alternatif gezinme geri bildirimi sağlamak için tasarlanmış Android çerçevesinin bir özelliğidir. Erişilebilirlik hizmetleri, örneğin metni konuşmaya dönüştürerek veya kullanıcı ekranın önemli bir kısmının üzerine geldiğinde dokunsal geri bildirim sağlayarak kullanıcıyla uygulama adına iletişim kurabilir. Bu codelab'de, çok basit bir erişilebilirlik hizmetinin nasıl oluşturulacağı açıklanmaktadır.

Erişilebilirlik Hizmeti nedir?

Erişilebilirlik Hizmeti, engelli kullanıcıların Android cihaz ve uygulamalarını kullanmalarına yardımcı olur. Bu, kullanıcıların ekrandaki bilgileri işlemesine ve bir cihazla anlamlı bir şekilde etkileşimde bulunmasına olanak tanıyan uzun süreli ayrıcalıklı bir hizmettir.

Yaygın erişilebilirlik hizmetlerine örnekler

  • Anahtar Erişimi: Mobilite sınırlamaları olan Android kullanıcılarının bir veya daha fazla anahtar kullanarak cihazlarla etkileşimde bulunmasına olanak tanır.
  • Sesli Erişim (beta): Hareket kısıtlamaları olan Android kullanıcılarının bir cihazı sesli komutlarla kontrol etmesine olanak tanır.
  • TalkBack: Görme engelli veya görme engelli kullanıcılar tarafından yaygın olarak kullanılan ekran okuyucu.

Erişilebilirlik hizmeti oluşturma

Google, Android kullanıcıları için Anahtar Erişimi, Sesli Erişim ve TalkBack gibi hizmetler sağlasa da bu hizmetler engelli tüm kullanıcılara hizmet veremez. Engelli birçok kullanıcının benzersiz ihtiyaçları olduğundan, Android'in erişilebilirlik hizmetleri oluşturmaya yönelik API'leri açıktır ve geliştiriciler serbestçe erişilebilirlik hizmetleri oluşturabilir ve bunları Play Store üzerinden dağıtabilir.

Oluşturacağınız içerik

Bu codelab'de, Accessibility API'yi kullanarak birkaç faydalı şey yapan basit bir hizmet geliştireceksiniz. Temel bir Android uygulaması yazabiliyorsanız benzer bir hizmet geliştirebilirsiniz.

Accessibility API'nin güçlü bir özelliği vardır: Oluşturacağınız hizmetin kodu yalnızca dört dosyada bulunur ve yaklaşık 200 satır kod kullanır.

Son kullanıcı

Varsayımsal bir kullanıcı için aşağıdaki özelliklere sahip bir hizmet oluşturacaksınız:

  • Kullanıcı, cihazdaki yan düğmelere ulaşmakta zorluk yaşıyor.
  • Kullanıcı, kaydırma veya kaydırma konusunda zorluk yaşıyor.

Hizmet ayrıntıları

Hizmetiniz, ekranda genel bir işlem çubuğu görünür. Kullanıcı aşağıdaki işlemleri gerçekleştirmek için bu çubuktaki düğmelere dokunabilir:

  1. Telefonun yan tarafındaki gerçek güç düğmesine ulaşmadan cihazı kapatın.
  2. Telefonun yan tarafındaki ses düğmelerine dokunmadan ses düzeyini ayarlayın.
  3. Kaydırma işlemlerini, gerçekten kaydırmadan gerçekleştirin.
  4. Kaydırma hareketi yapmak zorunda kalmadan kaydırma işlemi gerçekleştirin.

Gerekenler

Bu codelab'de, aşağıdakileri kullanacağınız varsayılır:

  1. Android Studio çalıştıran bir bilgisayar.
  2. Basit kabuk komutlarını yürütmek için kullanılan bir terminal.
  3. Geliştirme için kullanacağınız bilgisayara bağlı Android 7.0 (Nougat) çalıştıran bir cihaz.

Haydi, başlayalım.

2. Kurulum

Terminali kullanarak çalışacağınız bir dizin oluşturun. Bu dizine geçin.

Kodu İndirme

Bu codelab'in kodunu içeren depoyu klonlayabilirsiniz:

git clone https://github.com/android/codelab-android-accessibility.git

Depoda çeşitli Android Studio projeleri bulunur. Android Studio'yu kullanarak GlobalActionBarService uygulamasını açın.

Studio simgesini tıklayarak Android Studio'yu başlatın:

Android Studio'yu başlatmak için kullanılan logo.

Projeyi içe aktar (Eclipse ADT, Gradle vb.) seçeneğini belirleyin:

Android Studio için karşılama ekranı.

Kaynağı klonladığınız konuma gidin ve GlobalActionBarService'i seçin.

Ardından, bir terminal kullanarak kök dizine geçiş yapın.

3. Başlangıç kodunu anlama

Açtığınız projeyi keşfedin.

Erişilebilirlik hizmeti için temel iskelet zaten sizin için yaratılmış. Bu codelab'de yazacağınız kodun tamamı aşağıdaki dört dosyayla sınırlıdır:

  1. app/src/main/AndroidManifest.xml
  2. app/src/main/res/layout/action_bar.xml
  3. app/src/main/res/xml/global_action_bar_service.xml
  4. app/src/main/java/com/example/android/globalactionbarservice/GlobalActionBarService.java

Her bir dosyanın içeriğinin adım adım açıklamalı kılavuzu.

AndroidManifest.xml

Erişilebilirlik hizmetiyle ilgili bilgiler manifest dosyasında açıklanır:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.android.globalactionbarservice">

   <application>
       <service
           android:name=".GlobalActionBarService"
           android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
           android:exported="true">
           <intent-filter>
               <action android:name="android.accessibilityservice.AccessibilityService" />
           </intent-filter>
           <meta-data
               android:name="android.accessibilityservice"
               android:resource="@xml/global_action_bar_service" />
       </service>
   </application>
</manifest>

Aşağıdaki üç zorunlu öğe AndroidManifest.xml dosyasında açıklanmıştır:

  1. Erişilebilirlik hizmetine bağlanma izni:
<service
    ...
    android:permission = "android.permission.BIND_ACCESSIBILITY_SERVICE">
    ...             
</service>
  1. AccessibilityService niyeti:
<intent-filter>
   <action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
  1. Oluşturduğunuz hizmete ilişkin meta verileri içeren dosyanın konumu:
<meta-data
       ...
       android:resource="@xml/global_action_bar_service" />
</service>

global_action_bar_service.xml

Bu dosya, hizmete ait meta verileri içerir.

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
   android:accessibilityFeedbackType="feedbackGeneric"
   android:accessibilityFlags="flagDefault"
   android:canPerformGestures="true"
   android:canRetrieveWindowContent="true" />

Bir &lt;accessibility-service&gt; öğesi kullanılarak aşağıdaki meta veriler tanımlanmıştır:

  1. Bu hizmetin geri bildirim türü (bu codelab, iyi bir varsayılan olan feedbackGenel değerini kullanır).
  2. Hizmetin erişilebilirlik işaretleri (bu codelab'de varsayılan işaretler kullanılır).
  3. Hizmet için gereken özellikler:
  4. Kaydırma yapmak için android:canPerformGestures özelliği android:canPerformGestures olarak ayarlanmalıdır.
  5. Pencere içeriğini almak için android:canRetrieveWindowContent değeri true olarak ayarlanır.

GlobalActionBarService.java

Erişilebilirlik hizmeti kodunun büyük kısmı GlobalActionBarService.java dosyasında bulunur. Başlangıçta dosya, bir erişilebilirlik hizmeti için mutlak minimum kodu içerir:

  1. AccessibilityService'in kapsamını genişleten bir sınıf.
  2. Gerekli olan birkaç geçersiz kılınmış yöntem (bu codelab'de boş bırakılır).
public class GlobalActionBarService extends AccessibilityService {

   @Override
   public void onAccessibilityEvent(AccessibilityEvent event) {

   }

   @Override
   public void onInterrupt() {

   }
}

Codelab sırasında bu dosyaya kod ekleyeceksiniz.

action_bar.xml

Hizmet, dört düğmeli bir kullanıcı arayüzü görüntüler ve action_bar.xml düzen dosyası bu düğmelerin görüntülenmesiyle ilgili işaretlemeyi içerir:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="horizontal"
   android:layout_width="match_parent"
   android:layout_height="wrap_content">
</LinearLayout>

Bu dosya şimdilik boş bir LinearLayout içerir. Codelab sırasında düğmeler için işaretleme ekleyeceksiniz.

Uygulamayı başlatma

Bir cihazın bilgisayarınıza bağlı olduğundan emin olun. Ekranın üst kısmındaki menü çubuğundan yeşil Oynat simgesine Hizmeti başlatmak için kullanılan Android Studio Play düğmesi basın. Bu işlemle, üzerinde çalıştığınız uygulama başlatılacaktır.

Ayarlar'a gidin > Erişilebilirlik. Cihazınızda Global İşlem Çubuğu Hizmeti yüklüdür.

Erişilebilirlik ayarları ekranı

Global İşlem Çubuğu Hizmeti'ni tıklayıp etkinleştirin. Aşağıdaki izin iletişim kutusunu göreceksiniz:

Erişilebilirlik hizmeti izni iletişim kutusu.

Erişilebilirlik hizmeti, kullanıcı işlemlerini gözlemlemek, pencere içeriğini almak ve kullanıcı adına hareketler gerçekleştirmek için izin ister. Üçüncü taraf erişilebilirlik hizmeti kullanırken kaynağa gerçekten güvendiğinizden emin olun!

Henüz herhangi bir işlev eklemediğimiz için hizmeti çalıştırmak pek işe yaramaz. Haydi başlayalım.

4. Düğmeleri oluşturma

res/layout içinde action_bar.xml dosyasını açın. İşaretlemeyi, şu anda boş olan LinearLayout öğesinin içine ekleyin:

<LinearLayout ...>
    <Button
        android:id="@+id/power"
        android:text="@string/power"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/volume_up"
        android:text="@string/volume"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/scroll"
        android:text="@string/scroll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/swipe"
        android:text="@string/swipe"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>

Bu, kullanıcının cihazda işlemleri tetiklemek için basacağı düğmeler oluşturur.

GlobalActionBarService.java dosyasını açın ve işlem çubuğu düzenini depolayacak bir değişken ekleyin:

public class GlobalActionBarService extends AccessibilityService {
    FrameLayout mLayout;
    ...
}

Şimdi bir onServiceStarted() yöntemi ekleyin:

public class GlobalActionBarService extends AccessibilityService {
   FrameLayout mLayout;

   @Override
   protected void onServiceConnected() {
       // Create an overlay and display the action bar
       WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
       mLayout = new FrameLayout(this);
       WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
       lp.type = WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY;
       lp.format = PixelFormat.TRANSLUCENT;
       lp.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
       lp.width = WindowManager.LayoutParams.WRAP_CONTENT;
       lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
       lp.gravity = Gravity.TOP;
       LayoutInflater inflater = LayoutInflater.from(this);
       inflater.inflate(R.layout.action_bar, mLayout);
       wm.addView(mLayout, lp);
   }
}

Kod, düzeni şişirir ve işlem çubuğunu ekranın üst kısmına ekler.

onServiceConnected() yöntemi, hizmet bağlandığında çalışır. Şu anda erişilebilirlik hizmeti, çalışması için gereken tüm izinlere sahip. Burada kullanacağınız anahtar izni WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY iznidir. Bu izin, karmaşık bir izin akışına gerek kalmadan doğrudan mevcut içeriğin üzerinde çizim yapmanıza olanak tanır.

Erişilebilirlik Hizmeti yaşam döngüsü

Erişilebilirlik hizmetinin yaşam döngüsü özel olarak sistem tarafından yönetilir ve belirlenen hizmet yaşam döngüsüne uyar.

  • Kullanıcı, hizmeti cihaz ayarlarında açıkça etkinleştirdiğinde erişilebilirlik hizmeti başlar.
  • Sistem bir hizmete bağlandıktan sonra onServiceConnected() hizmetini çağırır. Bu yöntem, yayın bağlama kurulumu yapmak isteyen hizmetler tarafından geçersiz kılınabilir.
  • Erişilebilirlik hizmeti, kullanıcı cihaz ayarlarında özelliği kapattığında veya disableSelf() çağrısı yapıldığında durur.

Hizmeti çalıştırma

Android Studio'yu kullanarak hizmeti başlatmadan önce Çalıştır ayarlarınızın doğru yapılandırıldığından emin olmanız gerekir.

Çalıştırma yapılandırmanızı düzenleyin (Üst menüden Çalıştır seçeneğini kullanın ve Yapılandırmaları Düzenle'ye gidin. Ardından, açılır menüyü kullanarak "Varsayılan Etkinlik"ten Başlatma Seçeneğini değiştirin "Hiçbir şey"e dönüştürmez.

Android Studio&#39;yu kullanarak bir hizmeti başlatmak için çalıştırma ayarlarını yapılandırmak üzere açılır menüyü.

Artık Android Studio'yu kullanarak hizmeti başlatabiliyor olmanız gerekir.

Ekranın üst kısmındaki menü çubuğundan yeşil Oynat simgesine Hizmeti başlatmak için kullanılan Android Studio Play düğmesi basın. Ardından Ayarlar > Erişilebilirlik'i ve Genel İşlem Çubuğu Hizmeti'ni etkinleştirin.

Ekranda görüntülenen içeriğin üzerine yerleştirilmiş, hizmet kullanıcı arayüzünü oluşturan dört düğmeyi görürsünüz.

overlay.png

Şimdi dört düğmeye işlevsellik ekleyeceksiniz. Böylece kullanıcılar düğmelere dokunarak faydalı işlemler gerçekleştirebilecekler.

5. Güç düğmesini yapılandırma

configurePowerButton() yöntemini configurePowerButton() dosyasına ekleyin:

private void configurePowerButton() {
   Button powerButton = (Button) mLayout.findViewById(R.id.power);
   powerButton.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
           performGlobalAction(GLOBAL_ACTION_POWER_DIALOG);
       }
   });
}

Güç düğmesi menüsüne erişmek için configurePowerButton(), AccessibilityService tarafından sağlanan performGlobalAction() yöntemini kullanır. Eklediğiniz kod basittir: Düğmeyi tıkladığınızda bir onClickListener() tetiklenir. performGlobalAction(GLOBAL_ACTION_POWER_DIALOG) çağrısını yapar ve kullanıcıya güç iletişim kutusunu gösterir.

Genel işlemlerin herhangi bir görünümle bağlantılı olmadığını unutmayın. Geri düğmesi, Ana Sayfa düğmesi ve Son Kullanılanlar düğmesi diğer genel işlem örnekleridir.

Şimdi onServiceConnected() yönteminin sonuna configurePowerButton() ekleyin:

@Override
protected void onServiceConnected() {
   ...
   configurePowerButton();
}

Ekranın üst kısmındaki menü çubuğundan yeşil Oynat simgesine Hizmeti başlatmak için kullanılan Android Studio Play düğmesi basın. Ardından Ayarlar > Erişilebilirlik ve Genel İşlem Çubuğu Hizmeti'ni başlatın.

Güç iletişim kutusunu görüntülemek için Güç düğmesine basın.

6. Ses Düğmesini yapılandırma

configureVolumeButton() yöntemini configureVolumeButton() dosyasına ekleyin:

private void configureVolumeButton() {
   Button volumeUpButton = (Button) mLayout.findViewById(R.id.volume_up);
   volumeUpButton.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
           AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
           audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                   AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
       }
   });
}

configureVolumeButton() yöntemi, kullanıcı ses düğmesine bastığında tetiklenen bir onClickListener() ekler. Bu dinleyicide, configureVolumeButton() akış ses düzeyini ayarlamak için bir AudioManager kullanır.

Ses seviyesini herkesin kontrol edebileceğini unutmayın (bunu yapmak için erişilebilirlik hizmeti olmanız gerekmez).

Şimdi onServiceConnected() yönteminin sonuna configureVolumeButton() ifadesini ekleyin:

@Override
protected void onServiceConnected() {
   ...

   configureVolumeButton();
}

Ekranın üst kısmındaki menü çubuğundan yeşil Oynat simgesine Hizmeti başlatmak için kullanılan Android Studio Play düğmesi basın. Ardından, Ayarlar > Erişilebilirlik ve Genel İşlem Çubuğu Hizmeti'ni başlatma.

Ses düzeyini değiştirmek için Ses düğmesine basın.

Cihazın yan tarafındaki ses düzeyi kontrollerine erişemeyen varsayımsal kullanıcı, artık ses düzeyini değiştirmek (artırmak) için Genel İşlem Çubuğu Hizmeti'ni kullanabilir.

7. Kaydırma Düğmesini Yapılandırma

Bu bölümde iki yöntemin kodlanması yer alır. İlk yöntem kaydırılabilir bir düğüm bulur, ikinci yöntem ise kaydırma işlemini kullanıcı adına gerçekleştirir.

findScrollableNode yöntemini findScrollableNode dosyasına ekleyin:

private AccessibilityNodeInfo findScrollableNode(AccessibilityNodeInfo root) {
   Deque<AccessibilityNodeInfo> deque = new ArrayDeque<>();
   deque.add(root);
   while (!deque.isEmpty()) {
       AccessibilityNodeInfo node = deque.removeFirst();
       if (node.getActionList().contains(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD)) {
           return node;
       }
       for (int i = 0; i < node.getChildCount(); i++) {
           deque.addLast(node.getChild(i));
       }
   }
   return null;
}

Erişilebilirlik hizmeti, ekrandaki gerçek görünümlere erişemez. Bunun yerine, ekranda olanların yansımasını AccessibilityNodeInfo nesnelerinden oluşan bir ağaç biçiminde yansıtır. Bu nesneler, temsil ettikleri görünüm hakkında bilgiler içerir (görünümün konumu, görünümle ilişkilendirilen tüm metinler, erişilebilirlik için eklenen meta veriler, görünümün desteklediği işlemler vb.). findScrollableNode() yöntemi, bu ağacın kök düğümden başlayarak kapsama öncelik veren bir geçişini gerçekleştirir. Kaydırılabilir bir düğüm (ör. AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD işlemini) destekleyen bir düğüm) bulursa bunu döndürür, aksi takdirde null değerini döndürür.

Şimdi, configureScrollButton() yöntemini configureScrollButton() dosyasına ekleyin:

private void configureScrollButton() {
   Button scrollButton = (Button) mLayout.findViewById(R.id.scroll);
   scrollButton.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
           AccessibilityNodeInfo scrollable = findScrollableNode(getRootInActiveWindow());
           if (scrollable != null) {
               scrollable.performAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD.getId());
           }
       }
   });
}

Bu yöntem, kaydırma düğmesi tıklandığında tetiklenen bir onClickListener() oluşturur. Kaydırılabilir bir düğüm bulmaya çalışır ve başarılı olursa kaydırma işlemini gerçekleştirir.

Şimdi, configureScrollButton() öğesini configureScrollButton() öğesine ekleyin:

@Override
protected void onServiceConnected() {
   ...

   configureScrollButton();
}

Ekranın üst kısmındaki menü çubuğundan yeşil Oynat simgesine Hizmeti başlatmak için kullanılan Android Studio Play düğmesi basın. Ardından, Ayarlar > Erişilebilirlik ve Genel İşlem Çubuğu Hizmeti'ni başlatma.

Ayarlar > Erişilebilirlik. Erişilebilirlik ayarları etkinliğindeki öğeler kaydırılabilir ve Kaydırma düğmesine dokunduğunuzda bir kaydırma işlemi gerçekleştirilir. Kaydırma işlemlerini kolayca yapamayan varsayımsal kullanıcımız, artık Kaydır düğmesini kullanarak bir öğe listesinde gezinebilir.

8. Kaydırma Düğmesini yapılandırma

configureSwipeButton() yöntemini configureSwipeButton() dosyasına ekleyin:

private void configureSwipeButton() {
   Button swipeButton = (Button) mLayout.findViewById(R.id.swipe);
   swipeButton.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
           Path swipePath = new Path();
           swipePath.moveTo(1000, 1000);
           swipePath.lineTo(100, 1000);
           GestureDescription.Builder gestureBuilder = new GestureDescription.Builder();
           gestureBuilder.addStroke(new GestureDescription.StrokeDescription(swipePath, 0, 500));
           dispatchGesture(gestureBuilder.build(), null, null);
       }
   });
}

configureSwipeButton() yöntemi, kullanıcı adına hareketler gerçekleştiren N'ye eklenmiş yeni bir API kullanır. Kod, gerçekleştirilecek hareketin yolunu belirtmek için bir GestureDescription nesnesi kullanır (bu codelab'de sabit kodlu değerler kullanılır) ve ardından AccessibilityService dispatchGesture() yöntemini kullanarak kaydırma hareketini kullanıcı adına gönderir.

Şimdi configureSwipeButton() öğesine configureSwipeButton() öğesini ekleyin:

@Override
protected void onServiceConnected() {
   ...
   configureSwipeButton();
}

Ekranın üst kısmındaki menü çubuğundan yeşil Oynat simgesine Hizmeti başlatmak için kullanılan Android Studio Play düğmesi basın. Ardından, Ayarlar > Erişilebilirlik ve Genel İşlem Çubuğu Hizmeti'ni başlatma.

Kaydırma işlevini test etmenin en kolay yolu, telefonunuzda yüklü olan Haritalar uygulamasını açmaktır. Harita yüklendikten sonra Kaydırma düğmesine dokunduğunuzda, ekran sağa doğru hızlıca kaydırılır.

9. Özet

Tebrikler! Basit ve işlevsel bir erişilebilirlik hizmeti oluşturdunuz.

Bu hizmeti çeşitli şekillerde genişletebilirsiniz. Örneğin:

  1. İşlem çubuğunu taşınabilir hale getirin (şimdilik sadece ekranın üstünde duruyor).
  2. Kullanıcının ses düzeyini hem artırmasına hem de azaltmasına izin verin.
  3. Kullanıcının hem sola hem de sağa kaydırmasına izin verin.
  4. İşlem çubuğunun yanıt verebileceği ek hareketler için destek ekleyin.

Bu codelab'de, erişilebilirlik API'leri tarafından sağlanan işlevlerin yalnızca küçük bir kısmı ele alınmaktadır. API aşağıdaki konuları da kapsar (kısmi liste):

  • Birden fazla pencere desteği.
  • AccessibilityEvent için destek. Kullanıcı arayüzü değiştiğinde, AccessibilityEvent nesneleri kullanılarak erişilebilirlik hizmetleri bu değişiklikler hakkında bilgilendirilir. Hizmet, daha sonra kullanıcı arayüzü değişikliklerine uygun şekilde yanıt verebilir.
  • Büyütmeyi kontrol etme özelliği.

Bu codelab'de erişilebilirlik hizmeti yazmaya başlayabilirsiniz. Belirli erişilebilirlik sorunları olan ve ele almak istediğiniz bir kullanıcı varsa artık bu kullanıcıya yardımcı olacak bir hizmet oluşturabilirsiniz.