API Düzeyi: 21
Android 5.0 (LOLLIPOP) kullanıcılar ve uygulama geliştiriciler için yeni özellikler sunar. Bu belgede en önemli yeni API'ler tanıtılmaktadır.
Yayınlanmış bir uygulamanız varsa uygulamanızda dikkate almanız gereken Android 5.0 Davranış Değişiklikleri'ne göz attığınızdan emin olun. Bu davranış değişiklikleri, yeni API'ler kullanmasanız veya yeni işlevleri hedeflemeseniz bile Android 5.0 cihazlardaki uygulamanızı etkileyebilir.
Yeni platform özelliklerini genel hatlarıyla incelemek için Android Lollipop'ta öne çıkan özellikler sayfasına göz atın.
Geliştirmeye başlayın
Android 5.0 için uygulama derlemeye başlamak için önce Android SDK'sını edinmeniz gerekir. Ardından SDK Yöneticisi'ni kullanarak Android 5.0 SDK Platformu ve Sistem Görüntülerini indirin.
Hedef API düzeyinizi güncelleyin
Uygulamanızı Android 5.0 çalıştıran cihazlar için daha iyi optimize etmek amacıyla targetSdkVersion
özelliğini "21"
olarak ayarlayın, uygulamanızı bir Android 5.0 sistem görüntüsüne yükleyin, test edin, ardından bu değişiklikle güncellenmiş uygulamayı yayınlayın.
Hem Android 5.0 API'lerini kullanabilir hem de minSdkVersion
tarafından desteklenmeyen API'leri çalıştırmadan önce kodunuza sistem API düzeyini kontrol eden koşullar ekleyerek eski sürümleri destekleyebilirsiniz.
Geriye dönük uyumluluğun sürdürülmesi 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.
Önemli davranış değişiklikleri
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'ne bakın.
Kullanıcı Arayüzü
Materyal tasarım desteği
Android 5.0, Android'in yeni materyal tasarım stili için destek sağlar. Görsel olarak dinamik olan, malzeme tasarımına sahip ve kullanıcılara doğal gelen kullanıcı arayüzü öğesi geçişlerine sahip uygulamalar oluşturabilirsiniz. Bu destek kapsamında şunlar yer alır:
- 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 dayalı olarak görünüm özellikleri için animatörler
- Özelleştirilebilir kullanıcı arayüzü widget'ları ve kontrol ettiğiniz renk paletlerine sahip uygulama çubukları
- XML vektör grafiklerine dayanan animasyonlu ve animasyonsuz çekilebilir birimler
Uygulamanıza materyal tasarım işlevi ekleme hakkında daha fazla bilgi edinmek için Materyal Tasarım konusuna bakın.
Son kullanılanlar ekranında eşzamanlı dokümanlar ve etkinlikler
Önceki sürümlerde, son kullanılanlar ekranı kullanıcının en son etkileşim kurduğu her uygulama için yalnızca bir görev görüntüleyebiliyordu. Artık uygulamanız dokümanlarla ilgili olarak eşzamanlı ek etkinlikler için gerektiğinde daha fazla görev açabilir. Bu özellik, kullanıcıların tüm uygulamalar arasında tutarlı bir geçiş deneyimiyle son kullanılanlar ekranındaki bireysel etkinlikler ve dokümanlar arasında hızlıca geçiş yapmalarını sağlayarak çoklu görevleri kolaylaştırır.
Eşzamanlı görevlere örnek olarak bir web tarayıcısı uygulamasındaki açık sekmeler, bir üretkenlik uygulamasındaki dokümanlar, bir oyundaki eş zamanlı eşleşmeler veya mesajlaşma uygulamasındaki sohbetler verilebilir. Uygulamanız, ActivityManager.AppTask
sınıfını kullanarak görevleri yönetebilir.
Sistemin etkinliğinizi yeni bir görev olarak ele alması amacıyla mantıksal bir ara eklemek için etkinliği startActivity()
ile başlatırken FLAG_ACTIVITY_NEW_DOCUMENT
kullanın. Bu davranışı, manifest'inizde <activity> öğesinin documentLaunchMode
özelliğini "intoExisting"
veya "always"
değerine ayarlayarak da elde edebilirsiniz.
Son kullanılanlar ekranında karışıklık olmaması için, o ekranda görünebilecek, uygulamanızdan maksimum görev sayısını ayarlayabilirsiniz. Bunu yapmak için <application> özelliğini android:maxRecents
ayarlayın. Şu anda kullanıcı başına 50 görev (düşük RAM'li cihazlar için 25) belirtilebilir.
Son kullanılanlar ekranındaki görevler, yeniden başlatmalarda da devam edecek şekilde ayarlanabilir. Kalıcılık davranışını kontrol etmek için android:persistableMode özelliğini kullanın. Son kullanılanlar ekranında bir etkinliğin görsel özelliklerini (örneğin, etkinliğin rengi, etiketi ve simgesi) setTaskDescription()
yöntemini çağırarak da değiştirebilirsiniz.
Web Görünümü güncellemeleri
Android 5.0, WebView
uygulamasını Chromium M37'ye güncelleyerek güvenlik ve kararlılıkla ilgili geliştirmelerin yanı sıra hata düzeltmeleri getiriyor. Android 5.0 üzerinde ç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üncellenmiştir.
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 vermesine olanak tanıyan PermissionRequest
sınıfını kullanıma sunduk. WebView
izinlerini belirleyebilmek için uygulamanızın bu kaynaklar için uygun Android izinlerine sahip olması gerekir.
Yeni onShowFileChooser()
yöntemiyle artık WebView
içinde bir giriş formu alanı kullanabilir ve Android cihazdan resim ve dosya seçmek için bir dosya seçici başlatabilirsiniz.
Ayrıca 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 Web Görünümü bölümüne bakın.
Ekran görüntüsü alma ve paylaşma
Android 5.0, yeni android.media.projection
API'leriyle 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 istiyorsanız yararlı olur.
Yeni createVirtualDisplay()
yöntemi, uygulamanızın ana ekranın (varsayılan ekran) içeriğini bir Surface
nesnesine kaydetmesini sağlar. Uygulamanız daha sonra ağ üzerinden gönderebilir. API yalnızca güvenli olmayan ekran içeriklerinin yakalanmasına izin verir, sistem sesinin yakalanmasına izin vermez. Ekran görüntüsü almaya başlamak için uygulamanızın önce createScreenCaptureIntent()
yöntemiyle edinilen bir Intent
kullanarak ekran görüntüsü
iletişim kutusu açıp kullanıcının iznini istemesi
gerekir.
Yeni API'lerin nasıl kullanılacağına dair bir örnek için örnek projedeki MediaProjectionDemo
sınıfına bakın.
Bildirimler
Kilit ekranı bildirimleri
Android 5.0'daki kilit ekranları, bildirim gösterebilir. Kullanıcılar, Ayarlar aracılığıyla hassas bildirim içeriğinin güvenli bir kilit ekranı üzerinde gösterilmesine izin verip vermemeyi seçebilir.
Uygulamanız, bildirimleri güvenli kilit ekranı üzerinde görüntülendiğinde görülebilen ayrıntı düzeyini kontrol edebilir. Görünürlük düzeyini kontrol etmek için setVisibility()
yöntemini çağırın ve şu değerlerden birini belirtin:
VISIBILITY_PRIVATE
: Bildirimin simgesi gibi temel bilgileri gösterir, ancak bildirimin tüm içeriğini gizler.VISIBILITY_PUBLIC
: Bildirimin tüm içeriğini gösterir.VISIBILITY_SECRET
: Bildirimin simgesi bile dışında hiçbir şey göstermez.
Görünürlük düzeyi VISIBILITY_PRIVATE
olduğunda kişisel ayrıntıları gizleyen bildirim içeriğinin çıkartılmış bir sürümünü de sağlayabilirsiniz. Örneğin, bir SMS uygulaması "3 yeni kısa mesajınız var" ifadesini gösteren ancak mesaj içeriğini ve gönderenleri gizleyen bir bildirim görüntüleyebilir. Bu alternatif bildirimi sağlamak için önce Notification.Builder
kullanarak değiştirme bildirimini oluşturun. Gizli bildirim nesnesini oluşturduğunuzda, değiştirme bildirimini setPublicVersion()
yöntemini kullanarak nesneye ekleyin.
Bildirim meta verileri
Android 5.0, bildirimleri daha akıllı bir şekilde sıralamak için uygulama bildirimlerinizle ilişkili meta verileri kullanır. Meta veriyi ayarlamak için bildirimi oluştururken Notification.Builder
içinde aşağıdaki yöntemleri çağırın:
setCategory()
: Cihaz öncelikli modundayken sisteme, uygulama bildirimlerinizi nasıl ele alacağını bildirir (örneğin bir bildirim gelen aramayı, anlık mesajı veya alarmı temsil ediyorsa).setPriority()
: Bildirimi normal bildirimlerden daha önemli veya daha az önemli olarak işaretler. Öncelik alanıPRIORITY_MAX
veyaPRIORITY_HIGH
olarak ayarlanmış bildirimler, ses veya titreşim de varsa küçük bir kayan pencerede görünür.addPerson()
: Bir bildirimle alakalı bir veya daha fazla kullanıcı eklemenize olanak tanır. Uygulamanız, belirtilen kişilerden gelen bildirimleri gruplandırması veya bu kişilerden gelen bildirimleri daha önemli olacak şekilde sıralamak için sisteme sinyal vermek üzere bunu kullanabilir.
Grafik
OpenGL ES 3.1 desteği
Android 5.0, Java arayüzleri ve OpenGL ES 3.1 için yerel destek sağlar. OpenGL ES 3.1'de sağlanan yeni temel işlevler şunları içerir:
- Compute gölgelendiriciler
- Gölgelendirici nesnelerini ayırma
- Dolaylı çizim komutları
- Çoklu örnek ve şablon dokuları
- Gölgelendirme dili iyileştirmeleri
- Gelişmiş karıştırma 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 kullanırken bunu manifest dosyanızda <uses-feature>
etiketi ve android:glEsVersion
özelliğiyle belirttiğinizden emin olun. Örnek:
<manifest> <uses-feature android:glEsVersion="0x00030001" /> ... </manifest>
Çalışma zamanında cihazın desteklenen OpenGL ES sürümünün nasıl kontrol edileceği de dahil olmak üzere, OpenGL ES'yi kullanma hakkında daha fazla bilgi için OpenGL ES API kılavuzuna bakın.
Android Uzantı Paketi
OpenGL ES 3.1'e ek olarak, bu sürüm gelişmiş grafik işlevselliği için Java arayüzleri ve yerel destek içeren bir uzantı paketi sağlar. Bu uzantılar Android tarafından tek bir paket olarak ele alınır. (ANDROID_extension_pack_es31a
uzantısı mevcutsa uygulamanız paketteki tüm uzantıların mevcut olduğunu varsayarak tek bir #extension
ifadesiyle gölgelendirme dili özelliklerini etkinleştirebilir.)
Uzantı paketi şunları destekler:
- Gölgelendirici depolama arabellekleri, resimler ve atomik için garantili parça gölgelendirici desteği (OpenGL ES 3.1'de parça gölgelendirici desteği isteğe bağlıdır).
- Mozaikler ve geometri gölgelendiriciler
- ASTC (LDR) doku sıkıştırma biçimi
- Örnek başına interpolasyon ve gölgelendirme
- Çerçeve arabelleğindeki her bir renk eki için farklı karıştırma modları
Uzantı paketinin Java arayüzü GLES31Ext
ile sağlanır. Uygulama manifestinizde, uygulamanızın yalnızca uzantı paketini destekleyen cihazlara yüklenmesi gerektiğini beyan edebilirsiniz.
Örnek:
<manifest> <uses-feature android:name=“android.hardware.opengles.aep” android:required="true" /> ... </manifest>
Medya
Gelişmiş kamera özellikleri için Kamera API'sı
Android 5.0, ayrıntılı fotoğraf yakalamayı ve görüntü işlemeyi kolaylaştıran yeni android.hardware.camera2 API'sini kullanıma sunuyor. Artık getCameraIdList()
ile sistemde kullanılabilen kamera cihazlarına programatik olarak erişebilir ve openCamera()
ile belirli bir cihaza bağlanabilirsiniz.
Görüntü yakalamaya başlamak için CameraCaptureSession
oluşturun ve yakalanan görüntülerin gönderileceği Surface
nesnelerini belirtin.
CameraCaptureSession
, seri çekimde tek çekim veya birden fazla resim çekecek şekilde yapılandırılabilir.
Yeni görüntü yakalandığında bildirim almak için CameraCaptureSession.CaptureCallback
işleyicisini uygulayın ve yakalama isteğinize ekleyin. Artık sistem görüntü yakalama isteğini tamamladığında CameraCaptureSession.CaptureCallback
dinleyiciniz onCaptureCompleted()
çağrısını alır ve size görüntü yakalama meta verilerini CaptureResult
içinde sağlar.
CameraCharacteristics
sınıfı, uygulamanızın bir cihazda hangi kamera özelliklerini bulunduğunu algılamasını sağlar. Nesnenin INFO_SUPPORTED_HARDWARE_LEVEL
özelliği, kameranın işlevsellik düzeyini temsil eder.
- Tüm cihazlar, en az
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY
donanım düzeyini destekler. Bu seviyenin özellikleri, kullanımdan kaldırılanCamera
API'ninkine hemen hemen eşdeğerdir. INFO_SUPPORTED_HARDWARE_LEVEL_FULL
donanım düzeyini destekleyen cihazlar yakalama ve işleme sonrası sürecini manuel olarak kontrol etmenin yanı sıra yüksek kare hızlarında yüksek çözünürlüklü görüntüler yakalayabilir.
Güncellenen Kamera API'nin 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üm, AudioTrack
özelliğinde yapılan aşağıdaki değişiklikleri içerir:
- Uygulamanız artık ses verilerini kayan nokta biçiminde (
ENCODING_PCM_FLOAT
) sağlayabilir. Bu, daha geniş dinamik aralığa, daha tutarlı hassasiyete ve daha geniş boşluk sağlar. Kayan nokta aritmetiği, özellikle ara hesaplamalar sırasında yararlı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'da, dahili ardışık düzenin bölümleri henüz kayan nokta değildir.) - Uygulamanız artık ses verilerini
MediaCodec
tarafından sağlananla aynı biçimdeByteBuffer
olarak sağlayabilir. WRITE_NON_BLOCKING
seçeneği, bazı uygulamalar için arabelleğe almayı ve çoklu iş parçacığı oluşturmayı basitleştirebilir.
Medya oynatma kontrolü
Sistem kullanıcı arayüzünün medya oynatma işlemi hakkında bilgi sahibi olduğundan ve albüm kapağını çıkarıp gösterebildiğinden emin olmak için yeni bildirim ve medya API'larını kullanın.
Medya oynatmayı kullanıcı arayüzünde ve bir hizmette kontrol etmek, yeni MediaSession
ve MediaController
sınıflarıyla artık daha kolay.
Yeni MediaSession
sınıfı, kullanımdan kaldırılan RemoteControlClient
sınıfının yerini alarak aktarım denetimleri ile medya düğmelerini işlemek için tek bir geri çağırma yöntemi grubu sağlar.
Uygulamanız medya oynatma sağlıyorsa ve Android TV ya da Wear platformunda çalışıyorsa aktarım denetimlerinizi aynı geri çağırma yöntemlerini kullanarak 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, medya oynatmayı uygulamanızın kullanıcı arayüzü işleminden izleyip kontrol etmek için iş parçacığı güvenliği sunan bir yol sağlar.
Denetleyici oluştururken, uygulamanızın belirtilen MediaSession
ile etkileşim kurabilmesi için bir MediaSession.Token
nesnesi belirtin.
MediaController.TransportControls
yöntemlerini kullanarak bu oturumda medya oynatmayı kontrol etmek için play()
, stop()
, skipToNext()
ve setRating()
gibi komutlar gönderebilirsiniz. Denetleyici ile oturumdaki meta veri ve durum değişikliklerini dinlemek için bir MediaController.Callback
nesnesi de kaydedebilirsiniz.
Ayrıca, yeni Notification.MediaStyle
sınıfıyla medya oturumuna bağlı oynatma kontrolü sağlayan zengin bildirimler oluşturabilirsiniz.
Medyaya göz atma
Android 5.0, yeni android.media.browse API'si aracılığıyla uygulamalara, başka bir uygulamanın medya içeriği kitaplığına göz atma olanağı sunmaktadır. Medya içeriğini uygulamanızda 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
öğesine erişim sağlamalıdır.
Bir medya tarayıcı hizmetiyle etkileşim kurmak için MediaBrowser
sınıfını kullanın. MediaBrowser
örneği oluştururken MediaSession
için bileşen adı belirtin. Uygulamanız, bu tarayıcı örneğini kullanarak ilişkili hizmete bağlanabilir ve bu hizmet üzerinden sunulan içeriği oynatmak için bir MediaSession.Token
nesnesi alabilir.
Depolama
Dizin seçimi
Android 5.0, Depolama Erişim Çerçevesi'ni genişleterek kullanıcıların tüm bir dizin alt ağacını seçmesine olanak tanıyarak uygulamalara her öğe için kullanıcı onayı gerektirmeden içerdiği tüm dokümanlara okuma/yazma erişimi verir.
Bir dizin alt ağacı seçmek için bir
OPEN_DOCUMENT_TREE
niyet oluşturup gönderin. Sistem, alt ağaç seçimini destekleyen tüm DocumentsProvider
örneklerini görüntüleyerek kullanıcının göz atmasına ve dizin seçmesine olanak tanır. Döndürülen URI, seçilen alt ağaç erişimini temsil eder. Ardından, alt ağacı keşfetmek için query()
ile birlikte buildChildDocumentsUriUsingTree()
ve buildDocumentUriUsingTree()
öğelerini kullanabilirsiniz.
Yeni createDocument()
yöntemi, alt ağacın altındaki herhangi bir yerde yeni dokümanlar veya dizinler oluşturmanıza olanak tanır. Mevcut belgeleri yönetmek için renameDocument()
ve deleteDocument()
araçlarını kullanın.
Bu çağrıları yayınlamadan önce sağlayıcı desteğini doğrulamak için COLUMN_FLAGS
öğesini kontrol edin.
DocumentsProvider
uyguluyor ve alt ağaç seçimini desteklemek istiyorsanız isChildDocument()
öğesini uygulayın ve COLUMN_FLAGS
öğenize FLAG_SUPPORTS_IS_CHILD
ekleyin.
Android 5.0 ayrıca, paylaşılan depolama alanında, uygulamanızın medya dosyalarını MediaStore
'e dahil etmek üzere yerleştirebileceği pakete özel yeni dizinleri de kullanıma sunuyor. Yeni getExternalMediaDirs()
, tüm paylaşılan depolama cihazlarındaki bu dizinlere giden yolları döndürür. getExternalFilesDir()
'e 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çeriği açıkça taramak için MediaScannerConnection
öğesini de kullanabilirsiniz.
Kablosuz ve Bağlantı
Birden fazla ağ bağlantısı
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. Uygulamanız SUPL, MMS veya operatör faturalandırması ağı gibi özel bir ağ gerektirdiğinde ya da belirli bir taşıma protokolü türünü kullanarak veri göndermek istiyorsanız bu işlev 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şturup uygulamanızın ilgilendiği ağ özelliklerini ve taşıma türünü belirtmek içinNetworkRequest.Builder
sınıfını kullanın.- Uygun ağları taramak için
requestNetwork()
veyaregisterNetworkCallback()
çağrısı yaparakNetworkRequest
nesnesini veConnectivityManager.NetworkCallback
uygulamasını iletin. Bir ağ tespit edildiğinde aktif olarak uygun bir ağa geçmek istiyorsanızrequestNetwork()
yöntemini kullanın. Aktif bir geçiş yapmadan yalnızca taranan ağlar için bildirim almak istiyorsanız bunun yerineregisterNetworkCallback()
yöntemini kullanın.
Sistem uygun bir ağ algıladığında ağa bağlanır ve onAvailable()
geri çağırma yöntemini çağırır. Ağ hakkında ek bilgi almak veya trafiği seçilen ağı kullanmak üzere yönlendirmek için geri çağırmadaki 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 bir Android cihaz artık Bluetooth LE çevre birimi cihazı olarak çalışabilir. Uygulamalar, varlıklarını yakındaki cihazlara bildirmek için bu özelliği kullanabilir. Örneğin, bir cihazın adım ölçer veya sağlık izleyicisi olarak çalışmasına ve verilerini başka bir Bluetooth LE cihazına iletmesine olanak tanıyan uygulamalar oluşturabilirsiniz.
Yeni android.bluetooth.le
API'leri uygulamalarınızın reklam yayınlamasına, yanıt taramasına ve yakındaki Bluetooth LE cihazlarla bağlantı kurmasına olanak tanır. Yeni reklam ve tarama özelliklerini kullanmak için manifest dosyanıza BLUETOOTH_ADMIN
iznini ekleyin. Kullanıcılar uygulamanızı Play Store'dan güncellediklerinde veya Play Store'dan indirdiklerinde, uygulamanıza şu izni vermeleri istenir:
"Bluetooth bağlantı bilgileri: Uygulamanın, yakındaki Bluetooth cihazlara yayın yapmak veya bu cihazlarla ilgili bilgi almak da dahil olmak üzere Bluetooth'u kontrol etmesine izin verir."
Diğer cihazların uygulamanızı keşfedebilmesi amacıyla Bluetooth LE reklamcılığına başlamak için startAdvertising()
numaralı telefonu arayıp AdvertiseCallback
sınıfının uygulanmasını geçin. Geri çağırma nesnesi, reklamcılık işleminin başarılı veya başarısız olduğunu belirten bir rapor alır.
Android 5.0'da ScanFilter
sınıfıyla birlikte uygulamanız yalnızca ilgilendiği belirli cihaz türlerini tarayabilir. Bluetooth LE cihazlarını taramaya başlamak için startScan()
numaralı telefonu arayıp bir filtre listesini iletin. Yöntem çağrısında, bir Bluetooth LE reklamı bulunduğunda raporlamak için ScanCallback
uygulamasını da sağlamanız gerekir.
NFC geliştirmeleri
Android 5.0, NFC'nin daha geniş ve daha esnek kullanımını mümkün kılmak için şu geliştirmeleri ekler:
- 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 dokunması 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 çağırarak NFC uygulama kimliğini (AID) dinamik olarak kaydedebilirsiniz. Belirli bir etkinlik ön planda olduğunda kullanılması gereken tercih edilen kart emülasyon hizmetini ayarlamak içinsetPreferredService()
kullanabilirsiniz.
Volta Projesi
Android 5.0, yeni özelliklere ek olarak pil ömründe 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 veya belirtilen koşullarda (ör. cihaz şarj olurken) eşzamansız olarak çalışması için işler tanımlayarak pil ömrünü optimize etmenize olanak tanıyan yeni bir JobScheduler
API'si sunar. İş planlaması aşağıdaki gibi durumlarda yararlıdır:
- Uygulamada, kullanıcılara yönelik olmayan işlemleri erteleyebilirsiniz.
- Cihaz fişe takıldığında uygulamada gerçekleştirmeyi tercih ettiğiniz işlemler var.
- Uygulama, ağ erişimi veya kablosuz bağlantı gerektiren bir görev içeriyor.
- Uygulamanın düzenli bir planla grup halinde çalıştırmak istediğiniz bir dizi görevi vardır.
Bir iş birimi, bir JobInfo
nesnesi tarafından kapsülleniyor.
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ğıdaki gibi belirli koşullarda çalışacak şekilde planlayabilirsiniz:
- Cihaz şarj olurken başlat
- Cihaz sınırsız bir ağa bağlandığında başlat
- Cihaz boştayken başlat
- Belli bir teslim tarihinden önce veya minimum gecikmeyle bitirin
Örneğin, görevinizi sınırsız bir ağda çalıştırmak için şunun 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üç kaynağına sahipse (yani 2 dakikadan uzun süredir fişe takılıysa ve pil sağlıklı bir seviyedeyse) işin son tarihi geçmemiş olsa bile sistem çalışmaya hazır olan planlanmış tüm işleri ç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, bir cihazdaki pil kullanımı hakkında benzersiz kullanıcı kimliğine (UID) göre düzenlenmiş ilginç istatistiksel veriler oluşturur. İstatistikler şunları içerir:
- Pille ilgili etkinliklerin geçmişi
- Cihaza ilişkin genel istatistikler
- UID ve sistem bileşeni başına yaklaşık güç kullanımı
- Paket başına uygulama başına mobil ms
- Sistem UID toplu istatistikleri
- Uygulama UID'si toplu istatistikler
Sonucu özelleştirmekle ilgili çeşitli seçenekler hakkında bilgi edinmek için --help
seçeneğini kullanın. Örneğin, cihazın son şarj edilmesinden sonra belirli bir uygulama paketine ait 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 olayların HTML görselleştirmesini oluşturmak için dumpsys
komutunun çıkışında Pil Geçmişi 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 bir kişisel hesabı varsa cihaz yöneticisi cihaza ortak ancak ayrı bir yönetilen profil eklemek için yönetilen bir temel hazırlık işlemi başlatabilir. Yönetilen profillerle ilişkili uygulamalar, kullanıcının Başlatıcı'sında, son kullandığı ekranda ve bildirimlerde, yönetilmeyen uygulamalarla birlikte görünür.
Yönetilen temel hazırlık işlemini başlatmak için Intent
içinde ACTION_PROVISION_MANAGED_PROFILE
gönderin. Çağrı başarılı olursa sistem onProfileProvisioningComplete()
geri çağırma işlemini tetikler.
Ardından, bu yönetilen profili etkinleştirmek için setProfileEnabled()
numaralı telefonu arayabilirsiniz.
Varsayılan olarak, uygulamaların yalnızca küçük bir alt kümesi yönetilen profilde etkinleştirilir.
enableSystemApp()
numaralı telefonu arayarak yönetilen profile ek 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, simge
çekilebilir özelliğine iş rozeti ekleyerek yönetilen uygulamaları görsel olarak
daha belirgin hale getirebilir. Rozetli simgeyi almak için
getUserBadgedIcon()
numaralı telefonu arayın.
Yeni işlevin nasıl kullanılacağını görmek için bu sürümde yer alan BasicManagedProfile
uygulama örneğine göz atın.
Cihaz sahibi
Android 5.0, cihaz sahibi uygulamasını dağıtma özelliğini sunar. Cihaz sahibi, ikincil kullanıcılar oluşturup kaldırma ve cihazda genel ayarları yapılandırma ek özelliklerine sahip olan özel bir cihaz yöneticisi türüdür. Cihaz sahibi uygulamanız, yönetilen cihazlardaki yapılandırma, güvenlik ve uygulamaları ayrıntılı bir şekilde kontrol etmek için DevicePolicyManager
sınıfındaki yöntemleri kullanabilir.
Bir cihazın aynı anda yalnızca bir etkin cihaz sahibi olabilir.
Bir cihaz sahibini dağıtmak ve etkinleştirmek için cihaz temel hazırlığı yapılmamış durumdayken bir programlama uygulamasından cihaza NFC veri aktarımı gerçekleştirmeniz gerekir. Bu veri aktarımı, Yönetilen temel hazırlık bölümünde açıklanan temel hazırlık amacındakilerle aynı bilgileri gönderir.
Ekran sabitleme
Android 5.0'da, kullanıcıların görevinizden ayrılmasını veya bildirimlerin kesintiye uğramasını geçici olarak kısıtlamanızı sağlayan yeni bir ekran sabitleme API'si bulunur. Örneğin, Android'de yüksek önem taşıyan değerlendirme gereksinimlerini destekleyen bir eğitim uygulaması veya tek amaçlı ya da kiosk uygulaması geliştiriyorsanız bu uygulama kullanılabilir. Uygulamanız ekran sabitlemeyi etkinleştirdikten sonra, uygulamanız moddan çıkana kadar kullanıcılar bildirimleri göremez, diğer uygulamalara erişemez veya ana ekrana dönemez.
Ekran sabitlemeyi iki şekilde etkinleştirebilirsiniz:
- Manuel olarak: Kullanıcılar, Ayarlar > Güvenlik > Ekran Sabitleme bölümünden ekran sabitlemeyi 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()
numaralı telefonu arayın. İstekte bulunan uygulama bir cihaz sahibi değilse kullanıcıdan onay vermesi istenir. Cihaz sahibi uygulaması, kullanıcı onay adımı olmadan uygulamaların sabitlenebilmesini sağlamak içinsetLockTaskPackages()
yöntemini çağırabilir.
Görev kilitleme etkinken aşağıdaki davranış gerçekleşir:
- Durum çubuğu boş ve kullanıcı bildirimleri ile durum bilgileri gizlenmiştir.
- Ana Sayfa ve Son Uygulamalar düğmeleri gizlidir.
- Diğer uygulamalar yeni etkinlik başlatamaz.
- Mevcut uygulama, yeni görevler oluşturmadığı sürece yeni etkinlikler başlatabilir.
- Bir cihaz sahibi ekran sabitlemeyi çağırdığında, uygulama
stopLockTask()
için arama yapana kadar kullanıcı uygulamanıza kilitli kalır. - Ekran sabitleme özelliği, cihazın sahibi olmayan başka bir uygulama veya doğrudan kullanıcı tarafından etkinleştirilirse kullanıcı hem Geri hem de Son düğmesini basılı tutarak çıkış yapabilir.
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ı yazdırmak için bit eşlem resimler halinde oluşturabilirsiniz. Sistemin yazdırılabilir içeriği yazdığı, aranabilir (yani içeriğe rastgele erişilebilir) bir ParcelFileDescriptor
belirtmeniz gerekir.
Uygulamanız, openPage()
ile oluşturmak üzere bir sayfa alabilir, ardından açık PdfRenderer.Page
değerini bit eşlem haline getirmek için render()
yöntemini çağırabilir. Ayrıca dokümanın yalnızca bir kısmını bit eşlem resme dönüştürmek isterseniz (örneğin, belgeyi yakınlaştırmak için karolara oluşturma özelliğini uygulamak üzere) ek parametreler ayarlayabilirsiniz.
Yeni API'lerin nasıl kullanılacağıyla ilgili bir örnek için PdfRendererBasic
örneğine bakın.
Sistem
Uygulama kullanım istatistikleri
Artık yeni android.app.usage
API ile Android cihazlarda 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 beyan etmeniz gerekir.
Kullanıcı, bu uygulamaya erişimi Ayarlar > Güvenlik > Uygulamalar'dan, kullanım erişimiyle de etkinleştirmelidir.
Sistem, kullanım verilerini uygulama bazında toplar. Veriler günlük, haftalık, aylık ve yıllık aralıklarla toplanır. Sistemin bu verileri sakladığı maksimum süre aşağıdaki gibidir:
- Günlük veri: 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 en son kullanıldığı zaman
- Söz konusu zaman aralığında uygulamanın ön planda olduğu toplam süre (güne, haftaya, aya veya yıla göre)
- Bir bileşenin (paket ve etkinlik adı ile tanımlanır) gün boyunca ön plana veya arka plana taşındığı zamanı gösteren zaman damgası
- Bir cihaz yapılandırması değiştiğinde (ör. cihazın yönünün döndürme nedeniyle değişmesi) yakalanan zaman damgası
Test ve Erişilebilirlik
Test ve erişilebilirlik iyileştirmeleri
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, bir uygulamanın sorunsuz bir kullanıcı deneyimi sağlamak için yeterli yenileme sıklığında kare oluşturup oluşturmadığını değerlendirmenizi sağlayacak araç testleri yazmanızı sağlar. - Yeni
executeShellCommand()
yöntemi, araç testinizden kabuk komutlarını yürütmenizi sağlar. Komut yürütme işlemi, cihaza bağlı bir ana makinedenadb shell
çalıştırmaya benzer. Bu sayededumpsys
,am
,content
vepm
gibi kabuk tabanlı araçları kullanabilirsiniz. - Erişilebilirlik API'lerini (ör.
UiAutomator
) kullanan erişilebilirlik hizmetleri ve test araçları, artık ekrandaki kullanıcıların etkileşimde bulunabileceği pencerelerin özellikleri hakkında ayrıntılı bilgi alabiliyor.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şlemler tanımlamanızı sağlar. YeniAccessibilityNodeInfo.AccessibilityAction
sınıfı, daha önceAccessibilityNodeInfo
ürününde bulunan işlemlerle ilgili API'lerin yerini alıyor. - Android 5.0, uygulamanızdaki metin okuma sentezi üzerinde daha hassas bir kontrole sahip olmanızı sağlar. Yeni
Voice
sınıfı, uygulamanızın belirli yerel ayarlar, kalite, gecikme derecesi ve metin okuma motoruna özel parametrelerle ilişkilendirilmiş ses profillerini kullanmasına olanak tanır.
IME
Giriş dilleri arasında daha kolay geçiş
Android 5.0'dan itibaren kullanıcılar, platform tarafından desteklenen tüm giriş yöntemi düzenleyicileri (IME) arasında daha kolay geçiş yapabilir. Belirlenen geçiş işlemi yapıldığında (genellikle yazılım klavyesindeki Yerküre simgesine dokunulduğunda), bu tür tüm IME'ler arasında geçiş yapılır. Davranıştaki bu değişiklik, shouldOfferSwitchingToNextInputMethod()
yöntemi ile uygulanır.
Buna ek olarak çerçeve artık bir sonraki IME'nin bir geçiş mekanizması içerip içermediğini (ve dolayısıyla IME'nin kendisinden sonra IME'ye geçişi destekleyip desteklemediğini) kontrol eder. Geçiş mekanizması olan bir IME, olmadan IME'ye dönüştürülmez. Davranıştaki bu değişiklik, switchToNextInputMethod()
yöntemi ile uygulanır.
Güncellenmiş IME geçiş API'larının nasıl kullanılacağına dair bir örnek görmek için bu sürümde güncellenmiş yazılım klavyesi uygulama örneğine bakın. IME'ler arasında geçişin nasıl uygulanacağı hakkında daha fazla bilgi edinmek için Giriş Yöntemi Oluşturma bölümüne bakın.
Manifest Beyanları
Tanımlanabilir gerekli özellikler
Artık <uses-feature>
öğesinde aşağıdaki değerler desteklenmektedir, böylece uygulamanızın yalnızca uygulamanızın 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
Aşağıdaki izin, artık uygulamanızın belirli API'lere erişmek için ihtiyaç duyduğu izinleri beyan etmek amacıyla <uses-permission>
öğesinde desteklenmektedir.
BIND_DREAM_SERVICE
: API düzeyi 21 ve sonraki sürümleri hedeflerken yalnızca sistemin bağlanmasını sağlamak için Daydream hizmeti bu izni gerektirir.