Android 5.0 API'leri

API Düzeyi: 21

Android 5.0 (LOLLIPOP) kullanıcılar ve uygulama geliştiriciler için yeni özellikler sunuyor. 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.

Bunun yerine, yeni platform özelliklerine genel bir bakış için bkz. Android Lollipop öne çıkanlar.

Geliştirmeye başlayın

Android 5.0 için uygulama oluşturmaya başlamak üzere öncelikle Android SDK. Ardından SDK Manager'ı kullanın 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 ü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?

Davranışla ilgili önemli değişiklikler

Daha önce Android için bir uygulama yayınladıysanız uygulamanızın Android 5.0'daki değişikliklerden etkilenebileceğini unutmayın.

Ayrıntılı bilgi için lütfen Android 5.0 Değişiklikleri bölümüne bakın.

Kullanıcı Arayüzü

Materyal tasarım desteği

Android 5.0, Android'in yeni materyal tasarımı için destek sunmaya başladı stiline sahip. Görsel olarak dinamik olan, materyal tasarıma sahip uygulamalar oluşturabilirsiniz. kullanıcı arayüzü öğesi geçişleri vardır. Bu destek türüne şunlar dahildir:

  • Materyal teması
  • Gölgeleri göster
  • RecyclerView widget'ı
  • Çekilebilir animasyon ve stil efektleri
  • Materyal tasarım animasyonu ve etkinlik geçiş efektleri
  • Görünümün durumuna göre görünüm özellikleri için animatörler
  • Sizin kontrol ettiğiniz renk paletlerine sahip özelleştirilebilir kullanıcı arayüzü widget'ları ve uygulama çubukları
  • XML vektör grafiklerine dayalı animasyonlu ve animasyonsuz çekilebilir öğeler

Uygulamanıza materyal tasarım işlevi ekleme hakkında daha fazla bilgi edinmek için Materyal Tasarım.

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, birden fazla işi aynı anda yapmanızı sağlar. Kullanıcılar her zaman farklı etkinlikler ve dokümanlar arasında kolayca geçiş yapabilir. son kullanılanlar ekranı ile 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 etkinlik olarak değerlendirmesi için mantıksal bir ara eklemek görev için FLAG_ACTIVITY_NEW_DOCUMENT ve etkinliği startActivity() ile başlatıyoruz. Bu davranışı, <activity> öğesinin documentLaunchMode özelliğini "intoExisting" veya Manifest'inizde "always".

Son kullanılanlar ekranının dağınık olmasını önlemek için her biri için maksimum o ekranda görünebilecek çeşitli görevlere göz atabilirsiniz. Bunu yapmak için, <uygulama> android:maxRecents özelliği için değer ekleyebilirsiniz. Şu anki belirtilebilecek maksimum görev sayısı kullanıcı başına 50'dir (düşük RAM'e sahip cihazlar için 25 görev).

Son kullanılanlar ekranındaki görevler, yeniden başlatma sırasında kalıcı olacak şekilde ayarlanabilir. Kontrol etmek için kalıcılık davranışını göstermek için android:persistableMode özelliğini gönderin. İ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ı günceller Chromium M37'ye getirildiğinde güvenlik ve kararlılıkla ilgili iyileştirmeler yapıldı, ve hata düzeltmeleri yapıldı. 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 PermissionRequest sınıfı tanıtılmaktadır. Bu, uygulamanızın WebView izni vermesine olanak tanır web API'leri üzerinden kamera ve mikrofon gibi korunan kaynaklara erişme (getUserMedia() gibi). Uygulamanız, Bu kaynaklara Android izinleri vermek için kullanarak WebView.

Yeni onShowFileChooser() yöntemiyle, artık WebView, alan adında bir giriş formu ve Android cihazdan resim ve dosya seçmek için bir dosya seçici başlatın.

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 görüntüsü yakalama ve paylaşma

Android 5.0, uygulamanıza ekran görüntüsü alma ve ekran paylaşımı özellikleri eklemenizi sağlar. uygulamanızı yeni android.media.projection API'leriyle değiştirin. 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 içeriğini yakalamasına izin verir (varsayılan görüntü) Surface nesnesine çevirir. Böylece uygulamanız ağ üzerinden gönderebilirsiniz. API yalnızca güvenli olmayan ekranın yakalanmasına izin verir (sistem sesinin değil). Ekran görüntüsü almaya başlamak için öncelikle uygulamanız Ekran görüntüsü alma iletişim kutusu açarak kullanıcının iznini isteme Intent, createScreenCaptureIntent() yöntemidir.

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 alındığında gösterilen ayrıntı düzeyini kontrol edebilir güvenli kilit ekranının üzerinde görüntülenir. 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ında "3 yeni kısa mesajınız var" bildirimi ancak mesajı gizler en iyi uygulamaları paylaşacağız. Bu alternatif bildirimi sağlamak için önce Notification.Builder aracılığıyla değişim bildirimi gönderebilirsiniz. Zaman özel bildirim nesnesini oluşturduktan sonra, yeni bildirimi ve setPublicVersion() yöntemini çağırın.

