Android 5.0 API'leri

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, WebViewuygulaması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:

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 veya PRIORITY_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ılan Camera 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:

  1. ConnectivityManager oluşturun.
  2. NetworkRequest nesnesi oluşturmak ve uygulamanızın ilgilendiği ağ özelliklerini ile aktarım türünü belirtmek için NetworkRequest.Builder sınıfını kullanın.
  3. Uygun ağları taramak için requestNetwork() numaralı telefonu arayın ya da registerNetworkCallback() ve NetworkRequest nesnesi ve bir uygulaması ConnectivityManager.NetworkCallback. Şunu kullanın: Tespit edilen uygun bir ağa aktif olarak geçiş yapmak istiyorsanız requestNetwork() yöntemini; almak için aktif olarak geçiş yapmadan yalnızca taranan ağlara ilişkin bildirimleri almak için Bunun yerine registerNetworkCallback() 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çin setPreferredService() 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() ve getWindowContentFrameStats() 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 makineden adb shell çalıştırmaya benzer kullanarak kabuk tabanlı araçları kullanmanıza olanak tanır. dumpsys, am, content ve pm.
  • 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. Bir AccessibilityWindowInfo nesne, yeni nesneyi çağır getWindows() yöntemidir.
  • Yeni AccessibilityNodeInfo.AccessibilityAction sınıfı, bir AccessibilityNodeInfo üzerinde gerçekleştirilecek standart veya özelleştirilmiş işlemleri tanımlamanıza olanak tanır. Yeni AccessibilityNodeInfo.AccessibilityAction sınıfı, daha önce AccessibilityNodeInfo 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.

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.