Android için Erişilebilirlik Hizmeti Geliştirme

1. Giriş

Erişilebilirlik hizmetleri, Android cihazlara yüklenen uygulamalar adına kullanıcıya alternatif gezinme geri bildirimi sağlamak için tasarlanmış bir Android çerçevesi özelliğidir. Erişilebilirlik hizmeti, uygulama adına kullanıcıyla iletişim kurabilir. Örneğin, metni konuşmaya dönüştürebilir veya kullanıcı ekranın önemli bir alanının üzerine geldiğinde dokunsal geribildirim sağlayabilir. Bu codelab'de, çok basit bir erişilebilirlik hizmetinin nasıl oluşturulacağı gösterilmektedir.

Erişilebilirlik hizmeti nedir?

Erişilebilirlik hizmetleri, engelli kullanıcıların Android cihazları ve uygulamaları kullanmasına yardımcı olur. Kullanıcıların ekrandaki bilgileri işlemesine yardımcı olan ve cihazla anlamlı bir şekilde etkileşim kurmalarını sağlayan, uzun süredir devam eden ayrıcalıklı bir hizmettir.

Sık kullanılan erişilebilirlik hizmetlerine örnekler

  • Anahtar Erişimi: Hareket kabiliyeti sınırlı olan Android kullanıcılarının bir veya daha fazla anahtar kullanarak cihazlarla etkileşim kurmasına olanak tanır.
  • Sesli Erişim (beta): Hareket kabiliyeti kısıtlı olan Android kullanıcılarının cihazlarını sesli komutlarla kontrol etmelerini sağlar.
  • TalkBack: Görme engelli veya kör kullanıcılar tarafından yaygın olarak kullanılan bir ekran okuyucu.

Erişilebilirlik hizmeti oluşturma

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

Ne oluşturacaksınız?

Bu codelab'de, erişilebilirlik API'sini kullanarak birkaç faydalı işlem yapan basit bir hizmet geliştireceksiniz. Temel bir Android uygulaması yazabiliyorsanız benzer bir hizmet geliştirebilirsiniz.

Erişilebilirlik API'si güçlüdü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ı

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

  • Kullanıcı, cihazın yan düğmelerine ulaşmakta zorlanıyor.
  • Kullanıcı kaydırma veya kaydırma konusunda zorluk yaşıyor.

Hizmet ayrıntıları

Hizmetiniz, ekranda genel bir işlem çubuğu yerleştirir. Kullanıcı, bu çubuktaki düğmelere dokunarak aşağıdaki işlemleri yapabilir:

  1. Telefonun yan tarafındaki güç düğmesine dokunmadan cihazı kapatın.
  2. Telefonun yan tarafındaki ses düğmelerine dokunmadan sesi ayarlayabilirsiniz.
  3. Gerçekten kaydırma yapmadan kaydırma işlemleri gerçekleştirme
  4. Kaydırma hareketi kullanmadan kaydırma işlemi yapın.

Gerekenler

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

  1. Android Studio'nun yüklü olduğu 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) yüklü bir cihaz.

Haydi, başlayalım.

2. Hazırlanma

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 birkaç Android Studio projesi var. Android Studio'yu kullanarak GlobalActionBarService'i 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'nun karşılama ekranı.

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

Ardından, bir terminal kullanarak kök dizine geçin.

3. Başlangıç kodunu anlama

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

Erişilebilirlik hizmetinin temel iskeleti sizin için zaten oluşturulmuştur. Bu codelab'de yazacağınız tüm kodlar 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 dosyanın içeriği hakkında genel bilgiyi aşağıda bulabilirsiniz.

AndroidManifest.xml

Erişilebilirlik hizmetiyle ilgili bilgiler manifest dosyasında beyan edilir:

<?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 tanımlanır:

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

global_action_bar_service.xml

Bu dosya, hizmetin meta verilerini 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" />