Bildirim meta verileri

Android 5.0, uygulama bildirimlerinizle ilişkili meta verileri kullanır daha akıllı bir şekilde sıralayabilirsiniz. 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 fazla 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, sisteme birlikte gruplandırılmasını belirtmek için bunu kullanabilir belirtilen kişilerden gelen bildirimleri veya bu kişilerden gelen bildirimleri sıralayın olduğunu unutmayın.

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:

  • Gölgelendiricileri hesapla
  • Gölgelendirici nesnelerini ayırma
  • Dolaylı çizim komutları
  • Çoklu örnek ve şablon dokuları
  • Gölgelendirme dili iyileştirmeleri
  • 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ği. Ö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 Uzantı 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 interpolasyon ve gölgelendirme
  • Çerçeve arabelleğindeki her renk eki için farklı karışım modları

Uzantı paketi için Java arayüzü GLES31Ext Uygulama manifestinizde uygulamanızın Uygulamanız yalnızca uzantı paketini destekleyen cihazlara yüklenmelidir. Ö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 kullanıma sunuluyor android.hardware.kamera2 Ayrıntılı fotoğraf yakalamayı ve görüntü işlemeyi kolaylaştıran API. Artık şunları yapabilirsiniz: Sistemin kullanabileceği kamera cihazlarına programatik şekilde erişmek için getCameraIdList(). ve belirli bir cihaza bağlanmak için openCamera(). 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 dinleyicisi 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ı şu işlemleri yapmanıza olanak tanır: uygulaması bir cihazda hangi kamera özelliklerinin bulunduğunu algılar. Nesnenin INFO_SUPPORTED_HARDWARE_LEVEL özelliği, kameranın işlevsellik 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 kayan nokta biçiminde ses verileri sağlayabilir (ENCODING_PCM_FLOAT). Bu daha fazla dinamik aralık, daha tutarlı hassasiyet ve daha fazla olasılık sağlar. Kayan nokta aritmetiği, özellikle ara hesaplamalar sırasında yararlıdır. Oynatma uç noktaları, ses verileri için daha düşük bit derinliğinde tam sayı biçimini 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ıf.

Yeni MediaSession sınıfının yerini alır kullanımdan kaldırılan RemoteControlClient sınıfını kullanır ve aktarım denetimlerini ve medya düğmelerini yönetmek için tek bir geri çağırma yöntemleri grubu. 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 medya denetleyici ile kendi medya denetleyici uygulamanızı MediaController sınıf. 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 kullandığınızda play(), Google Etiket Yöneticisi ve stop(), skipToNext(), ve setRating() bu oturumda medya oynatmayı kontrol edebilirsiniz. Kumandayla şunları da yapabilirsiniz: bir MediaController.Callback nesnesini kaydedin oturumdaki meta verileri ve durum değişikliklerini dinlemeniz gerekir.

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. MediaBrowserService, Uygulamaların medya içeriğini oynatabilmesi için MediaSession.Token bir hizmet sunulur.

Bir medya tarayıcı hizmetiyle etkileşimde bulunmak için MediaBrowser sınıf. 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 Depolama Erişim Çerçevesi kullanıcıların bir dizin alt ağacının tamamını seçmesine olanak tanıyarak uygulamalara okuma/yazma erişimi verir eklenen tüm dokümanlara uygulanır.

Bir dizin alt ağacı seçmek için bir dizin alt ağacı derleyip gönderin OPEN_DOCUMENT_TREE. isteyebilirsiniz. Sistemde tüm reklamlar Alt ağaç seçimini destekleyen DocumentsProvider örnek, Dizine göz atıp bir dizin seçmesini sağlar. 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 ayrıca uygulamanızın dahil edilmek üzere medya dosyaları yerleştirebileceği paylaşılan depolama alanı MediaStore Yeni getExternalMediaDirs(), şuna giden yolları döndürür: dizinleri oluşturabilirsiniz. Şuna benzer: getExternalFilesDir(), Uygulamanızın döndürülen yollara erişmek için ek izinlere ihtiyacı yoktur. İlgili içeriği oluşturmak için kullanılan platform, bu dizinlerdeki yeni medyaları düzenli olarak tarar ancak yeni verileri açıkça taramak için MediaScannerConnection kullanın içerik.

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çmek ve ağa bağlanmak için aşağıdaki adımları uygulayın: için şu adımları izleyin:

  1. ConnectivityManager oluşturun.
  2. NetworkRequest.Builder sınıfını kullanarak NetworkRequest nesnesi ve ağ özelliklerini belirtin ve ulaşım türünü seçin.
  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 ait bildirimleri almak için Bunun yerine registerNetworkCallback() yöntemini kullanın.

