API düzeyi: 21
Android 5.0 (LOLLIPOP), kullanıcılara ve uygulama geliştiricilere yeni özellikler sunar. Bu belge, kullanıma sunduk.
Yayınlanmış bir uygulamanız varsa Android 5.0 Davranışı Uygulamanızda dikkate almanız gereken değişiklikler. Bu davranış değişiklikleri yeni API'ler kullanmıyor olsanız bile Android 5.0 cihazlardaki uygulamanızı etkileyebilir yeni bir işlevi hedefleyebilirsiniz.
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 üzere öncelikle Android SDK. 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üncelleyin
Uygulamanızı Android 5.0 çalıştıran cihazlar için daha iyi optimize etmek üzere
targetSdkVersion
cihazını şuna ayarla:
"21"
, uygulamanızı Android cihaza yükleyin
5.0 sistem görüntüsü kullanın, test edin ve güncellenmiş uygulamayı
değiştirmiyor.
Eski sürümleri desteklerken Android 5.0 API'lerini de kullanabilirsiniz
koda sistem API düzeyini kontrol eden koşullar ekleyerek sürümler
minSdkVersion
tarafından desteklenmeyen API'leri yürütmeden önce doğrulayabilirsiniz.
Geriye dönük uyumluluğun korunması hakkında daha fazla bilgi edinmek için Destekleme
Farklı Platform Sürümleri.
API düzeylerinin işleyiş şekli hakkında daha fazla bilgi için API nedir? Düzey mi?
Ö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 başlıklı makaleyi inceleyin.
Kullanıcı Arayüzü
Materyal Tasarım desteği
Android 5.0, Android'in yeni materyal tasarım stiline destek ekler. Görsel olarak dinamik olan, materyal tasarıma sahip uygulamalar oluşturabilirsiniz. kullanıcı arayüzü öğesi geçişleri vardır. Bu destek aşağıdakileri kapsar:
- 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
- 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,
son ekran
kullanıcının etkileşimde bulunduğu her uygulama için yalnızca bir görev görüntülenebilir
en son. Uygulamanız artık gerektiğinde daha fazla görev açabilir,
için aynı anda birden fazla işlem gerçekleştirmenize olanak tanır. 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 web’deki açık sekmeler gösterilebilir
tarayıcı uygulaması, üretkenlik uygulamasındaki dokümanlar, eşzamanlı eşleşmeler
mesajlaşma uygulamasındaki sohbetlerdir. Uygulamanız, görevlerini yönetebilir
ActivityManager.AppTask
sınıfı üzerinden.
Sistemin etkinliğinizi yeni bir görev olarak ele alması için mantıksal bir ara eklemek istiyorsanız etkinliği startActivity()
ile başlatırken FLAG_ACTIVITY_NEW_DOCUMENT
kullanın. Bu davranışı, manifest dosyanızda <activity> öğesinin documentLaunchMode
özelliğini "intoExisting"
veya "always"
olarak ayarlayarak da elde edebilirsiniz.
Son kullanılanlar ekranının dağınık olmasını önlemek için
o ekranda görünebilecek çeşitli görevlere göz atabilirsiniz. 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 görevler 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. İsterseniz
son kullanılanlar ekranındaki bir etkinliğin görsel özelliklerini
adını çağırarak etkinliğin rengini, etiketini ve simgesini
setTaskDescription()
.
yöntemidir.
WebView 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. Bir için varsayılan kullanıcı aracısı dizesi
Android 5.0 çalıştıran WebView
37.0.0.0 sürüm numarası eklenerek güncellenmiştir.
Bu sürümde, uygulamanızın getUserMedia() gibi web API'leri aracılığıyla kamera ve mikrofon gibi korumalı kaynaklara erişmek için WebView
iznine sahip olmasını sağlayan PermissionRequest
sınıfı kullanıma sunulmuştur. Uygulamanızın, WebView
'e izin vermek için 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çiciyi başlatabilirsiniz.
Ayrıca bu sürüm, WebAudio WebGL ve WebRTC açık standartları. Bu sürüme eklenen yeni özellikler hakkında daha fazla bilgi edinmek için bkz. Android için WebView.
Ekran yakalama 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 videoda ekran paylaşımını etkinleştirmek isterseniz
konferans uygulaması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çeriğinin yakalanmasına izin verir, sistem sesine 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ğıyla ilgili bir örnek için MediaProjectionDemo
sayfasını ziyaret edin.
sınıfını kullanır.
Bildirimler
Kilit ekranı bildirimleri
Android 5.0'daki kilit ekranları, ekran gösterme özelliğine sahiptir. bildirimleri etkinleştirebilirsiniz. Kullanıcılar, Ayarlar üzerinden izin verip vermemeyi seçebilir Güvenli kilit ekranı üzerinden gösterilecek hassas bildirim içeriği.
Uygulamanız, bildirimleri güvenli kilit ekranında gösterilirken görünen ayrıntı düzeyini kontrol edebilir. Görünürlük seviyesini kontrol etmek için şu numarayı arayın:
setVisibility()
ve
şu 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ç olmak üzere hiçbir şey gösterilmez.
Görünürlük seviyesi VISIBILITY_PRIVATE
olduğunda
bildirimin çıkartılmış bir sürümünü de gönderebilirsiniz.
kişisel ayrıntıları gizleyen içeriklerdir. Ö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österebilir. Bu alternatif bildirimi sağlamak için önce Notification.Builder
kullanarak değişim bildirimini oluşturun. Özel bildirim nesnesini oluştururken setPublicVersion()
yöntemi aracılığıyla değişim bildirimini ona ekleyin.
Bildirim meta verileri
Android 5.0, bildirimleri daha akıllıca sıralamak için uygulama bildirimlerinizle ilişkili meta verileri kullanır. Meta verileri ayarlamak için
Aşağıdaki yöntemleri Notification.Builder
içinde uygulayın:
oluşturun:
setCategory()
: cihazın öncelik modunda olması gerekir (örneğin, bir bildirim gelen arama, anlık mesaj veya alarm).setPriority()
: Bildirimi normal bildirimlerden daha önemli veya daha az önemli olarak işaretler. Öncelik alanıPRIORITY_MAX
veyaPRIORITY_HIGH
, Bildirimde ses veya titreşim de varsa küçük kayan pencere.addPerson()
: Bildirimle alakalı bir veya daha fazla kullanıcı eklemenizi sağlar. Uygulamanız, bu özelliği kullanarak sisteme belirtilen kişilerden gelen bildirimleri gruplandırması veya bu kişilerden gelen bildirimleri daha önemli olarak sıralaması gerektiğini bildirebilir.
Grafik
OpenGL ES 3.1 desteği
Android 5.0, Java arayüzleri ve OpenGL için yerel destek ekler ES 3.1. OpenGL ES 3.1'de sağlanan yeni temel işlevler şunlardır:
- İşlem gölgelendiricileri
- Ayrı gölgelendirici nesneleri
- Dolaylı çizim komutları
- Çoklu örnek 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
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>
OpenGL ES'yi kullanma hakkında daha fazla bilgi için, aşağıdaki bağlantı da dahil olmak üzere için desteklenen OpenGL ES sürümünü öğrenmek için OpenGL ES API kılavuzu.
Android Uzatma Paketi
OpenGL ES 3.1'e ek olarak, bu sürüm
Gelişmiş grafik işlevi için Java arayüzleri ve yerel destek. Bu
uzantıları, Android tarafından tek bir paket olarak ele alınır. (
ANDROID_extension_pack_es31a
uzantısı mevcut. Uygulamanız şunları yapabilir:
Paketteki tüm uzantıların mevcut olduğunu varsayar ve gölgelendirme dilini etkinleştirir
(tek bir #extension
ifadesi olan özellikler)
Uzantı paketi şunları destekler:
- Gölgelendirici depolama arabellekleri, resimler ve atomik (OpenGL ES 3.1'de parça 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 enterpolasyon ve gölgelendirme
- Çerçeve arabelleğindeki her renk eki için farklı karışım modları
Uzantı paketi için Java arayüzü
GLES31Ext
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, ayrıntılı fotoğraf çekimi ve görüntü işlemeyi kolaylaştırmak için yeni android.hardware.camera2 API'sini kullanıma sunar. Artık getCameraIdList()
ile sisteme bağlı kamera cihazlarına programatik olarak erişebilir ve openCamera()
ile belirli bir cihaza bağlanabilirsiniz.
Resim çekmeye başlamak için bir CameraCaptureSession
oluşturun
ve yakalanan görüntülerin gönderileceği Surface
nesneyi belirtin.
CameraCaptureSession
, şu şekilde yapılandırılabilir:
tek seferde bir veya bir seri çekimde birden fazla resim çekebilirsiniz.
Yeni görüntüler çekildiğinde bildirim almak için CameraCaptureSession.CaptureCallback
dinleyiciyi uygulayın ve yakalama isteğinizde ayarlayın. Sistem, resmi tamamladığında
yakalama isteği, CameraCaptureSession.CaptureCallback
dinleyici,
onCaptureCompleted()
,
Böylece size resim yakalama meta verilerini
CaptureResult
.
CameraCharacteristics
sınıfı, uygulamanızın bir cihazda hangi kamera özelliklerinin kullanılabildiğini 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
Özelliklere sahip
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY
donanım düzeyi kullanımdan kaldırılanCamera
ile hemen hemen eşdeğerdir API'ye gidin. INFO_SUPPORTED_HARDWARE_LEVEL_FULL
donanım seviyesini destekleyen cihazlar manuel olarak gerçekleştirilebilir yakalama ve işleme sonrası ile yüksek çözünürlüklü görüntüler yakalamanın kontrolü yüksek kare hızlarında gösterilebilir.
Güncellenen
Kamera
API, Camera2Basic
ve Camera2Video
uygulamasına bakın
örnekler.
Ses çalma
Bu sürüm aşağıdaki değişiklikleri içerir:
AudioTrack
:
- Uygulamanız artık ses verilerini kayan nokta biçiminde (
ENCODING_PCM_FLOAT
) sağlayabilir. Bu sayede daha yüksek dinamik aralık, daha tutarlı hassasiyet ve daha fazla boşluk elde edebilirsiniz. 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'da, dahili ardışık düzenin bazı bölümleri henüz kayan nokta) - Uygulamanız artık ses verilerini
ByteBuffer
olarak sağlayabilir:MediaCodec
tarafından sağlanan ile aynı biçimdedir. 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ü
Yeni bildirim ve medya API'lerini kullanarak
sistem arayüzü, medya oynatmanızı bilir ve albüm kapağını çıkarıp gösterebilir.
Yeni MediaSession
ve MediaController
sınıflarıyla kullanıcı arayüzünde ve hizmette medya oynatmayı kontrol etmek artık daha kolay.
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 özelliği sağlıyor ve Android üzerinde çalışıyorsa
TV veya
Wear platformunda kullanmak için
Taşıma işleminizi gerçekleştirecek MediaSession
sınıf
aynı geri çağırma yöntemlerini kullanarak kontrol eder.
Artık yeni MediaController
sınıfıyla kendi medya kontrol cihazı uygulamanızı oluşturabilirsiniz. Bu sınıf şunları sağlar:
Medya oynatmayı, uygulamanızın kullanıcı arayüzü işleminden izleyip kontrol etmenin, iş parçacığı açısından güvenli bir yöntem sunmasını sağlar.
Kumanda oluştururken MediaSession.Token
belirtin
uygulamanızın belirtilen MediaSession
ile etkileşimde bulunabilmesi için nesnel
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, oynatma kontrolüne olanak tanıyan zengin bildirimler de oluşturabilirsiniz.
yeni Notification.MediaStyle
ile bir medya oturumuna bağlandı
sınıfını kullanır.
Medyaya göz atma
Android 5.0, uygulamaların medya içeriğine göz atma yeteneğini sunuyor
başka bir uygulamanın kitaplığındaki yeni
android.media.browse
API'ye gidin. Uygulamanızdaki medya içeriğini göstermek için
MediaBrowserService
sınıf. Uygulamaların, hizmetiniz üzerinden sağlanan medya içeriklerini oynatabilmesi için MediaBrowserService
uygulamanız bir MediaSession.Token
'a erişim sağlamalıdır.
Bir medya tarayıcısı hizmetiyle etkileşimde bulunmak için MediaBrowser
sınıfını kullanın. Bileşeni belirtin
bir MediaSession
adı oluştururken
MediaBrowser
örneği. Bu tarayıcı örneğini kullanarak
daha sonra uygulamanız ilişkilendirilmiş hizmete bağlanarak
Oynatılacak MediaSession.Token
nesne gösteriliyor
gerekiyor.
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şleterek uygulamalara her öğe için kullanıcı onayı gerekmeden içindeki tüm dokümanlara okuma/yazma erişimi verir.
Bir dizin alt ağacı seçmek için bir intent oluşturup gönderin.OPEN_DOCUMENT_TREE
Sistem, alt ağaç seçimini destekleyen tüm DocumentsProvider
örneklerini gösterir ve kullanıcının göz atıp bir dizin seçmesine olanak tanır. Döndürülen URI,
erişim izni verebilirsiniz. Ardından buildChildDocumentsUriUsingTree()
uzantısını kullanabilirsiniz
ve buildDocumentUriUsingTree()
şununla birlikte:
query()
alt ağacı keşfedin.
Yeni createDocument()
yöntemi, istediğiniz yerde yeni dokümanlar veya dizinler oluşturmanıza olanak tanır
alt ağacın altında. Mevcut dokümanları yönetmek için şunu kullanın:
renameDocument()
ve
deleteDocument()
.
Bunu kontrol edin: COLUMN_FLAGS
.
DocumentsProvider
uyguluyorsanız ve
alt ağaç seçimini desteklemek için isChildDocument()
uygulayın ve FLAG_SUPPORTS_IS_CHILD
ekleyin
COLUMN_FLAGS
içinde.
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. Şuna benzer:
getExternalFilesDir()
,
Uygulamanızın döndürülen yollara erişmek için ek izinlere ihtiyacı yoktur. Platform, bu dizinlerde düzenli olarak yeni medya tarama yapar ancak yeni içeriği açıkça taramak için MediaScannerConnection
'ü de kullanabilirsiniz.
Kablosuz ve Bağlantı
Çoklu ağ bağlantıları
Android 5.0, uygulamanızın farklı cihazlarda görüntülenebilmesi için yeni çoklu ağ API'leri belirli özelliklere sahip kullanılabilir ağları dinamik olarak tarayabilir ve onlarla bağ kurabilirsiniz. Bu işlev, uygulamanız supL, MMS veya operatör faturalandırması ağı gibi özel bir ağ gerektirirse Belirli bir aktarım protokolü türünü kullanarak veri göndermek istiyorsanız.
Uygulamanızdan dinamik olarak bir ağ seçip bağlanmak için aşağıdaki adımları uygulayın:
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()
numaralı telefonu arayın ya daregisterNetworkCallback()
veNetworkRequest
nesnesi ve bir uygulamasıConnectivityManager.NetworkCallback
. Şunu kullanın: Tespit edilen uygun bir ağa aktif olarak geçiş yapmak istiyorsanızrequestNetwork()
yöntemini; almak için aktif olarak geçiş yapmadan yalnızca taranan ağlara ilişkin bildirimleri 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 edinmek veya trafiği seçili ağı kullanacak şekilde yönlendirmek için geri çağırma çağrısından Network
nesnesini kullanabilirsiniz.
Bluetooth Düşük Enerji
Android 4.3, şunun için platform desteğini kullanıma sundu: Bluetooth Düşük Enerji (Bluetooth LE) var. Android 5.0'da artık Android cihazlar bir Bluetooth LE çevre birimi cihazı işlevi görür. Uygulamalar bu özelliği kullanabilir bilmelerini sağlıyor. Ö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 yayın yapmasına olanak tanır
reklamlar, yanıtlar için tarama ve yakındaki Bluetooth ile bağlantı oluşturma
LE cihazları. Yeni reklamcılık ve tarama özelliklerini kullanmak için
BLUETOOTH_ADMIN
.
izni ekleyebilirsiniz. Kullanıcılar uygulamanızı Play Store'dan güncellediklerinde veya indirdiklerinde,
kullanıcıdan uygulamanıza aşağıdaki izni vermesi istenir:
"Bluetooth bağlantı bilgileri: Uygulamanın Bluetooth'u kontrol etmesini sağlar.
yakındaki Bluetooth cihazlara yayın yapma veya bu cihazlarla ilgili bilgi alma dahil."
Diğer cihazların uygulamanızı keşfedebilmesi için Bluetooth LE reklamcılığını başlatmak üzere startAdvertising()
işlevini çağırın ve AdvertiseCallback
sınıfının bir uygulamasını iletin. Geri çağırma nesnesi
Reklam çalışmasının başarılı veya başarısız olduğuna dair bir rapor alır.
Android 5.0, ScanFilter
sınıfını kullanıma sunuyor.
tarayabileceğinden yalnızca
belirli cihaz türlerini gösterir. Bluetooth taramasını başlatmak için
LE cihazları, startScan()
numaralı telefonu arayın
ve bir filtre listesi
geçirebilirsiniz. Yöntem çağrısında,
bir değişiklik olduğunda raporlamak için ScanCallback
Bluetooth LE reklamı bulundu.
NFC geliştirmeleri
Android 5.0, NFC'nin daha geniş ve daha esnek bir şekilde kullanılmasını sağlamak için aşağıdaki geliştirmeleri ekler:
- Android Beam artık paylaş menüsünde kullanılabilir.
- Uygulamanız, verileri aşağıdaki yöntemlerle paylaşmak için kullanıcının cihazında Android Beam'i çağırabilir.
invokeBeam()
aranıyor. 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()
işlevini çağırarak 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ünde yapılan iyileştirmelere de önem verir. Uygulamanızın gücünü anlamak ve optimize etmek için yeni API'leri ve aracı kullanın tüketim.
İşleri planlama
Android 5.0, yeni bir JobScheduler
Sistemin çalıştıracağı işler tanımlayarak pil ömrünü optimize etmenizi sağlayan API
veya belirtilen koşullar altında (örneğin,
cihaz şarj oluyor). İş planlaması şu durumlarda yararlıdır:
- Uygulamada, kullanıcılara 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 olarak toplu şekilde çalıştırmak istediğiniz birkaç görev vardır. hakkında bilgi edindiniz.
Ç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 belirli bir alt yapı altında çalışacak şekilde
koşulları karşılayabilir, örneğin:
- 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 gecikmeyle tamamlama
Ö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ın stabil bir gücü varsa (yani cihaz daha uzun süre fişe takılıysa 2 dakikadan fazla kullanıldıysa ve pil sağlıklı seviye), sistem, çalıştırılmaya hazır olan planlanmış bir işi çalıştırır. son tarihin sona ermediğinden emin olun.
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 genelindeki 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
Çeşitli seçenekleri öğrenmek için --help
seçeneğini kullanın.
ve çıktıyı uyarlayabilirsiniz. Örneğin, cihazın en son şarj edildiğinden 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üklerdeki 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.
Android'in iş yerinde ve eğitimde kullanımı
Yönetilen temel hazırlık
Android 5.0, kurumsal ortamda uygulama çalıştırmak için yeni işlevler sunar. CEVAP cihaz yöneticisi tarafından Ortak ancak ayrı bir hesap eklemek için yönetilen temel hazırlık işlemi başlatın. yönetilen profil (kullanıcının mevcut kişisel hesabı varsa). 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
Intent
içinde ACTION_PROVISION_MANAGED_PROFILE
. Çağrı başarılı olursa sistem onProfileProvisioningComplete()
geri aramasını tetikler.
Ardından, bu yönetilen profili etkinleştirmek için setProfileEnabled()
numaralı telefonu arayabilirsiniz.
Varsayılan olarak, yönetilen profilde uygulamaların yalnızca küçük bir kısmı etkinleştirilir.
Yönetilen profile daha fazla uygulama yüklemek için şu numarayı arayabilirsiniz:
enableSystemApp()
Bir başlatıcı 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. Launcher'ınız şunları yapabilir:
yönetilen uygulamalar simgesine bir iş rozeti eklenerek, görsel olarak belirgin
çekilebilir. Rozetli simgeyi almak için şu numarayı arayın:
getUserBadgedIcon()
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 uygulamalarını dağıtma özelliğini sunar. Bir cihaz
sahip özel bir türdür
cihaz yöneticisi
oluşturma ve kaldırma özelliklerine sahip olan ve ayrıca, kullanıcı başına
cihazın genel ayarlarını yapılandırabilirsiniz. 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.
Bir cihaz sahibini dağıtmak ve etkinleştirmek için NFC veri aktarımı gerçekleştirmeniz gerekir Cihazın temel hazırlığı yapılmamış durumdayken bir programlama uygulamasından cihaza durumu. Bu veri aktarımı, temel hazırlık niyetindekiyle aynı bilgileri gönderir Yönetilen temel hazırlık bölümünde açıklanmıştır.
Ekran sabitleme
Android 5.0, kullanıcıların görevinizden ayrılmasını veya bildirimler tarafından kesintiye uğramasını geçici olarak kısıtlamanıza olanak tanıyan yeni bir ekran sabitleme API'si sunar. Ö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 bu özellikten yararlanabilirsiniz. Uygulamanız ekran sabitleme özelliğini etkinleştirdiğinde kullanıcılar, uygulamanız moddan çıkana kadar bildirimleri göremez, diğer uygulamalara erişemez veya ana ekrana geri dönemez.
Ekran sabitleme özelliğini etkinleştirmenin iki yolu vardır:
- Manuel olarak: Kullanıcılar ekran sabitlemeyi etkinleştirebilir Ayarlar > Güvenlik > Ekran Sabitleme'yi tıklayıp istedikleri görevleri Son kullanılanlar ekranındaki yeşil iğne simgesine dokunarak raptiyeyi sabitleyebilirsiniz.
- 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 uygulamasısetLockTaskPackages()
. yöntemini kullanmalarını öneririz.
Görev kilitleme etkinken 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ı kilitli kalır
uygulama arayana kadar
stopLockTask()
- Ekran sabitleme özelliği, cihazın sahibi olmayan veya kullanıyorsanız kullanıcı Geri ve Son düğmelerini basılı tutarak çıkış yapabilir.
Baskı Çerçevesi
PDF'yi bit eşlem olarak oluşturma
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, oluşturmak üzere bir sayfayı alabilir
openPage()
, ardından telefon et
render()
açık PdfRenderer.Page
öğesini bir bit eşlemeye dönüştürün. 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ğıyla ilgili bir örnek için PdfRendererBasic
sayfasını ziyaret edin.
örneklem.
Sistem
Uygulama kullanım istatistikleri
Artık
yeni android.app.usage
API. Bu API, desteği sonlandırılan getRecentTasks()
yönteminden daha ayrıntılı kullanım bilgileri sağlar.
Bu API'yi kullanmak için önce şunu beyan etmeniz gerekir:
Manifest dosyanızda "android.permission.PACKAGE_USAGE_STATS"
izniniz var.
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. Maksimum süre saklaması gereken işin aşağıdaki gibi olduğunu görürsünüz:
- 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 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şen (paket ve etkinlik adıyla tanımlanır) olduğunda yakalanan zaman damgası bir gün boyunca ön plana veya arka plana taşındı
- Cihaz yapılandırması değiştiğinde (ör. cihaz yönü, döndürme nedeniyle değiştirildi)
Test ve Erişilebilirlik
Test ve erişilebilirlik iyileştirmeleri
Android 5.0, test ve destek için aşağıdaki erişilebilirlik:
- Yeni
getWindowAnimationFrameStats()
vegetWindowContentFrameStats()
Yöntemleri sayesinde pencere animasyonları ve içerikler için çerçeve istatistiklerini yakalar. Bu yöntemler bir uygulamanın uygulama yükleme işlemleri tarafından oluşturulup oluşturulmadığını değerlendirmek için sorunsuz bir kullanıcı deneyimi sağlamak için kareleri yeterli yenileme sıklığında kontrol edin. - Yeni
executeShellCommand()
yöntem, enstrümantasyon testinizden kabuk komutları yürütmenize olanak tanır. İlgili içeriği oluşturmak için kullanılan komut yürütme, ana makinedenadb shell
çalıştırmaya benzer kullanarak kabuk tabanlı araçları kullanmanıza olanak tanır.dumpsys
,am
,content
vepm
. - 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. BirAccessibilityWindowInfo
nesne, yeni nesneyi çağırgetWindows()
yöntemidir. - 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ızda metin okuma sentezi üzerinde daha ayrıntılı kontrol sağlar. Yeni
Voice
sınıfı, uygulamanızın belirli yerel ayarlarla ilişkili ses profillerini, kalite ve gecikme derecelendirmesini ve metin okuma motoruna özgü parametreleri kullanmasına olanak tanır.
IME
Giriş dilleri arasında daha kolay geçiş
Android 5.0'den itibaren kullanıcılar, platform tarafından desteklenen tüm giriş yöntemi düzenleyicileri (IME) arasında daha kolay geçiş yapabilir. Belirlenen görevlerin gerçekleştirilmesi
değiştirme işlemi (genellikle ekran klavyesinde Yerküre simgesine dokunma) döngüleri
üzerinden geçin. Bu davranış değişikliği
shouldOfferSwitchingToNextInputMethod()
.
yöntemidir.
Buna ek olarak, çerçeve artık bir sonraki IME'de kullanılabilecek bir
mekanizmaya geçmemesini sağlar (ve dolayısıyla IME'nin bu modele
IME'yi ekleyin). Geçiş mekanizması olan bir IME, geçiş mekanizması olmayan bir IME'ye geçmez. Davranıştaki bu değişiklik switchToNextInputMethod()
yöntemi tarafından uygulanır.
Güncellenen 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>
öğesidir. Böylece uygulamanızın yalnızca
uygulamanızın ihtiyacı olan özellikleri sağlayın.
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
<uses-permission>
öğesi kullanabilirsiniz.
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.