Bu yazımda bir projeye başlamadan önce işinize yarayacak birkaç şeyden bahsetmek istiyorum. Android AOSP (Açık Kaynak kodlu Android Projesi) sürümlerini kullanarak bir ürün veya sistem kurmak niyetindeyseniz dikkate almanız gereken önemli noktalar var. Tabii ki erişilebilirlik demeyeceğim, erişilebilirlikten haberdar olduğunuz için buralarda olduğunuzu varsayıyorum. Benim bahsetmek istediğim, bu projelere başlarken hangi erişilebilirlik yeteneklerine sahip olduğunuzdur. Öyleyse başlayalım.
Android AOSP, son kullanıcı için var olan bir şey değil. Yani bu yazıda cep telefonunuzdaki, tabletinizdeki veya televizyonunuzdaki Android’den bahsetmiyoruz. Bundan çok daha derinde bir şey bizim konumuz. Bu anlamda, benim Android cep telefonlarındaki ekran okuyucuyu kötülemeye çalıştığımı düşünüyorsanız bu yazıyı okumayı değerlendirmeyebilirsiniz. Şahsen tanındığım çevrelerde, Android cep telefonu ve tablet kullanmayı tercih etmediğim bilinir. Bununla birlikte, kafanızdaki proje, Android AOSP’den güç alan bir cihaz üzerinde çalışacaksa bu yazı tamda size göre.
Android AOSP dağıtımını incelemek cidden benim için zor oldu. Elimdeki cihazları ve sanal makine imkanlarını, Körler için erişilebilir olmayan arabirimler üzerinden yeniden sistem kurulabilir hale getirmek, bu sistemler üzerinde ilgili Android dağıtımını kurmak ve sistemi kendim için test edilebilir hale getirmek neredeyse 1,5 yıla yakın zamanımı aldı. Bu zaman zarfında, 7 gün 24 saat bununla uğraşmadım tabii ama hatırı sayılır bir zamanı başarısız denemelere gömdüm. En nihayetinde bir Raspberry Pi cihazına sistemi kurmayı başardığımda ve eklediğim tüm bileşenleri Android içerisinde çalıştırabilmeye başladığımda bizim topraklara medeniyet geldi. Projem çok basitti aslında. Kendim için daha erişilebilir bir akıllı ev yönetim paneli üretmek. Bu panel sadece erişilebilir bir akıllı ev paneli değil, üzerinde çalıştırdığım makinenin yetenekleri tabiriyle erişilebilir olmayan başka cihazların temelde bilgi aktardıkları erişilebilir bir bilgilendirme ekranı (Self Monitoring Device) olması üzere geliştirilecekti. Bu resmi bir proje değildi. Neyi yapıp neyi yapamadığımı görmek için kendime koymam gereken bir hedef vardı ve işin sonuna geldiğimde zaten buna harcadığım zamanın tek ürünü bu makale oldu. Söz konusu işleri yapabilmek için Android tabanlı bir sistemle uğraşmak yerine Linux tabanlı, daha geniş bir topluluk tarafından desteklenen başka bir işletim sistemi bulduğum için projeyi terk ettim.
Android AOSP dağıtımını farklı sistemlerde çalıştırabilmeniz için İ386, VM gibi resmi paketler ve Gayriresmî diyebileceğimiz, popüler cihazlar için oluşturulmuş imajlar vardır. Sorun bu paketlerin olması veya olmamasından ziyade kurulumu yapmak için kullanacağınız ekranların erişilebilirliğidir. İ386 ile bilgisayar kurulumu yapmak isterseniz, Ses, Network, Hid Display sürücüleri paket içerisinde bulunur. Buna karşın kurulumda kullanabileceğiniz bir ekran okuyucu yoktur. Aynı senaryo VM (Virtual Machine), Özel cihaz paketleri için de geçerlidir. Raspberry Pi Üzerinde başarılı olmamızı sağlayan şey ise bu cihaz için hazırlanan paketin bir Web UI (Web arayüzü) üzerinden kuruluma izin vermesidir. Ben de söz konusu cihaz ve bileşenindeki paket yöneticisi ile Web UI üzerinden istediğim paketi ekleyip çıkarabiliyordum. Bu bana her eklediğim ek bileşeni çalışabilir hale getirme fırsatı verdi. Sonradan zaten bir ekran okuyucu ekledim sisteme ama durun şimdi.
Benim gibi dokunmatik ekranlı ve hoparlörlü bir hepsi bir arada panelin arkasına yapıştırabileceğiniz cihazın içerisinde, küçücük anakart olarak Raspberry Pi kullanıp, içerisine ekran okuyucu yüklediğinizde sorunu çözdüğünüzü zannedebilirsiniz ama öyle değildir. Android AOSP, kendi sitelerinde de gösterildiği üzere temel bir erişilebilirlik API desteği ile birlikte gelir. Herhangi bir destek teknoloji çözümünü içerisinde barındırmaz. Demek istediğim, çift tıklayarak etkinleştirme, butona alt ve üst metin ekleyerek açıklama ekleme, görme için destekleyici özelliklere uyumluluk gösteren ek metinler yazmanızı destekler yazılım ortamı içerisinde; ancak herhangi bir görme desteği yazılımını (ekran okuyucu) içerisinde barındırmaz. Bununla birlikte asıl sorun özelliğin sistemin içerisinde olması veya olmaması değildir. Çok kompleks bir yazılım projesini çalıştırdığınızda, son kullanıcıların cihazlarında veya piyasa cihazlarında elde ettiğinize benzer bir erişilebilirlik tepkisi elde edebileceğinizi düşünmeyin. Piyasa cihazlarının çoğunda yer alan erişilebilirlik özellikleri, yazılımlar ve desteklenen donanım yetenekleri, geliştirici olarak kullanabileceğiniz API’lar Google’ın ürünüdür. Google servislerini sistemden çıkardığınızda veya zaten olmadığı bir paket ile çalışmaya başladığınızda, Doğrudan uyarı ve bilgilendirme sistemi, akıllı odak izleme, dokunmatik ekran yardımcısı, akıllı olay açıklama sistemi, web erişilebilirlik API’ları benzeri birçok yazılım altyapısını da kaybedersiniz. Anlayacağınız asıl kaybettiğiniz şey gelişmiş erişilebilirlik desteği. Android AOSP içerisindeki erişilebilirlik API maalesef aşırı temel sorunları çözüyor. Kullanıcıyı daha geniş çerçevede bilgilendiren veya deneyime katkı sunan şeyler yapmak isterseniz Google Android paketine ihtiyaç var. Hızlıca gerçekleştirdiğim araştırmalarda Google tarafından sunulduğu kadar geniş bir API yelpazesinin açık kaynak olarak sunulup sunulmadığına baktım, kayda değer bir şey bulamadım açıkçası. Bu üzücü. En temelden uca entegrasyon gerektiren yekpare bir proje tasarlamanız gerekiyorsa o kadar çok şeyi elinizle yapmanız gerekiyor ki Android platformunun esnekliğini bir anda kaybediyorsunuz. Bu durumda Linux tabanlı projeler üretmeyi değerlendirebilirsiniz. Dilerseniz iyice gemileri yakıp çok eski Windows Mobile paketlerini, sırf C++ ile uygulama yazabilmek için kullanabilirsiniz. Tıpkı bazı Braille ekran üreticileri gibi. Bununla birlikte Linux tabanlı paket sistemleri aracılığıyla daha geniş donanımsal yetenekleri Android AOSP projesine nazaran daha az Erişilebilirliği geliştirme eforuyla projenizde kullanabilirsiniz. 2020 Yılında üretilen cihazlarda hatta daha sonraki tarihlerde projelendirilen cihazlarda bile 2007 yılında terkedilen sistemlerin üzerine kurulu işler yapıldığını görmek çok üzücü.
Bugün yani 2022’nin son çeyreğine ulaştığımız şu günlerde, özel amaçlı ve genişletilebilir yeteneklere sahip bir proje tasarlamak isterseniz, bunu Android AOSP ile yapmak istediğinizde, Google Android paketine göre ciddi kayıplarınız vardır. Bu durum ise kısıtlı donanım kaynağı ile çalışmayı imkânsız hale getirir. Google’ın IOT cihazları ve sistemleri için planladığı bir işletim sistemi var ancak hem oradaki erişilebilirliğin muntazam olduğunu söyleyemeyiz hem de maddî kaynakları daha idareli kullanmak istediğinizde Google IOT projeleri oldukça pahalıya patlar. Bununla birlikte, Linux tabanlı birçok proje altyapı kullanmak isterseniz kullanabileceğiniz açık kaynak kodlu API ve SDK’ler var olmakla birlikte, açık kaynak kodlu olmayan da çok fazla örnek vardır. Mevcut durumda ise Windows Mobile’in çok eski sürümleri kullanılmaktadır ki bu hem ortaya koyacağınız cihazın donanım yeteneklerini sınırlayacaktır hem de git gide geliştirici kaynağı ve desteği önceki alternatiflere göre azalmaktadır. Bu durumda onarım olanakları (ki burada kasıt fiziksel onarım olanakları değil) git gide zorlaşmaktadır. Evet Windows Mobile tuşlar ile etkileşime doğal destek verir; ancak dokunmatik ekran desteği sonradan uydurulduğu için etkileyici sayılmaz. Ayrıca desteklediği Bluetooth protokolleri, Codec ve sürümü oldukça eskidir. Günümüzün getirdiği USB 2, 3, 4 gibi yeteneklerden yoksun olmasını saymıyorum bile. Bu ise ortaya konulan ürünleri oldukça ilkel yapıyor. Bu durum, Microsoft söz verdiği gibi Daha modern bir IOT Windows’u ortaya koyuncaya kadar devam edecektir ama şu an var olandan bahsetmiyorum. Arkasında yazılımcı desteğinin önceki saydığım Android ve Linux IOT dağıtımları gibi sistemlerle çalıştığınızda ilerlemeniz önündeki sorunların azalacağını öngörüyorum.
Daha iyisi, daha geniş düşünmeye başladığınızda mümkündür.
“Android AOSP Paketleri Değerlendirmesi” için bir yanıt
[…] Android AOSP Paketleri Değerlendirmesi başlıklı makaleye […]