Sistem uygun bir ağ tespit ettiğinde ağa bağlanır ve şunu çağırır: onAvailable(). geri arama. Geri çağırma işlevindeki Network nesnesini ağ hakkında ek bilgi almak veya seçili ağ.

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, şirket çalışanlarına bir adım ölçer veya sağlık monitörü olarak kullanılmasına ve iletişim kurulmasına olanak bağlantısını kesebilir.

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 keşfedebilmesi için Bluetooth LE reklamcılığına başlamak telefon edin, startAdvertising(). ve AdvertiseCallback sınıf. 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ürlerine göre değişir. 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 daha geniş bir kitleye ve daha fazlasına olanak tanımak için bu geliştirmeleri ekler. NFC'nin esnek kullanımı:

  • 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 cihazı başka bir cihaza manuel olarak dokunması gerekmez Veri aktarımını tamamlamak için NFC özellikli bir cihaz.
  • UTF-8 metin verileri içeren bir NDEF kaydı oluşturmak için yeni createTextRecord() yöntemini kullanabilirsiniz.
  • Bir ödeme uygulaması geliştiriyorsanız artık şunları yapabilirsiniz: şunu çağırarak bir NFC uygulama kimliğini (AID) dinamik olarak kaydetmek registerAidsForService() Ayrıca, kullanılması gereken kart emülasyon hizmetini ayarlamak için setPreferredService() ön planda belirli bir etkinlik olduğunda kullanılabilir.

Volta Projesi

Android 5.0, yeni özelliklere ek olarak pille ilgili iyileştirmelere de önem verir. hayat. 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ıya yönelik olmayan ve erteleyebileceğiniz çalışmalar var.
  • Uygulama, birim takılıyken yapmayı tercih ettiğiniz işlemler içeriyor.
  • Uygulamada ağ erişimi veya kablosuz ağ gerektiren bir görev var bağlantı.
  • Uygulamada, düzenli aralıklarla 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.

JobInfo.Builder gerektiğini bileceksiniz. 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 bir gecikmeyle bitirme

Örneğin, görevinizi bir cihazda çalıştırmak için sınırsız ağ:

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 bir cihazdaki pil kullanımıyla ilgili, benzersiz kullanıcı kimliğine göre düzenlenmiş istatistiksel veriler (UID). İstatistikler şunları içerir:

  • Pille ilgili etkinliklerin geçmişi
  • Cihazla ilgili genel istatistikler
  • UID ve sistem bileşeni başına yaklaşık güç kullanımı
  • Uygulama başına mobil ms (paket başına)
  • 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, pil kullanımını yazdırmak için cihazın son şarjından bu yana belirli bir uygulama paketinin istatistikleri; bu dosyayı komut:

$ adb shell dumpsys batterystats --charged <package-name>

URL parametrelerinin Google tarafından nasıl ele alınmasını istediğinizi belirtmek için Pil Tarihçisi aracını kullanarak dumpsys komutunun çıkışını günlüklerden güçle ilgili etkinliklerin HTML görselleştirmesini oluşturur. Bu bilgileri, pilleri anlamanızı ve teşhis etmenizi kolaylaştırır bazı işaretler bulabilirsiniz.

İş Yerinde ve Eğitimde Android

Yönetilen temel hazırlık

Android 5.0, Google Play'de uygulamaları çalıştırmak için kurumsal bir ortam yaratmak. 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şkili uygulamalar, yönetilmeyen uygulama ve bildirimler görebilirsiniz.

Yönetilen temel hazırlık işlemini başlatmak için Intent içinde ACTION_PROVISION_MANAGED_PROFILE. Öğe başarılı olursa sistem, onProfileProvisioningComplete() geri arama. Ardından şu numarayı arayabilirsiniz: setProfileEnabled() bu yönetilen profili etkinleştir.

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 başlatılabilir etkinliklerin listesini almak için yeni LauncherApps sınıfını kullanabilirsiniz ve ilişkili yönetilen tüm profiller için geçerli olacaktır. 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şlevleri nasıl kullanacağınızı öğrenmek için Bu sürümde BasicManagedProfile uygulama örneği.

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 DevicePolicyManager sınıfındaki yönetilen cihazlardaki yapılandırma, güvenlik ve uygulamalar üzerinde ayrıntılı denetim. 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'da sunulan yeni ekran sabitleme API'si: kullanıcıların görevinizden ayrılmasını veya bildirimlerin sizi kesintiye uğratmasını kısıtlayabilirsiniz. Örneğin, eğitim uygulaması geliştiriyorsanız bu uygulama kullanılabilir: Android'de önemli değerlendirme şartlarını desteklemesi ya da kiosk uygulaması. Uygulamanız ekran sabitlemeyi etkinleştirdiğinde kullanıcılar diğer uygulamalara erişme veya ana ekrana dönme gibi gerekir.

