API düzeyi: 21
Android 5.0 (LOLLIPOP), kullanıcılar ve uygulama geliştiriciler için yeni özellikler sunar. Bu dokümanda, en dikkate değer yeni API'lere giriş sunulmaktadır.
Yayınlanmış bir uygulamanız varsa uygulamanızda dikkate almanız gereken Android 5.0 Davranış Değişiklikleri'ne göz atmayı unutmayın. Yeni API'ler kullanmıyor veya yeni işlevleri hedeflemiyor olsanız bile bu davranış değişiklikleri, Android 5.0 çalıştıran cihazlardaki uygulamanızı etkileyebilir.
Yeni platform özelliklerine genel bir bakış için Android Lollipop'un öne çıkan özellikleri başlıklı makaleyi inceleyin.
Geliştirmeye başlayın
Android 5.0 için uygulama oluşturmaya başlamak istiyorsanız öncelikle Android SDK'sını edinmeniz gerekir. Ardından, Android 5.0 SDK Platformu ve Sistem Görüntüleri'ni indirmek için SDK Yöneticisi'ni kullanın.
Hedef API düzeyinizi güncelleme
Uygulamanızı Android 5.0 çalıştıran cihazlar için daha iyi optimize etmek amacıyla targetSdkVersion
değerini "21"
olarak ayarlayın, uygulamanızı bir Android 5.0 sistem resmine yükleyin, test edin ve ardından güncellenmiş uygulamayı bu değişiklikle yayınlayın.
minSdkVersion
tarafından desteklenmeyen API'leri çalıştırmadan önce sistem API düzeyini kontrol eden koşullar ekleyerek kodunuza eski sürümleri de destekleyecek şekilde Android 5.0 API'lerini kullanabilirsiniz.
Geriye dönük uyumluluğu koruma hakkında daha fazla bilgi edinmek için Farklı Platform Sürümlerini Destekleme bölümünü okuyun.
API düzeylerinin işleyiş şekli hakkında daha fazla bilgi için API düzeyi nedir? başlıklı makaleyi okuyun.
Davranışla ilgili önemli değişiklikler
Daha önce Android için bir uygulama yayınladıysanız uygulamanızın Android 5.0'daki değişikliklerden etkilenebileceğini unutmayın.
Tüm bilgiler için lütfen Android 5.0 Değişiklikleri başlıklı makaleyi inceleyin.
Kullanıcı Arayüzü
Materyal tasarım desteği
Android 5.0, Android'in yeni materyal tasarım stili için destek eklemiştir. Materyal tasarımla görsel açıdan dinamik ve kullanıcılar için doğal hissettiren kullanıcı arayüzü öğesi geçişlerine sahip uygulamalar oluşturabilirsiniz. Bu destek türüne şunlar dahildir:
- Materyal teması
- Gölgeleri göster
RecyclerView
widget'ı- Çekilebilir animasyon ve stil efektleri
- Materyal tasarım animasyonu ve etkinlik geçiş efektleri
- Görünümün durumuna göre görünüm özellikleri için animatörler
- Sizin kontrol ettiğiniz renk paletlerine sahip özelleştirilebilir kullanıcı arayüzü widget'ları ve uygulama çubukları
- XML vektör grafiklerine dayalı animasyonlu ve animasyonsuz çizilebilir öğeler
Uygulamanıza Materyal Tasarım işlevleri ekleme hakkında daha fazla bilgi edinmek için Materyal Tasarım başlıklı makaleyi inceleyin.
Son kullanılanlar ekranında eşzamanlı dokümanlar ve etkinlikler
Önceki sürümlerde, sonlar ekranı kullanıcının en son etkileşimde bulunduğu her uygulama için yalnızca bir görev gösterebiliyordu. Artık uygulamanız, dokümanlar için eşzamanlı ek etkinlikler
için gerektiğinde daha fazla görev açabilir. Bu özellik, kullanıcıların en son ekrandan tek tek etkinlikler ve belgeler arasında hızlıca geçiş yapmasına olanak tanıyarak tüm uygulamalarda tutarlı bir geçiş deneyimi sunar.
Bu tür eşzamanlı görevlere örnek olarak bir web tarayıcısı uygulamasındaki açık sekmeler, üretkenlik uygulamasındaki dokümanlar, bir oyundaki eşzamanlı maçlar veya mesajlaşma uygulamasındaki sohbetler verilebilir. Uygulamanız, ActivityManager.AppTask
sınıfı aracılığıyla görevlerini yönetebilir.
Sistemin etkinliğinizi yeni bir görev olarak değerlendirmesi amacıyla mantıksal bir ara eklemek için etkinliği startActivity()
ile başlatırken FLAG_ACTIVITY_NEW_DOCUMENT
kodunu kullanın. Bu davranışı, manifest dosyanızda <activity> öğesinin documentLaunchMode
özelliğini "intoExisting"
veya "always"
olarak ayarlayarak da elde edebilirsiniz.
Son görevler ekranının dağınık görünmesini önlemek için uygulamanızdan bu ekranda görünebilecek maksimum görev sayısını ayarlayabilirsiniz. Bunu yapmak için <application> özelliğini android:maxRecents
olarak ayarlayın. Şu anda belirtilebilecek maksimum değer kullanıcı başına 50 görevdir (düşük RAM'li cihazlar için 25).
Son aramalar ekranındaki görevler, yeniden başlatmalarda kalıcı olacak şekilde ayarlanabilir. Kayıtlı kalma davranışını kontrol etmek için android:persistableMode özelliğini kullanın. Ayrıca setTaskDescription()
yöntemini çağırarak son kullanılanlar ekranındaki bir etkinliğin rengi, etiketi ve simgesi gibi görsel özelliklerini de değiştirebilirsiniz.
Web Görünümü güncellemeleri
Android 5.0, WebView
uygulamasını Chromium M37 ile güncelleyerek güvenlik ve kararlılık iyileştirmelerinin yanı sıra hata düzeltmeleri de sunar. Android 5.0'da çalışan bir WebView
için varsayılan kullanıcı aracısı dizesi, sürüm numarası olarak 37.0.0.0'ı içerecek şekilde güncellendi.
Bu sürümde, uygulamanızın getUserMedia() gibi web API'leri üzerinden kamera ve mikrofon gibi korumalı kaynaklara erişmesi için WebView
izni vermesini sağlayan PermissionRequest
sınıfı kullanıma sunuluyor. WebView
'e izin vermek için uygulamanızın bu kaynaklara yönelik uygun Android izinlerine sahip olması gerekir.
Yeni onShowFileChooser()
yöntemiyle artık WebView
içinde bir giriş formu kullanabilir, Android cihazdan resim ve dosya seçmek için bir dosya seçici başlatabilirsiniz.
Bu sürüm WebAudio, WebGL ve WebRTC açık standartlarını da destekler. Bu sürüme eklenen yeni özellikler hakkında daha fazla bilgi edinmek için Android için WebView sayfasına bakın.
Ekran görüntüsü yakalama ve paylaşma
Android 5.0, yeni android.media.projection
API'leri sayesinde uygulamanıza ekran yakalama ve ekran paylaşımı özellikleri eklemenize olanak tanır. Bu işlev, örneğin bir video konferans uygulamasında ekran paylaşımını etkinleştirmek istediğinizde kullanışlıdır.
Yeni createVirtualDisplay()
yöntemi, uygulamanızın ana ekranın (varsayılan ekran) içeriğini bir Surface
nesnesine yakalamasına olanak tanır. Uygulamanız daha sonra bu nesneyi ağ üzerinden gönderebilir. API yalnızca güvenli olmayan ekran içeriklerinin yakalanmasına izin verir, sistem sesinin yakalanmasına izin vermez. Uygulamanızın ekran yakalamaya başlaması için önce createScreenCaptureIntent()
yöntemiyle elde edilen bir Intent
kullanarak ekran yakalama iletişim kutusu açarak kullanıcıdan izin istemesi gerekir.
Yeni API'lerin nasıl kullanılacağına dair örnek için örnek projedeki MediaProjectionDemo
sınıfına bakın.
Bildirimler
Kilit ekranı bildirimleri
Android 5.0'daki kilit ekranları bildirimleri gösterebilir. Kullanıcılar, hassas bildirim içeriğinin güvenli kilit ekranında gösterilip gösterilmeyeceğini Ayarlar'dan seçebilir.
Uygulamanız, bildirimleri güvenli kilit ekranı üzerinde gösterildiğinde gösterilen ayrıntı düzeyini kontrol edebilir. Görünürlük düzeyini kontrol etmek için setVisibility()
işlevini çağırın ve aşağıdaki değerlerden birini belirtin:
VISIBILITY_PRIVATE
: Bildiri simgesini gibi temel bilgileri gösterir ancak bildirimin tam içeriğini gizler.VISIBILITY_PUBLIC
: Bildirimin tüm içeriğini gösterir.VISIBILITY_SECRET
: Bildirimin simgesi bile hariç tutularak hiçbir şey gösterilmez.
Görünürlük düzeyi VISIBILITY_PRIVATE
olduğunda, bildirim içeriğinin kişisel ayrıntıları gizleyen çıkartılmış bir sürümünü de sağlayabilirsiniz. Örneğin, bir SMS uygulamasında "3 yeni kısa mesajınız var" şeklinde bir bildirim görüntülenebilir, ancak mesaj içeriğini ve gönderenleri gizler. Bu alternatif bildirimi sağlamak için önce Notification.Builder
kullanarak değişiklik bildirimini oluşturun. Özel bildirim nesnesini oluştururken setPublicVersion()
yöntemi aracılığıyla değişim bildirimini bu nesneye ekleyin.
Bildirim meta verileri
Android 5.0, bildirimleri daha akıllı bir şekilde sıralamak için uygulama bildirimlerinizle
ilişkilendirilen meta verileri kullanır. Meta verileri ayarlamak için bildirimi oluştururken Notification.Builder
içinde aşağıdaki yöntemleri çağırın:
setCategory()
: Cihaz öncelik modundayken (örneğin, bir bildirim gelen aramayı, anlık mesajı veya alarmı temsil ediyorsa) sisteme uygulama bildirimlerinizi nasıl işleyeceğini söyler.setPriority()
: Bildirimi, normal bildirimlerden daha fazla veya daha az önemli olarak işaretler. Öncelik alanıPRIORITY_MAX
veyaPRIORITY_HIGH
olarak ayarlanmış bildirimler, ses veya titreşim de içeriyorsa küçük bir yüzen pencerede görünür.addPerson()
: Bildirimle alakalı bir veya daha fazla kullanıcı eklemenizi sağlar. Uygulamanız, belirtilen kişilerden gelen bildirimleri birlikte gruplandırması gerektiğini sisteme bildirmek veya bu kişilerden gelen bildirimleri daha önemli olacak şekilde sıralamak için bu özelliği kullanabilir.
Grafik
OpenGL ES 3.1 desteği
Android 5.0, OpenGL ES 3.1 için Java arayüzleri ve yerel destek ekler. OpenGL ES 3.1'de sunulan yeni temel işlevler şunlardır:
- Gölgelendiricileri hesapla
- Gölgelendirici nesnelerini ayırma
- Dolaylı çizim komutları
- Çok örnekli ve şablon dokular
- Gölgelendirme dilinde yapılan iyileştirmeler
- Gelişmiş karışım modları ve hata ayıklama için uzantılar
- OpenGL ES 2.0 ve 3.0 ile geriye dönük uyumluluk
Android'de OpenGL ES 3.1 için Java arayüzü GLES31
ile sağlanır. OpenGL ES 3.1'i kullanırken bunu manifest dosyanızda <uses-feature>
etiketi ve android:glEsVersion
özelliğiyle bildirdiğinizden emin olun. Örnek:
<manifest> <uses-feature android:glEsVersion="0x00030001" /> ... </manifest>
Cihazın desteklediği OpenGL ES sürümünü çalışma zamanında nasıl kontrol edeceğiniz de dahil olmak üzere OpenGL ES kullanımı hakkında daha fazla bilgi için OpenGL ES API kılavuzuna bakın.
Android Uzantı Paketi
Bu sürüm, OpenGL ES 3.1'e ek olarak Java arayüzleri ve gelişmiş grafik işlevleri için yerel destek içeren bir uzantı paketi sunar. Bu uzantılar, Android tarafından tek bir paket halinde ele alınır. (ANDROID_extension_pack_es31a
uzantısı mevcutsa uygulamanız paketteki tüm uzantıların mevcut olduğunu varsayabilir ve gölgelendirme dil özelliklerini tek bir #extension
ifadesiyle etkinleştirebilir.)
Uzantı paketi şunları destekler:
- Gölgelendirici depolama tamponları, resimler ve atomlar için garantili parçacık gölgelendirici desteği (OpenGL ES 3.1'de parçacık gölgelendirici desteği isteğe bağlıdır.)
- Mozaik ve geometrik gölgelendiriciler
- ASTC (LDR) doku sıkıştırma biçimi
- Örnek başına interpolasyon ve gölgelendirme
- Bir kare arabelleğindeki her renk eki için farklı karışım modları
Uzantı paketi için Java arayüzü GLES31Ext
ile sağlanır. Uygulamanızın yalnızca uzantı paketini destekleyen cihazlara yüklenmesi gerektiğini uygulama manifestinizde belirtebilirsiniz.
Örnek:
<manifest> <uses-feature android:name=“android.hardware.opengles.aep” android:required="true" /> ... </manifest>
Medya
Gelişmiş kamera özellikleri için Kamera API'si
Android 5.0, hassas fotoğraf çekme ve görüntü işlemeyi kolaylaştırmak için yeni android.hardware.camera2 API'sini kullanıma sunmuştur. Artık getCameraIdList()
ile sisteme bağlı kamera cihazlarına programatik olarak erişebilir ve openCamera()
ile belirli bir cihaza bağlanabilirsiniz.
Görüntü yakalamaya başlamak için bir CameraCaptureSession
oluşturun ve yakalanan görüntülerin gönderileceği Surface
nesneleri belirtin.
CameraCaptureSession
, tek fotoğraf veya seri çekim yapacak şekilde yapılandırılabilir.
Yeni görüntüler çekildiğinde bildirim almak için CameraCaptureSession.CaptureCallback
dinleyiciyi uygulayın ve yakalama isteğinizde ayarlayın. Artık sistem, görüntü yakalama isteğini tamamladığında CameraCaptureSession.CaptureCallback
işleyiciniz onCaptureCompleted()
için bir çağrı alır. Bu çağrı size, görüntü yakalama meta verilerini CaptureResult
içinde sunar.
CameraCharacteristics
sınıfı, uygulamanızın bir cihazda kullanılabilen kamera
özelliklerini algılamasını sağlar. Nesnenin INFO_SUPPORTED_HARDWARE_LEVEL
mülkü, kameranın işlev düzeyini temsil eder.
- Tüm cihazlar en az
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY
donanım düzeyini destekler. Bu seviye, kullanımdan kaldırılanCamera
API'ninkine hemen hemen eşdeğer özelliklere sahiptir. INFO_SUPPORTED_HARDWARE_LEVEL_FULL
donanım düzeyini destekleyen cihazlar, yakalama ve işleme sonrası süreci manuel olarak kontrol edebilir ve yüksek kare hızlarında yüksek çözünürlüklü görüntüler yakalayabilir.
Güncellenen Kamera API'sinin nasıl kullanılacağını görmek için bu sürümdeki Camera2Basic
ve Camera2Video
uygulama örneklerine bakın.
Ses çalma
Bu sürümde AudioTrack
ile ilgili aşağıdaki değişiklikler yapıldı:
- Uygulamanız artık ses verilerini kayan nokta biçiminde (
ENCODING_PCM_FLOAT
) sağlayabilir. Bu da daha fazla dinamik aralık, daha tutarlı hassasiyet ve daha fazla boşluk sağlar. Kayan nokta aritmetiği özellikle ara hesaplamalarda faydalıdır. Oynatma uç noktaları, ses verileri için tam sayı biçimini ve daha düşük bit derinliğini kullanır. (Android 5.0'de dahili ardışık düzenin bölümleri henüz kayan nokta değildir.) - Uygulamanız artık ses verilerini
MediaCodec
tarafından sağlanan biçimle aynı biçimdeByteBuffer
olarak sağlayabilir. WRITE_NON_BLOCKING
seçeneği, bazı uygulamalar için arabelleğe alma ve çoklu iş parçacıklarını basitleştirebilir.
Medya oynatma kontrolü
Sistem kullanıcı arayüzünün medya oynatma işleminizi bilmesi ve albüm kapağını alıp gösterebilmesi için yeni bildirim ve medya API'lerini kullanın.
Yeni MediaSession
ve MediaController
sınıflarıyla, kullanıcı arayüzünde ve hizmette medya oynatmayı artık daha kolay kontrol edebilirsiniz.
Yeni MediaSession
sınıfı, desteği sonlandırılan RemoteControlClient
sınıfının yerini alır ve taşıma kontrolleri ile medya düğmelerini işlemek için tek bir geri çağırma yöntemi grubu sağlar.
Uygulamanız medya oynatma olanağı sunuyorsa ve Android TV veya Wear platformunda çalışıyorsa aynı geri çağırma yöntemleriyle aktarım kontrollerinizi yönetmek için MediaSession
sınıfını kullanın.
Artık yeni MediaController
sınıfıyla kendi medya denetleyici uygulamanızı oluşturabilirsiniz. Bu sınıf, uygulamanızın kullanıcı arayüzü sürecinden medya oynatmayı izlemek ve kontrol etmek için iş parçacığı güvenli bir yol sağlar.
Denetleyici oluştururken, uygulamanızın belirtilen MediaSession
ile etkileşimde bulunabilmesi için bir MediaSession.Token
nesnesi belirtin.
MediaController.TransportControls
yöntemlerini kullanarak, ilgili oturumda medya oynatmayı kontrol etmek için play()
, stop()
, skipToNext()
ve setRating()
gibi komutlar gönderebilirsiniz. Denetleyiciyle, oturumdaki meta verileri ve durum değişikliklerini dinlemek için bir MediaController.Callback
nesnesi de kaydedebilirsiniz.
Ayrıca, yeni Notification.MediaStyle
sınıfını kullanarak bir medya oturumuna bağlı oynatma denetimine izin veren zengin bildirimler oluşturabilirsiniz.
Medyaya göz atma
Android 5.0, uygulamaların yeni android.media.browse API'si aracılığıyla başka bir uygulamanın medya içerik kitaplığına göz atma özelliğini kullanıma sunar. Uygulamanızda medya içeriğini göstermek için MediaBrowserService
sınıfını genişletin. MediaBrowserService
uygulamanız, uygulamaların hizmetiniz aracılığıyla sağlanan medya içeriğini oynatabilmesi için bir MediaSession.Token
erişimi sağlamalıdır.
Bir medya tarayıcı hizmetiyle etkileşimde bulunmak için MediaBrowser
sınıfını kullanın. MediaBrowser
örneği oluştururken MediaSession
için bileşen adını belirtin. Uygulamanız bu tarayıcı örneğini kullanarak ilişkili hizmete bağlanabilir ve bu hizmet üzerinden kullanıma sunulan içeriği oynatmak için bir MediaSession.Token
nesnesi alabilir.
Depolama
Dizin seçimi
Android 5.0, kullanıcıların bir dizin alt ağacının tamamını seçmesine olanak tanıyacak şekilde Depolama Alanı Erişim Çerçevesi'ni genişletir. Böylece uygulamalar, her öğe için kullanıcı onayı gerekmeden, içerdiği tüm dokümanlara okuma/yazma erişimi elde eder.
Bir dizin alt ağacı seçmek için bir OPEN_DOCUMENT_TREE
amacı derleyip gönderin. Sistem, alt ağaç seçimini destekleyen tüm DocumentsProvider
örneklerini göstererek kullanıcının göz atmasına ve bir dizin seçmesine olanak tanır. Döndürülen URI, seçilen alt ağa erişimi temsil eder. Ardından alt ağacı keşfetmek için query()
ile birlikte buildChildDocumentsUriUsingTree()
ve buildDocumentUriUsingTree()
seçeneklerini kullanabilirsiniz.
Yeni createDocument()
yöntemi, alt ağacın altında herhangi bir yerde yeni dokümanlar veya dizinler oluşturmanıza olanak tanır. Mevcut dokümanları yönetmek için renameDocument()
ve deleteDocument()
öğelerini kullanın.
Bu aramaları yapmadan önce COLUMN_FLAGS
sağlayıcısının desteğini doğrulamak için COLUMN_FLAGS
kontrol edin.
Bir DocumentsProvider
uyguluyorsanız ve alt ağaç seçimini desteklemek istiyorsanız isChildDocument()
'ü uygulayın ve COLUMN_FLAGS
'ınıza FLAG_SUPPORTS_IS_CHILD
ekleyin.
Android 5.0, uygulamanızın MediaStore
'e dahil edilecek medya dosyalarını yerleştirebileceği, ortak depolama alanında pakete özel yeni dizinleri de kullanıma sunar. Yeni getExternalMediaDirs()
, tüm ortak depolama cihazlarındaki bu dizinlerin yollarını döndürür. getExternalFilesDir()
işlevine benzer şekilde, uygulamanızın döndürülen yollara erişmek için ek izinlere ihtiyacı yoktur. Platform, bu dizinlerdeki yeni medyaları düzenli olarak tarar. Ancak yeni içerikleri açıkça taramak için MediaScannerConnection
hizmetini de kullanabilirsiniz.
Kablosuz ve Bağlantı
Çoklu ağ bağlantıları
Android 5.0, uygulamanızın belirli özelliklere sahip kullanılabilir ağları dinamik olarak taramasına ve bunlarla bağlantı kurmasına olanak tanıyan yeni çoklu ağ API'leri sunar. Bu işlev, uygulamanız supL, MMS veya operatör faturalandırması ağı gibi özel bir ağ gerektiriyorsa ya da belirli bir aktarım protokolü türünü kullanarak veri göndermek istediğinizde yararlı olur.
Uygulamanızdan dinamik olarak bir ağ seçmek ve ağa bağlanmak için aşağıdaki adımları izleyin:
ConnectivityManager
oluşturun.NetworkRequest
nesnesi oluşturmak ve uygulamanızın ilgilendiği ağ özelliklerini ile aktarım türünü belirtmek içinNetworkRequest.Builder
sınıfını kullanın.- Uygun ağları taramak için
requestNetwork()
veyaregisterNetworkCallback()
işlevini çağırın veNetworkRequest
nesnesini veConnectivityManager.NetworkCallback
'ın bir uygulamasını iletin. Uygun bir ağ algılandığında etkin olarak geçiş yapmak istiyorsanızrequestNetwork()
yöntemini kullanın. Yalnızca taranan ağlarla ilgili bildirimleri etkin olarak geçiş yapmadan almak için bunun yerineregisterNetworkCallback()
yöntemini kullanın.
Sistem uygun bir ağ algıladığında ağa bağlanır ve onAvailable()
geri çağırma işlevini çağırır. Ağ hakkında ek bilgi almak veya trafiği seçili ağı kullanacak şekilde yönlendirmek için geri çağırma işlevindeki Network
nesnesini kullanabilirsiniz.
Bluetooth Düşük Enerji
Android 4.3, merkezi rolde Bluetooth Düşük Enerji (Bluetooth LE) için platform desteğini kullanıma sundu. Android 5.0'da, Android cihazlar artık Bluetooth LE çevre birimi cihazı işlevi görebilir. Uygulamalar, varlıklarını yakındaki cihazlara bildirmek için bu özelliği kullanabilir. Örneğin, bir cihazın pedometre veya sağlık monitörü olarak işlev görmesine ve verilerini başka bir Bluetooth LE cihazla paylaşmasına olanak tanıyan uygulamalar oluşturabilirsiniz.
Yeni android.bluetooth.le
API'leri, uygulamalarınızın reklam yayınlamasını, yanıtları taramasını ve yakındaki Bluetooth LE cihazlarla bağlantı kurmasını sağlar. Yeni reklamcılık ve tarama özelliklerini kullanmak için manifest dosyanıza BLUETOOTH_ADMIN
iznini ekleyin. Kullanıcılar uygulamanızı Play Store'dan güncellerken veya indirirken uygulamanıza aşağıdaki izni vermeleri istenir: "Bluetooth bağlantı bilgileri: Uygulamanın, yakındaki Bluetooth cihazlarına yayın yapma veya bu cihazlar hakkında bilgi edinme dahil olmak üzere Bluetooth'u kontrol etmesine izin verir."
Diğer cihazların uygulamanızı keşfedebilmesi için Bluetooth LE reklamcılığına başlamak için startAdvertising()
numaralı telefonu arayın ve AdvertiseCallback
sınıfının uygulanmasını sağlayın. Geri çağırma nesnesi, reklamcılık işleminin başarılı veya başarısız olduğuna dair bir rapor alır.
Android 5.0, uygulamanızın yalnızca ilgilendiği belirli cihaz türlerini tarayabilmesi için ScanFilter
sınıfını kullanıma sunar. Bluetooth LE cihazlarını taramaya başlamak için startScan()
numarasını arayın ve bir filtre listesi iletin. Yöntem çağrısında, Bluetooth LE reklamı bulunduğunda bildirmek için ScanCallback
'ün bir uygulamasını da sağlamanız gerekir.
NFC geliştirmeleri
Android 5.0, NFC'nin daha geniş ve daha esnek kullanımını sağlamak için şu geliştirmeleri eklemiştir:
- Android Beam artık paylaş menüsünde kullanılabilir.
- Uygulamanız, veri paylaşmak için
invokeBeam()
numaralı telefonu arayarak kullanıcının cihazındaki Android Beam'i çağırabilir. Bu sayede, kullanıcının veri aktarımını tamamlamak için cihazı NFC özellikli başka bir cihaza manuel olarak dokundurması gerekmez. - UTF-8 metin verileri içeren bir NDEF kaydı oluşturmak için yeni
createTextRecord()
yöntemini kullanabilirsiniz. - Ödeme uygulaması geliştiriyorsanız artık
registerAidsForService()
numaralı telefonu arayarak NFC uygulama kimliğini (AID) dinamik olarak kaydedebilirsiniz. Belirli bir etkinlik ön plandayken kullanılması gereken tercih edilen kart emülasyonu hizmetini ayarlamak içinsetPreferredService()
değerini de kullanabilirsiniz.
Project Volta
Android 5.0, yeni özelliklerin yanı sıra pil ömründeki iyileştirmelere de önem verir. Uygulamanızın güç tüketimini anlayıp optimize etmek için yeni API'leri ve aracı kullanın.
İşleri planlama
Android 5.0, sistemin daha sonra eşzamansız olarak veya belirli koşullar altında (örneğin, cihaz şarj olurken) çalışması için işler tanımlayarak pil ömrünü optimize etmenizi sağlayan yeni bir JobScheduler
API'si sunmaktadır. İş planlaması şu durumlarda yararlıdır:
- Uygulamada, kullanıcıya yönelik olmayan ve erteleyebileceğiniz çalışmalar var.
- Uygulama, birim takılıyken yapmayı tercih ettiğiniz işlemler içeriyor.
- Uygulamada ağ erişimi veya kablosuz bağlantı gerektiren bir görev var.
- Uygulamada, düzenli aralıklarla toplu olarak çalıştırmak istediğiniz birkaç görev vardır.
Çalışma birimi, bir JobInfo
nesnesi tarafından kapsüllenir.
Bu nesne, planlama ölçütlerini belirtir.
Planlanmış görevin nasıl çalışacağını yapılandırmak için JobInfo.Builder
sınıfını kullanın. Görevi aşağıdakiler gibi belirli
koşullar altında çalışacak şekilde planlayabilirsiniz:
- Cihaz şarj olurken başlat
- Cihaz sınırsız bir ağa bağlandığında başlat
- Cihaz boşta kaldığında başlat
- Belirli bir son tarihten önce veya minimum bir gecikmeyle bitirme
Örneğin, görevinizi sınırsız bir ağda çalıştırmak için aşağıdaki gibi bir kod ekleyebilirsiniz:
Kotlin
val uploadTask: JobInfo = JobInfo.Builder( jobId, serviceComponent /* JobService component */ ).run { setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED) build() } val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler jobScheduler.schedule(uploadTask)
Java
JobInfo uploadTask = new JobInfo.Builder(jobId, serviceComponent /* JobService component */) .setRequiredNetworkCapabilities(JobInfo.NETWORK_TYPE_UNMETERED) .build(); JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(uploadTask);
Cihaz sabit güce sahipse (yani 2 dakikadan uzun süredir fişe takılıysa ve pil sağlıklı seviyede) sistem, çalıştırılmaya hazır olan planlanmış bir işi, işin son tarihi dolmamış olsa bile çalıştırır.
JobScheduler
API'nin nasıl kullanılacağına dair bir örnek görmek için bu sürümdeki JobSchedulerSample
uygulama örneğine bakın.
Pil kullanımı için geliştirici araçları
Yeni dumpsys batterystats
komutu, cihazdaki pil kullanımıyla ilgili ilginç istatistiksel veriler oluşturur ve bu verileri benzersiz kullanıcı kimliğine (UID) göre düzenler. İstatistikler şunları içerir:
- Pille ilgili etkinliklerin geçmişi
- Cihazın dünya geneli istatistikleri
- UID ve sistem bileşeni başına yaklaşık güç kullanımı
- Paket başına mobil uygulama başına ms
- Sistem UID'sinin toplu istatistikleri
- Uygulama UID'si toplu istatistikleri
Çıktıyı uyarlamaya yönelik çeşitli seçenekler hakkında bilgi edinmek için --help
seçeneğini kullanın. Örneğin, cihazın son şarjından bu yana belirli bir uygulama paketinin pil kullanım istatistiklerini yazdırmak için şu komutu çalıştırın:
$ adb shell dumpsys batterystats --charged <package-name>
Günlüklerden güçle ilgili etkinliklerin HTML görselleştirmesini oluşturmak için dumpsys
komutunun çıkışındaki Battery Historian aracını kullanabilirsiniz. Bu bilgiler, pille ilgili sorunları anlamanızı ve teşhis etmenizi kolaylaştırır.
İş Yerinde ve Eğitimde Android
Yönetilen temel hazırlık
Android 5.0, kurumsal ortamda uygulama çalıştırmak için yeni işlevler sunar. Kullanıcının mevcut kişisel hesabı varsa cihaz yöneticisi cihaza ortak ancak ayrı bir yönetilen profil eklemek için yönetilen temel hazırlık işlemi başlatabilir. Yönetilen profillerle ilişkilendirilmiş uygulamalar, kullanıcının Başlatıcı'sında, son uygulamalar ekranında ve bildirimlerinde yönetilmeyen uygulamaların yanında görünür.
Yönetilen temel hazırlık işlemini başlatmak için ACTION_PROVISION_MANAGED_PROFILE
dosyasını bir Intent
içinde gönderin. Çağrı başarılı olursa sistem onProfileProvisioningComplete()
geri aramasını tetikler.
Ardından, bu yönetilen profili etkinleştirmek için setProfileEnabled()
'yi arayabilirsiniz.
Varsayılan olarak, yönetilen profilde uygulamaların yalnızca küçük bir kısmı etkinleştirilir.
enableSystemApp()
numaralı telefonu arayarak yönetilen profile başka uygulamalar yükleyebilirsiniz.
Bir Launcher uygulaması geliştiriyorsanız mevcut kullanıcı ve ilişkili tüm yönetilen profiller için başlatılabilir etkinliklerin listesini almak üzere yeni LauncherApps
sınıfını kullanabilirsiniz. Başlatıcınız, çekilebilir simgeye iş rozeti ekleyerek yönetilen uygulamaları görsel olarak belirgin hale getirebilir. Rozetli simgeyi almak için getUserBadgedIcon()
numaralı telefonu arayın.
Yeni işlevin nasıl kullanılacağını öğrenmek için bu sürümdeki BasicManagedProfile
uygulama örneğine bakın.
Cihaz sahibi
Android 5.0, cihaz sahibi uygulaması dağıtma özelliğini kullanıma sunar. Cihaz sahibi, ikincil kullanıcılar oluşturup kaldırma ve cihazdaki genel ayarları yapılandırma gibi ek özelliklere sahip özel bir cihaz yöneticisi türüdür. Cihaz sahibi uygulamanız, yönetilen cihazlardaki yapılandırma, güvenlik ve uygulamaların ayrıntılı kontrolünü ele almak için DevicePolicyManager
sınıfındaki yöntemleri kullanabilir.
Bir cihazın aynı anda yalnızca bir etkin cihaz sahibi olabilir.
Cihaz sahibini dağıtmak ve etkinleştirmek için cihaz henüz temel hazırlığı yapılmamış durumdayken bir programlama uygulamasından cihaza NFC veri aktarımı yapmanız gerekir. Bu veri aktarımı, Yönetilen temel hazırlık bölümünde açıklanan temel hazırlık amacındaki bilgileri gönderir.
Ekran sabitleme
Android 5.0, kullanıcıların görevinizden ayrılmasını veya bildirimlerle ilgilenmelerini geçici olarak kısıtlamanıza olanak tanıyan yeni bir ekran sabitleme API'sini kullanıma sunuyor. Bu, örneğin Android'de yüksek riskli değerlendirme şartlarını desteklemek için bir eğitim uygulaması veya tek amaçlı ya da kiosk uygulaması geliştiriyorsanız kullanılabilir. Uygulamanız ekran sabitlemeyi etkinleştirdikten sonra, kullanıcılar uygulamanız moddan çıkana kadar bildirimleri göremez, diğer uygulamalara erişemez veya ana ekrana dönemez.
Ekran sabitlemeyi etkinleştirmenin iki yolu vardır:
- Manuel olarak: Kullanıcılar, ekran sabitlemeyi Ayarlar > Güvenlik > Ekran Sabitleme'den etkinleştirebilir ve son kullanılanlar ekranındaki yeşil raptiye simgesine dokunarak sabitlemek istedikleri görevleri seçebilir.
- Programlı olarak: Ekran sabitlemeyi programatik olarak etkinleştirmek için uygulamanızdan
startLockTask()
işlevini çağırın. İstekte bulunan uygulama cihaz sahibi değilse kullanıcıdan onay istenir. Cihaz sahibi uygulamaları, uygulamaların kullanıcı onayı adımı olmadan sabitlenmesini sağlamak içinsetLockTaskPackages()
yöntemini çağırabilir.
Görev kilitleme etkin olduğunda aşağıdaki davranış gerçekleşir:
- Durum çubuğu boştur, kullanıcı bildirimleri ve durum bilgileri gizlidir.
- Ana Sayfa ve Son Uygulamalar düğmeleri gizlenir.
- Diğer uygulamalar yeni etkinlik başlatamaz.
- Mevcut uygulama, yeni görevler oluşturmadığı sürece yeni etkinlikler başlatabilir.
- Ekran sabitleme özelliği bir cihaz sahibi tarafından çağrıldığında, kullanıcı, uygulama
stopLockTask()
çağırana kadar uygulamanıza kilitli kalır. - Ekran sabitleme, cihaz sahibi olmayan başka bir uygulama veya doğrudan kullanıcı tarafından etkinleştirilirse kullanıcı hem Geri hem de Son Uygulamalar düğmelerini basılı tutarak çıkabilir.
Baskı Çerçevesi
PDF'yi bit eşlem olarak oluştur
Artık yeni PdfRenderer
sınıfını kullanarak PDF doküman sayfalarını baskı için bitmap resimlere dönüştürebilirsiniz. Sistemin yazdırılabilir içeriği yazacağı, aranabilir (yani içeriğe rastgele erişilebilir) bir ParcelFileDescriptor
belirtmeniz gerekir.
Uygulamanız, openPage()
ile oluşturma için bir sayfa alabilir. Ardından, açık PdfRenderer.Page
öğesini bit eşlem haline getirmek için render()
yöntemini çağırabilir. Dokümanın yalnızca bir bölümünü bitmap resmine dönüştürmek isterseniz (örneğin, dokümanı yakınlaştırmak için döşeme oluşturma özelliğini uygulamak üzere) ek parametreler de ayarlayabilirsiniz.
Yeni API'lerin nasıl kullanılacağına dair örnek için PdfRendererBasic
örnek
Sistem
Uygulama kullanım istatistikleri
Artık yeni android.app.usage
API ile Android cihazlardaki uygulama kullanım geçmişine erişebilirsiniz. Bu API, kullanımdan kaldırılan getRecentTasks()
yönteminden daha ayrıntılı kullanım bilgileri sağlar.
Bu API'yi kullanmak için önce manifest dosyanızda "android.permission.PACKAGE_USAGE_STATS"
iznini belirtmeniz gerekir.
Kullanıcının, Ayarlar > Güvenlik > Uygulamalar bölümünden bu uygulama için kullanım erişimi vermesi de gerekir.
Sistem, kullanım verilerini uygulama bazında toplar ve verileri günlük, haftalık, aylık ve yıllık aralıklarla birleştirir. Sistemin bu verileri sakladığı maksimum süre aşağıdaki gibidir:
- Günlük veriler: 7 gün
- Haftalık veriler: 4 hafta
- Aylık veriler: 6 ay
- Yıllık veriler: 2 yıl
Sistem, her uygulama için aşağıdaki verileri kaydeder:
- Uygulamanın son kullanım tarihi
- Uygulamanın ilgili zaman aralığında ön planda bulunduğu toplam süre (gün, hafta, ay veya yıla göre)
- Bir bileşen (paket ve etkinlik adıyla tanımlanır) gün boyunca ön plana veya arka plana taşındığında kaydedilen zaman damgası
- Cihaz yapılandırması değiştiğinde (ör. döndürme nedeniyle cihaz yönünün değişmesi) zaman damgası yakalama
Test ve Erişilebilirlik
Test ve erişilebilirlikle ilgili iyileştirmeler
Android 5.0, test ve erişilebilirlik için aşağıdaki desteği ekler:
- Yeni
getWindowAnimationFrameStats()
vegetWindowContentFrameStats()
yöntemleri, pencere animasyonları ve içerikler için kare istatistiklerini yakalar. Bu yöntemler, uygulamanın sorunsuz bir kullanıcı deneyimi sağlamak için yeterli yenileme sıklığında çerçeve oluşturup oluşturmadığını değerlendirmek amacıyla araç testleri yazmanızı sağlar. - Yeni
executeShellCommand()
yöntemi, araç testinizden kabuk komutlarını çalıştırmanızı sağlar. Komut yürütme işlemi,adb shell
öğesini cihaza bağlı bir ana makineden çalıştırmaya benzer. Bu sayededumpsys
,am
,content
vepm
gibi kabuk tabanlı araçları kullanabilirsiniz. - Erişilebilirlik API'lerini kullanan erişilebilirlik hizmetleri ve test araçları (ör.
UiAutomator
), artık ekrandaki görme engelli olmayan kullanıcıların etkileşimde bulunabileceği pencerelerin özellikleri hakkında ayrıntılı bilgi edinebilir.AccessibilityWindowInfo
nesnelerinin listesini almak için yenigetWindows()
yöntemini çağırın. - Yeni
AccessibilityNodeInfo.AccessibilityAction
sınıfı, birAccessibilityNodeInfo
üzerinde gerçekleştirilecek standart veya özelleştirilmiş işlemleri tanımlamanıza olanak tanır. YeniAccessibilityNodeInfo.AccessibilityAction
sınıfı, daha önceAccessibilityNodeInfo
sınıfında bulunan işlemlerle ilgili API'lerin yerini alır. - Android 5.0, uygulamanızdaki metin okuma sentezi üzerinde daha ayrıntılı kontrol
sağlar. Yeni
Voice
sınıfı, uygulamanızın belirli yerel ayarlar, kalite ve gecikme derecelendirmesi ve metin okuma motoruna özgü parametrelerle ilişkilendirilmiş ses profillerini kullanmasına olanak tanır.
IME
Giriş dilleri arasında daha kolay geçiş
Android 5.0 sürümünden itibaren kullanıcılar, platform tarafından desteklenen tüm giriş yöntemi düzenleyicileri (IME) arasında daha kolay geçiş yapabiliyor. Belirtilen geçiş işlemini gerçekleştirmek (genellikle dokunmatik klavyedeki dünya simgesine dokunmak) bu tür tüm IME'ler arasında geçiş yapar. Davranıştaki bu değişiklik, shouldOfferSwitchingToNextInputMethod()
yöntemi tarafından uygulanır.
Ayrıca çerçeve artık sonraki IME'nin geçiş mekanizması içerip içermediğini (ve dolayısıyla bu IME'nin kendisinden sonraki IME'ye geçişi destekleyip desteklemediğini) kontrol eder. Geçiş mekanizması olan IME, olmayan IME'ye geçmez. Bu davranış değişikliği switchToNextInputMethod()
yöntemi tarafından uygulanır.
Güncellenmiş IME geçiş API'lerinin nasıl kullanılacağına dair bir örnek görmek için bu sürümdeki güncellenmiş yumuşak klavye uygulama örneğine bakın. IME'ler arasında geçiş yapma özelliğini uygulama hakkında daha fazla bilgi edinmek için Giriş Yöntemi Oluşturma başlıklı makaleyi inceleyin.
Manifest Beyanlarını
Beyan edilen gerekli özellikler
Aşağıdaki değerler artık <uses-feature>
öğesinde desteklenmektedir. Böylece, uygulamanızın yalnızca ihtiyaç duyduğu özellikleri sağlayan cihazlara yüklendiğinden emin olabilirsiniz.
FEATURE_AUDIO_OUTPUT
FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING
FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR
FEATURE_CAMERA_CAPABILITY_RAW
FEATURE_CAMERA_LEVEL_FULL
FEATURE_GAMEPAD
FEATURE_LIVE_TV
FEATURE_MANAGED_USERS
FEATURE_LEANBACK
FEATURE_OPENGLES_EXTENSION_PACK
FEATURE_SECURELY_REMOVES_USERS
FEATURE_SENSOR_AMBIENT_TEMPERATURE
FEATURE_SENSOR_HEART_RATE_ECG
FEATURE_SENSOR_RELATIVE_HUMIDITY
FEATURE_VERIFIED_BOOT
FEATURE_WEBVIEW
Kullanıcı izinleri
Uygulamanızın belirli API'lere erişmek için ihtiyaç duyduğu izinleri beyan etmek üzere <uses-permission>
öğesinde artık aşağıdaki izin desteklenmektedir.
BIND_DREAM_SERVICE
: API düzeyi 21 ve sonraki sürümleri hedeflerken bu izin, yalnızca sistemin bağlanabilmesi için Daydream hizmeti tarafından gereklidir.