Merhaba sevgili Android severler,
Ağustos ayında Android 8’in (Android Oreo API 27) açıklanması ile birlikte hepimizi yeni bir heyecan dalgası yakaladı. Google’ın Pixel ya da Nexus marka telefonları çoktan Android Oreo’ya güncellendiler. Geçtiğimiz hafta ise Android 8.1 Developer Preview yani geliştiriciler için sunulan versiyon duyuruldu. Bu yazımızda Android 8.1 ile gelen yenilikleri kısaca açıklayacağız.
NEURAL NETWORKS API
Yapay zeka ve makine öğrenmesi son dönemin en popüler konusu. Bunların temelinde de Neural network denilen yapay sinir ağları mevcut. Android 8.1 ile birlikte gelen Neural Networks API (NNAPI) sayesinde, Android cihazlar üzerinde çalışan yapay zeka uygulamaları geliştirilmesini kolaylaştırıyor. Bu API sayesinde yapay zeka uygulamalarında kullanılan model üretme, eğitme ve çalıştırma işlemleri yapılırken cihazın donanımsal kaynaklarının daha verimli kullanılması sağlanıyor. (Hardware accelerated denilen yöntemler.) Bunun beraberinde çok yakında Tensorflow’un düşük donanımlı cihazlar için olan versiyonu Tensorflow Lite’ın da çok yakında çıkacağı açıklandı.
DÜŞÜK HAFIZALI CİHAZLAR İÇİN OPTİMİZASYON
Android’in bu sürümünde düşük hafızalı cihazları cihazlara daha fazla önem veriliyor. Bilindiği gibi düşük hafızalı cihazları ayırt edebilmek için API 19’da ActivityManager.isLowRamDevice() diye bir method gelmişti. Bu metod, cihazın hafızası 1 GB’dan az ise TRUE döndürüyor.
Örneğin:
<uses-feature android:name="android.hardware.ram.low" /> <uses-feature android:name="android.hardware.ram.normal" />
BİLDİRİMLER
Android Oreo ile pil ömrü ve kullanıcı deneyimi açısından uygulamalara bazı sınırlamalar getirildi. Bildirimler de bundan nasibini almaya devam ediyor. Sesli bildirim mesajları için saniyede bir bildirim şeklinde bir kısıtlama geldi. Yani uygulamanız sesli bildirim atarken bir saniye içinde birden fazla bildirim atarsa sadece bir tanesinin sesi duyulacak. Kalan bildirimler gösterilse de sessiz olacak. Bizim için büyük bir kayıp değil aslında. :)
EDITTEXT GÜNCELLEMESİ
Şuan Android Studio’ya girip Edittext.getText() yazdığınız zaman size CharSequence türünden bir nesne döndürecektir. Fakat Android 8.1 (API 27) ile birlikte artık Editable döndürecek. Endişelenmenize gerek yok, eski uygulamalarınız hata vermeyecek çünkü Editable sınıfı CharSequence arayüzünü implemente ediyor. Yani geriye yönelik uyumlu bir değişiklik.
DAHA GÜVENLİ WEBVİEW
Uygulama içindeki WebView’ların daha güvenli çalışması için Safe Browsing API (Güvenli Tarama Arayüzü) geldi. Bu sayede uygulama içindeki webview’dan, Google’ın tehlikeli olarak belirlediği bir web sayfasına girildiği zaman uygulama bu durumu anlayarak kullanıcıyı uyaracak. Devam etmek ya da geri dönmek kullanıcının tercihine bağlı.
Bunun için AndroidManifest.xml dosyasına aşağıdaki meta-data tag’ini eklememiz gerekiyor.
<meta-data android:name="android.webkit.WebView.EnableSafeBrowsing" android:value="true" />
Ayrıca webView’ler için startSafeBrowsing() isimli yeni bir metod da bizi bekliyor.
VİDEO’DAN KARE YAKALAMA
MediaMetaDataRetriever sınıfının artık getScaledFrameAtTime() isimli yeni bir metodu var. Bu metod video içinde istenilen ana ait görüntüyü yakalayarak bize Bitmap olarak döndürebiliyor. Dönen Bitmap’in boyutlarını da ayarlama yeteneği var.
Daha önce var olan getFrameAtTime() metoduna göre daha performanslı çalıştığı için Google tarafından tavsiye ediliyor.
SHARED MEMORY API
Sıklıkla kullandığımız SharedPreferences yapısına alternatif bir sınıf. Anonim bir ortak hafıza alanı üzerine yazıp, okumayı sağlıyor. Yazma ve okuma işlemleri için güvenlik seviyesi belirlenebiliyor. Ayrıca bir SharedMemory nesnesi Parcellable arayüzünü implemente ettiği için Activity’ler arasında da rahatlıkla gönderilebiliyor.
NDK içindeki ASharedMemory sınıfıyla da uyumlu olduğu için NDK tarafında da kullanılarak büyük miktarda verinin uygulamalar arası transferine imkan sağlıyor.
WALLPAPER COLORS API
Cihazınızın duvar resmindeki renkleri tespit etmek için geliştirilen bu API sayesinde uygulamamıza farklı renklerde dinamik bir stil kazandırabiliyoruz. Özellikle Launcher uygulamaları için güzel bir özellik olabilir. WallPaperColor sınıfını buradan inceleyebilirsiniz.