Ekran sabitlemeyi 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.
  • Programatik olarak: Ekran sabitlemeyi etkinleştirmek için programatik olarak, startLockTask() yöntemini çağırın nasıl sağlayabileceğini de öğreneceksiniz. İstekte bulunan uygulama cihaz sahibi değilse kullanıcıdan istenir bakın. Cihaz sahibi uygulaması setLockTaskPackages(). yöntemini kullanmalarını öneririz.

Görev kilitleme etkinken aşağıdaki davranış gerçekleşir:

  • Durum çubuğu boş. Kullanıcı bildirimleri ve durum bilgileri de gizlendi.
  • Ana Sayfa ve Son Uygulamalar düğmeleri gizlenir.
  • Diğer uygulamalar yeni etkinlik başlatamaz.
  • Mevcut uygulama, başlamadığı sürece yeni etkinlikler başlatabilir yeni görevler oluşturabilirsiniz.
  • 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.

Yazdırma Çerçevesi

PDF'yi bit eşlem olarak oluştur

Artık PDF doküman sayfalarını yazdırma için bit eşlem resimlerine dönüştürebilirsiniz: yeni PdfRenderer sınıfı kullanılıyor. Belirtmeniz gereken: Aranabilen ParcelFileDescriptor (yani içerik (rastgele erişilebilir) kullanılabilir. 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. Siz Ayrıca, yalnızca bir kısmını dönüşüm bu bölümde bir belgeye dönüştürmenize olanak tanır (örneğin, karo oluşturma yakınlaştırın veya uzaklaştırın).

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, daha ayrıntılı kullanım sağlar bilgileri de getRecentTasks() yöntemini çağırın. Bu API'yi kullanmak için önce şunu beyan etmeniz gerekir: Manifest dosyanızda "android.permission.PACKAGE_USAGE_STATS" izniniz var. Kullanıcı ayrıca Ayarlar > Güvenlik > Uygulamalar erişebilir.

Sistem, kullanım verilerini uygulama bazında toplar ve verileri günlük, haftalık, aylık ve yıllık aralıklarla görebilirsiniz. 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 aylık
  • 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öntemi, araç testinizden kabuk komutlarını çalıştırmanızı sağlar. İ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) şimdi ekran görüntüsü ekler. Bir AccessibilityWindowInfo nesne, yeni nesneyi çağır getWindows() yöntemidir.
  • Yeni AccessibilityNodeInfo.AccessibilityAction class, bir web sitesinde gerçekleştirilecek standart veya özelleştirilmiş işlemleri tanımlamanıza AccessibilityNodeInfo. Yeni AccessibilityNodeInfo.AccessibilityAction sınıfı, önceden bulunan ve işlemlerle ilgili API'lerin yerini alır. AccessibilityNodeInfo.
  • Android 5.0, metin okuma sentezi üzerinde daha hassas denetim sağlar. en iyi şekilde yararlanabilirsiniz. Yeni Voice sınıfı, uygulamanızın şunları yapmasına olanak tanır: Belirli yerel ayarlar, kalite ve gecikmeyle ilişkili ses profilleri kullanın değerini ve metin okuma motoruna özgü parametreleri bulabilirsiniz.

IME

Giriş dilleri arasında daha kolay geçiş

Android 5.0 sürümünden itibaren kullanıcılar tüm girişler yöntem düzenleyicileri (IME) platformu tarafından desteklenir. 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 IME, olmayan IME'ye geçmez. Bu davranış değişikliğinin Google tarafından switchToNextInputMethod(). yöntemidir.

Güncellenmiş IME geçiş API'lerinin nasıl kullanılacağına ilişkin bir örnek için bu sürümde güncellenmiş yazılım uygulama örneği verilmiştir. Şu konu hakkında daha fazla bilgi edinmek için: IME'ler arasında geçiş yapma hakkında daha fazla bilgi için Giriş Yöntemi Oluşturma.

Manifest Beyanları

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 hedeflenirken 21. seviye ve üstündeyseniz bu iznin, Daydream hizmeti, yalnızca sistemin bağlanmasını sağlamak için.