<accessibility-service> öğesi kullanılarak aşağıdaki meta veriler tanımlanmıştır:

  1. Bu hizmet için geri bildirim türü (Bu codelab'de iyi bir varsayılan olan feedbackGeneric kullanılı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 işlemini yapmak için android:canPerformGestures değeri true olarak ayarlanır.
  5. Pencere içeriğini almak için android:canRetrieveWindowContent, true olarak ayarlanır.

GlobalActionBarService.java

Erişilebilirlik hizmetiyle ilgili kodun çoğu GlobalActionBarService.java içinde bulunur. Başlangıçta, dosya bir erişilebilirlik hizmeti için mutlak minimum kodu içerir:

  1. AccessibilityService'i genişleten bir sınıf.
  2. Birkaç zorunlu geçersiz kılınmış yöntem (bu codelab'de boş bırakılmıştır).
public class GlobalActionBarService extends AccessibilityService {

   @Override
   public void onAccessibilityEvent(AccessibilityEvent event) {

   }

   @Override
   public void onInterrupt() {

   }
}

Bu dosyaya codelab sırasında kod ekleyeceksiniz.

action_bar.xml

Hizmet, dört düğmeli bir kullanıcı arayüzü sunar ve action_bar.xml düzen dosyası, bu düğmeleri görüntülemek için 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 şu an için boş bir LinearLayout içeriyor. Codelab sırasında düğmeler için işaretleme ekleyeceksiniz.

Uygulamayı başlatma

Bilgisayarınıza bir cihazın 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şlem, üzerinde çalıştığınız uygulamayı başlatır.

Ayarlar > Erişilebilirlik'e gidin. Cihazınızda Global Action Bar Service yüklü olmalıdır.

Erişilebilirlik ayarları ekranı

Global Action Bar Service'i (Genel İşlem Çubuğu Hizmeti) tıklayın ve etkinleştirin. Aşağıdaki izin iletişim kutusunu görmeniz gerekir:

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 bir 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'ın 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 işlem, 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ğunun düzenini depolamak için 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 genişletir ve ekranın üst kısmına işlem çubuğunu ekler.

Hizmet bağlandığında onServiceConnected() yöntemi çalışır. Erişilebilirlik hizmeti şu anda işlevsel olmak için gereken tüm izinlere sahip. Burada kullanacağınız temel izin WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY iznidir. Bu izin sayesinde, karmaşık bir izin akışından geçmek zorunda kalmadan doğrudan ekranda mevcut içeriğin üzerine çizim yapabilirsiniz.

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

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

  • Erişilebilirlik hizmeti, kullanıcı hizmeti cihaz ayarlarında açıkça etkinleştirdiğinde başlar.
  • Sistem bir hizmete bağlandıktan sonra onServiceConnected() yöntemini çağırır. Bu yöntem, bağlama sonrası kurulum gerçekleştirmek isteyen hizmetler tarafından geçersiz kılınabilir.
  • Erişilebilirlik hizmeti, kullanıcı cihaz ayarlarında devre dışı bıraktığında veya disableSelf() çağrısı yaptığında durur.

Hizmetin yürütülmesi

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

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

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

Artık Android Studio'yu kullanarak hizmeti başlatabilirsiniz.

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'e gidip Global İşlem Çubuğu Hizmeti'ni etkinleştirin.

Hizmet kullanıcı arayüzünü oluşturan dört düğmeyi, ekranda gösterilen içeriğin üzerinde görürsünüz.

overlay.png

Şimdi dört düğmeye işlevsellik ekleyerek kullanıcının faydalı işlemler gerçekleştirmek için düğmelere dokunmasını sağlayacaksınız.

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

configurePowerButton() yöntemini GlobalActionBarService.java 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. Yeni eklediğiniz kod basittir: Düğmeyi tıklamak onClickListener() işlevini tetikler. Bu işlev, performGlobalAction(GLOBAL_ACTION_POWER_DIALOG) işlevini çağırır ve güç iletişim kutusunu kullanıcıya gösterir.

Genel işlemlerin herhangi bir görünüme bağlı olmadığını unutmayın. Geri düğmesi, Ana Sayfa düğmesi ve Son Kullanılanlar düğmesine basmak da diğer genel işlemlerdir.

Şimdi configurePowerButton() yöntemini onServiceConnected() yönteminin sonuna 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'e gidip Global İş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 GlobalActionBarService.java 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 dinleyici içinde, configureVolumeButton(), akış sesini ayarlamak için AudioManager'ı kullanır.

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

Şimdi configureVolumeButton() yöntemini onServiceConnected() yönteminin sonuna 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'e gidip Global Action Bar Service'i başlatın.

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

Cihazın yan tarafındaki ses denetimlerine ulaşamayan varsayımsal kullanıcı, artık Global Action Bar Service'i kullanarak sesi değiştirebilir (artırabilir).

7. Kaydırma düğmesini yapılandırma

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

findScrollableNode yöntemini GlobalActionBarService.java 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 hizmetleri, ekrandaki gerçek görünümlere erişemez. Bunun yerine, ekrandaki içeriğin AccessibilityNodeInfo nesnelerinden oluşan bir ağaç şeklindeki yansımasını görür. Bu nesneler, temsil ettikleri görünümle ilgili bilgileri (görünümün konumu, görünümle ilişkili metinler, erişilebilirlik için eklenen meta veriler, görünüm tarafından desteklenen işlemler vb.) içerir. findScrollableNode() yöntemi, kök düğümden başlayarak bu ağacın genişlik öncelikli 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 bu düğümü, aksi takdirde null değerini döndürür.)

Şimdi configureScrollButton() yöntemini GlobalActionBarService.java 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() işlevini onServiceConnected() işlevine 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'e gidip Global Action Bar Service'i başlatın.

Ayarlar > Erişilebilirlik'e gitmek için geri düğmesine basın. Erişilebilirlik ayarları etkinliğindeki öğeler kaydırılabilir ve Kaydırma düğmesine dokunulduğunda kaydırma işlemi gerçekleştirilir. Kaydırma işlemlerini kolayca gerçekleştiremeyen varsayımsal kullanıcımız artık öğe listesinde kaydırmak için Kaydırma düğmesini kullanabilir.

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

configureSwipeButton() yöntemini GlobalActionBarService.java 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ının adına hareketler gerçekleştiren ve N'de eklenen yeni bir API kullanır. Kod, gerçekleştirilecek hareketin yolunu belirtmek için GestureDescription nesnesini kullanır (bu codelab'de sabit kodlanmış değerler kullanılır). Ardından, AccessibilityService dispatchGesture() yöntemini kullanarak kaydırma hareketini kullanıcı adına gönderir.

Şimdi configureSwipeButton() işlevini onServiceConnected() işlevine 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'e gidip Global Action Bar Service'i başlatın.

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

9. Özet

Tebrikler! Basit ve işlevsel bir erişilebilirlik hizmeti oluşturmuş olmanız gerekir.

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

  1. İşlem çubuğunu taşınabilir hale getirin (Şu anda yalnızca ekranın üst kısmında yer alıyor).
  2. Kullanıcının sesi 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, erişilebilirlik API'lerinin sunduğu işlevlerin yalnızca küçük bir alt kümesini kapsar. API ayrıca aşağıdakileri de kapsar (kısmi liste):

  • Birden fazla pencere desteği.
  • AccessibilityEvent'ler için destek. Kullanıcı arayüzü değiştiğinde, erişilebilirlik hizmetleri AccessibilityEvent nesneleri kullanılarak 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

Bu codelab, erişilebilirlik hizmeti yazmaya başlamanıza yardımcı olur. Ele almak istediğiniz belirli erişilebilirlik sorunları olan bir kullanıcı tanıyorsanız artık bu kullanıcıya yardımcı olacak bir hizmet oluşturabilirsiniz.