Android 5.0 API'leri

API Düzeyi: 21

Android 5.0 (LOLLIPOP) kullanıcılar ve uygulama geliştiriciler için yeni özellikler sunar. Bu belgede en dikkate değer yeni API'ler tanıtılmaktadır.

Yayınlanmış bir uygulamanız varsa uygulamanızda dikkate almanız gereken Android 5.0 Davranış Değişiklikleri'ne göz atmayı unutmayın. Yeni API'ler kullanmıyor veya yeni işlevleri hedeflemeseniz bile bu davranış değişiklikleri Android 5.0 cihazlardaki uygulamanızı etkileyebilir.

Yeni platform özelliklerine genel bir bakış için bunun yerine Android Lollipop'ta öne çıkan özelliklere bakın.

Geliştirmeye başlayın

Android 5.0'a yönelik uygulamalar derlemeye başlamak için önce Android SDK'sını edinmeniz gerekir. Ardından SDK Yöneticisi'ni kullanarak Android 5.0 SDK Platformu ve Sistem Görüntülerini indirin.

Hedef API düzeyinizi güncelleyin

Uygulamanızı Android 5.0 çalıştıran cihazlar için daha iyi optimize etmek istiyorsanız targetSdkVersion özelliğini "21" olarak ayarlayın, uygulamanızı bir Android 5.0 sistem görüntüsüne yükleyin, test edin, ardından bu değişiklikle güncellenmiş uygulamayı yayınlayın.

minSdkVersion tarafından desteklenmeyen API'leri yürütmeden önce kodunuza sistem API düzeyini kontrol eden koşullar ekleyerek eski sürümleri desteklerken Android 5.0 API'lerini kullanabilirsiniz. Geriye dönük uyumluluğu sürdürme hakkında daha fazla bilgi edinmek için Farklı Platform Sürümlerini Destekleme bölümünü okuyun.

API düzeylerinin işleyiş şekli hakkında daha fazla bilgi için API Düzeyi nedir? başlıklı makaleyi okuyun.

Önemli davranış değişiklikleri

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

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

Kullanıcı Arayüzü

Materyal tasarım desteği

Android 5.0, Android'in yeni materyal tasarım stilini destekler. Görsel olarak dinamik olan ve kullanıcılara doğal gelen kullanıcı arayüzü öğesi geçişlerine sahip, materyal tasarıma sahip uygulamalar oluşturabilirsiniz. Bu destek kapsamında sunulanlar:

  • Materyal teması
  • Gölgeleri göster
  • RecyclerView widget'ı
  • Çekilebilir animasyon ve stil efektleri
  • Materyal tasarım animasyon ve etkinlik geçiş efektleri
  • Görünümün durumuna dayalı olarak görünüm özellikleri için animatörler
  • Kontrol ettiğiniz renk paletlerini içeren ö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 bölümüne bakın.

Son kullanılanlar ekranında eşzamanlı dokümanlar ve etkinlikler

Önceki sürümlerde, son işlemler ekranı kullanıcının en son etkileşimde bulunduğu her uygulama için yalnızca bir görev görüntüleyebiliyordu. Artık uygulamanız, dokümanlarla ilgili eş zamanlı diğer etkinlikler için gerektiğinde daha fazla görevi açabilir. Bu özellik, tüm uygulamalarda tutarlı bir geçiş deneyimi sunarak kullanıcıların son kullanılan etkinlikler ve dokümanlar arasında hızlıca geçiş yapmalarına olanak tanıyarak çoklu görevleri kolaylaştırır. Bu tür eşzamanlı görevlere örnek olarak web tarayıcısı uygulamasındaki açık sekmeler, bir üretkenlik uygulamasındaki dokümanlar, bir oyundaki eşzamanlı eşleşmeler veya mesajlaşma uygulamasındaki sohbetler verilebilir. Uygulamanız, ActivityManager.AppTask sınıfı aracılığıyla görevleri yönetebilir.

Sistemin etkinliğinizi yeni bir görev olarak ele alması amacıyla mantıksal bir ara eklemek için etkinliği startActivity() ile başlatırken FLAG_ACTIVITY_NEW_DOCUMENT öğesini kullanın. Bu davranışı manifest'inizde, <activity> öğesinin documentLaunchMode özelliğini "intoExisting" veya "always" değerine ayarlayarak da elde edebilirsiniz.

Son kullanılanlar ekranının dağınık olmaması için uygulamanızda bu ekranda görünebilecek maksimum görev sayısını ayarlayabilirsiniz. Bunu yapmak için <application> özelliğini android:maxRecents ayarlayın. Şu anda kullanıcı başına 50 görev (düşük RAM'e sahip cihazlar için 25) belirtilebilir.

Son kullanılanlar ekranındaki görevler, yeniden başlatmalarda da devam edecek şekilde ayarlanabilir. Kalıcılık davranışını kontrol etmek için android:persistableMode özelliğini kullanın. Son kullanılanlar ekranındaki bir etkinliğin görsel özelliklerini (örneğin, etkinliğin rengi, etiketi ve simgesi) setTaskDescription() yöntemini çağırarak değiştirebilirsiniz.

Web Görünümü güncellemeleri

Android 5.0, WebView uygulamasını Chromium M37'ye güncelleyerek güvenlik ve kararlılıkla ilgili geliştirmelerin yanı sıra hata düzeltmeleri sağlar. Android 5.0 üzerinde çalışan bir WebView için varsayılan kullanıcı aracısı dizesi, sürüm numarası olarak 37.0.0.0'ı içerecek şekilde güncellendi.

Bu sürümde, uygulamanızın getUserMedia() gibi web API'leri aracılığıyla kamera ve mikrofon gibi korumalı kaynaklara erişmesi için WebView izni vermesine olanak tanıyan PermissionRequest sınıfı kullanıma sunuldu. Uygulamanızın, WebView'a izin verebilmesi için bu kaynaklarla ilgili uygun Android izinlerine sahip olması gerekir.

Yeni onShowFileChooser() yöntemiyle artık WebView içinde bir giriş formu alanı kullanabilir ve Android cihazdan resim ve dosya seçmek için bir dosya seçici başlatabilirsiniz.

Ayrıca bu sürüm WebAudio, WebGL ve WebRTC açık standartlarını da destekler. Bu sürüme eklenen yeni özellikler hakkında daha fazla bilgi edinmek için Android için Web Görünümü bölümüne bakın.

Ekran görüntüsü alma ve paylaşma

Android 5.0, yeni android.media.projection API'leriyle uygulamanıza ekran yakalama ve ekran paylaşımı özellikleri eklemenize olanak tanır. Bu işlev, örneğin bir video konferans uygulamasında ekran paylaşımını etkinleştirmek istediğinizde yararlı olur.

Yeni createVirtualDisplay() yöntemi, uygulamanızın ana ekranın (varsayılan ekran) içeriklerini Surface nesnesine kaydetmesini sağlar ve sonra bu nesneleri ağ genelinde gönderebilir. API yalnızca güvenli olmayan ekran içeriklerinin yakalanmasına izin verir, sistem sesinin yakalanmasına izin vermez. Ekran görüntüsü almaya başlamak için uygulamanızın önce createScreenCaptureIntent() yöntemiyle edinilmiş bir Intent kullanıp ekran görüntüsü iletişim kutusunu başlatarak kullanıcıdan izin istemesi gerekir.

Yeni API'lerin nasıl kullanılacağına dair bir örnek için örnek projedeki MediaProjectionDemo sınıfına bakın.

Bildirimler

Kilit ekranı bildirimleri

Android 5.0'daki kilit ekranları, bildirim gösterebilir. Kullanıcılar, Ayarlar aracılığıyla, hassas bildirim içeriğinin güvenli kilit ekranı üzerinde gösterilmesine izin verip vermemeyi seçebilir.

Uygulamanız, bildirimleri güvenli kilit ekranı üzerinde gösterildiğinde görünen ayrıntı düzeyini kontrol edebilir. Görünürlük düzeyini kontrol etmek için setVisibility() çağrısı yapın ve şu değerlerden birini belirtin:

Görünürlük düzeyi VISIBILITY_PRIVATE olduğunda, bildirim içeriğinin kişisel bilgileri gizleyen çıkartılmış bir sürümünü de sağlayabilirsiniz. Örneğin, bir SMS uygulaması "3 yeni kısa mesajınız var" mesajını gösteren ancak mesaj içeriğini ve gönderenleri gizleyen bir bildirim görüntüleyebilir. Bu alternatif bildirimi sağlamak için önce Notification.Builder kullanarak değişim bildirimini oluşturun. Gizli bildirim nesnesini oluşturduğunuzda, değişim bildirimini setPublicVersion() yöntemini kullanarak nesneye ekleyin.

Bildirim meta verileri

Android 5.0, bildirimleri daha akıllı bir şekilde sıralamak için uygulama bildirimlerinizle ilişkili meta verileri kullanır. Meta verileri ayarlamak için bildirimi oluştururken Notification.Builder içinde aşağıdaki yöntemleri çağırın:

  • setCategory(): Cihaz öncelik modundayken (örneğin bir bildirim gelen aramayı, anlık mesajı veya alarmı temsil ediyorsa) sisteme uygulama bildirimlerinizi nasıl ele alacağını bildirir.
  • setPriority(): Bildirimi normal bildirimlerden daha önemli veya daha az önemli olarak işaretler. Öncelik alanı PRIORITY_MAX veya PRIORITY_HIGH olarak ayarlanmış bildirimler, ses veya titreşim de varsa küçük bir kayan pencerede görünür.
  • addPerson(): Bildirimle ilgili bir veya daha fazla kullanıcı eklemenize olanak tanır. Uygulamanız bu bilgiyi, sisteme belirtilen kişilerden gelen bildirimleri gruplandırması veya bu kişilerden gelen bildirimleri daha önemli olacak şekilde sıralaması gerektiği yönünde sinyal vermek için kullanabilir.

Görseller

OpenGL ES 3.1 desteği

Android 5.0, Java arayüzleri ve OpenGL ES 3.1 için yerel destek ekler. OpenGL ES 3.1'de sağlanan temel yeni işlevler şunlardır:

  • Compute gölgelendiriciler
  • Ayrı gölgelendirici nesneleri
  • Dolaylı çizim komutları
  • Çoklu örnek ve şablon dokuları
  • Gölgelendirme dili iyileştirmeleri
  • Gelişmiş harmanlama modları ve hata ayıklama için uzantılar
  • OpenGL ES 2.0 ve 3.0 ile geriye dönük uyumluluk

Android'de OpenGL ES 3.1 için Java arayüzü, GLES31 ile sağlanır. OpenGL ES 3.1 kullanırken bunu manifest dosyanızda <uses-feature> etiketi ve android:glEsVersion özelliğiyle bildirdiğinizden emin olun. Örneğin:

<manifest>
    <uses-feature android:glEsVersion="0x00030001" />
    ...
</manifest>

Çalışma zamanında cihazın desteklenen OpenGL ES sürümünün nasıl kontrol edileceği de dahil olmak üzere OpenGL ES'yi kullanma hakkında daha fazla bilgi için OpenGL ES API kılavuzuna bakın.

Android Uzantı Paketi

OpenGL ES 3.1'e ek olarak bu sürüm, Java arayüzleri ve gelişmiş grafik işlevselliği için yerel destek içeren bir uzantı paketi sağlar. Bu uzantılar, Android tarafından tek bir paket olarak ele alınır. (ANDROID_extension_pack_es31a uzantısı mevcutsa uygulamanız paketteki tüm uzantıların mevcut olduğunu varsayarak tek bir #extension ifadesiyle gölgelendirme dili özelliklerini etkinleştirebilir.)

Uzantı paketi şunları destekler:

  • Gölgelendirici depolama arabellekleri, resimler ve atomik için garantili parça gölgelendirici desteği (OpenGL ES 3.1'de parça gölgelendirici desteği isteğe bağlıdır.)
  • Tessellasyon ve geometri gölgelendiriciler
  • ASTC (LDR) doku sıkıştırma biçimi
  • Örnek başına interpolasyon ve gölgelendirme
  • Çerçeve arabelleğindeki her renk eki için farklı karıştırma modları

Uzantı paketinin Java arayüzü GLES31Ext ile sağlanır. Uygulama manifestinizde, uygulamanızın yalnızca uzantı paketini destekleyen cihazlara yüklenmesi gerektiğini beyan edebilirsiniz. Örneğin:

<manifest>
    <uses-feature android:name=“android.hardware.opengles.aep”
        android:required="true" />
    ...
</manifest>

Medya

Gelişmiş kamera özellikleri için Camera API

Android 5.0, ayrıntılı fotoğraf yakalama ve görüntü işlemeyi kolaylaştırmak için yeni android.hardware.camera2 API'sini kullanıma sunuyor. Artık sistemde kullanılabilen kamera cihazlarına getCameraIdList() ile programatik olarak erişebilir ve belirli bir cihaza openCamera() ile bağlanabilirsiniz. Resim çekmeye başlamak için bir CameraCaptureSession oluşturun ve yakalanan görüntüleri göndermek için Surface nesnelerini belirtin. CameraCaptureSession, tek bir kare veya bir seri çekim olarak birden çok resim çekecek şekilde yapılandırılabilir.

Yeni görüntüler yakalandığında bildirim almak için CameraCaptureSession.CaptureCallback işleyicisini uygulayın ve çekim isteğinize ayarlayın. Artık sistem görüntü yakalama isteğini tamamladığında CameraCaptureSession.CaptureCallback dinleyiciniz onCaptureCompleted() çağrısı alır ve size görüntü yakalama meta verilerini CaptureResult biçiminde sağlar.

CameraCharacteristics sınıfı, uygulamanızın bir cihazda hangi kamera özelliklerinin bulunduğunu algılamasını sağlar. Nesnenin INFO_SUPPORTED_HARDWARE_LEVEL özelliği, kameranın işlevsellik düzeyini temsil eder.

  • Tüm cihazlar en azından INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY donanım düzeyini destekler. Bu düzey, kullanımdan kaldırılan Camera API'ninkine hemen hemen eşdeğerdir.
  • INFO_SUPPORTED_HARDWARE_LEVEL_FULL donanım düzeyini destekleyen cihazlar, yakalama ve işleme sonrası sürecini manuel olarak kontrol edebilir ve yüksek kare hızlarında yüksek çözünürlüklü görüntüler yakalayabilir.

Güncellenen Kamera API'sinin nasıl kullanılacağını görmek için bu sürümdeki Camera2Basic ve Camera2Video uygulama örneklerine bakın.

Ses çalma

Bu sürüm, AudioTrack öğesinde yapılan aşağıdaki değişiklikleri içerir:

  • Uygulamanız artık ses verilerini kayan nokta biçiminde (ENCODING_PCM_FLOAT) sağlayabilir. Bu, daha fazla dinamik aralık, daha tutarlı hassasiyet ve daha yüksek boşluk sağlar. Kayan nokta aritmetiği, özellikle orta düzey hesaplamalar sırasında yararlıdır. Oynatma uç noktaları, ses verileri için tam sayı biçimini ve daha düşük bit derinliği kullanır. (Android 5.0'da, dahili ardışık düzenin bölümleri henüz kayan nokta değildir.)
  • Uygulamanız artık ses verilerini MediaCodec tarafından sağlanan biçimde ByteBuffer olarak sağlayabilir.
  • WRITE_NON_BLOCKING seçeneği bazı uygulamalar için arabelleğe alma ve çoklu iş parçacığı işlemeyi basitleştirebilir.

Medya oynatma kontrolü

Sistem kullanıcı arayüzünün medya oynatma işleminizden haberdar olduğundan ve albüm kapağını çıkarıp gösterebildiğinden emin olmak için yeni bildirim ve medya API'larını kullanın. Yeni MediaSession ve MediaController sınıflarıyla, bir kullanıcı arayüzü ve hizmet genelinde medya oynatmayı kontrol etmek artık daha kolay.

Yeni MediaSession sınıfı, kullanımdan kaldırılan RemoteControlClient sınıfının yerini alır ve aktarım denetimleri ile medya düğmelerini işlemek için tek bir geri çağırma yöntemi grubu sağlar. Uygulamanız medya oynatma özelliği sağlıyorsa ve Android TV veya Wear platformunda çalışıyorsa taşıma denetimlerinizi aynı geri çağırma yöntemlerini kullanarak yönetmek için MediaSession sınıfını kullanın.

Artık yeni MediaController sınıfıyla kendi medya denetleyici uygulamanızı oluşturabilirsiniz. Bu sınıf, medya oynatmayı uygulamanızın kullanıcı arayüzü işleminden izlemek ve kontrol etmek için iş parçacığı güvenli bir yol sağlar. Kumanda oluştururken bir MediaSession.Token nesnesi belirtin. Böylece, uygulamanız belirtilen MediaSession ile etkileşim kurabilir. MediaController.TransportControls yöntemlerini kullanarak bu oturumda medya oynatmayı kontrol etmek için play(), stop(), skipToNext() ve setRating() gibi komutlar gönderebilirsiniz. Denetleyici ile oturumdaki meta veri ve durum değişikliklerini dinlemek için bir MediaController.Callback nesnesi de kaydedebilirsiniz.

Ayrıca, yeni Notification.MediaStyle sınıfıyla bir medya oturumuna bağlı oynatma kontrolü sağlayan zengin bildirimler oluşturabilirsiniz.

Medyaya göz atma

Android 5.0, uygulamaların yeni android.media.Browse API'si aracılığıyla başka bir uygulamanın medya içeriği kitaplığına göz atabilmesini sağlar. Medya içeriğini uygulamanızda göstermek için MediaBrowserService sınıfını genişletin. MediaBrowserService uygulamanız, uygulamaların hizmetiniz aracılığıyla sağlanan medya içeriğini oynatabilmesi için bir MediaSession.Token öğesine erişim sağlamalıdır.

Bir medya tarayıcısı hizmetiyle etkileşim kurmak için MediaBrowser sınıfını kullanın. MediaBrowser örneği oluştururken MediaSession için bileşen adını belirtin. Uygulamanız bu tarayıcı örneğini kullanarak ilgili hizmete bağlanabilir ve bu hizmet üzerinden sunulan içeriği oynatmak için bir MediaSession.Token nesnesi alabilir.

Depolama

Dizin seçimi

Android 5.0, Depolama Erişim Çerçevesi'nin kapsamını genişleterek kullanıcıların tüm bir dizin alt ağacını seçmelerine olanak tanır. Bu sayede, uygulamalara her öğe için kullanıcı onayı gerekmeden, içerilen tüm dokümanları okuma/yazma erişimi verilir.

Bir dizin alt ağacı seçmek için bir OPEN_DOCUMENT_TREE niyet oluşturun ve gönderin. Sistem, alt ağaç seçimini destekleyen tüm DocumentsProvider örneklerini görüntüleyerek kullanıcının göz atmasını ve dizin seçmesini sağlar. Döndürülen URI, seçilen alt ağacın erişimini temsil eder. Daha sonra, alt ağacı keşfetmek için buildChildDocumentsUriUsingTree() ve buildDocumentUriUsingTree() ile birlikte query() kullanabilirsiniz.

Yeni createDocument() yöntemi, alt ağacın altında yeni dokümanlar veya dizinler oluşturmanıza olanak tanır. Mevcut belgeleri yönetmek için renameDocument() ve deleteDocument() kullanın. Bu çağrıları yapmadan önce sağlayıcı desteğini doğrulamak için COLUMN_FLAGS kontrol edin.

DocumentsProvider uyguluyor ve alt ağaç seçimini desteklemek istiyorsanız isChildDocument() öğesini uygulayın ve COLUMN_FLAGS öğesine FLAG_SUPPORTS_IS_CHILD ekleyin.

Android 5.0 ayrıca, paylaşılan depolama alanında pakete özel yeni dizinler sunar. Bu dizinlerde, uygulamanız MediaStore platformuna dahil edilmek üzere medya dosyaları yerleştirebilir. Yeni getExternalMediaDirs(), tüm paylaşılan depolama cihazlarındaki bu dizinlere giden yolları döndürür. getExternalFilesDir()'a benzer şekilde, uygulamanızın döndürülen yollara erişmek için başka ek izne ihtiyacı yoktur. Platform, bu dizinlerde düzenli olarak yeni medya arar ancak yeni içeriği açık bir şekilde taramak için MediaScannerConnection aracını da kullanabilirsiniz.

Kablosuz ve Bağlantı

Birden çok ağ bağlantısı

Android 5.0, uygulamanızın belirli özelliklere sahip kullanılabilir ağları dinamik olarak taramasına ve bunlarla bağlantı kurmasına olanak tanıyan yeni çoklu ağ API'leri sunar. Bu işlev, uygulamanız SRL, MMS veya operatör faturalandırma ağı gibi özel bir ağ gerektirdiğinde ya da belirli bir taşıma protokolü türünü kullanarak veri göndermek istediğinizde yararlı olur.

Uygulamanızdan dinamik olarak bir ağ seçmek ve ağa bağlanmak için şu adımları izleyin:

  1. ConnectivityManager oluşturun.
  2. NetworkRequest nesnesi oluşturmak ve uygulamanızın ilgilendiği ağ özellikleri 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() veya registerNetworkCallback() yöntemini çağırıp NetworkRequest nesnesini ve ConnectivityManager.NetworkCallback uygulamasını geçirin. Tespit edilen uygun bir ağa aktif olarak geçiş yapmak istiyorsanız requestNetwork() yöntemini kullanın. Aktif olarak geçiş yapmadan yalnızca taranan ağlarla ilgili bildirim 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ğırmasını çağırır. Ağ hakkında ek bilgi almak veya trafiği seçilen ağı kullanmak üzere yönlendirmek için geri çağırmadaki Network nesnesini kullanabilirsiniz.

Bluetooth Düşük Enerji

Android 4.3, merkezi rolde Bluetooth Düşük Enerji (Bluetooth LE) için platform desteğini kullanıma sundu. Android 5.0'da bir Android cihaz artık Bluetooth LE çevre birimi cihazı gibi davranabilir. Uygulamalar, varlıklarını yakındaki cihazlara tanıtmak için bu özelliği kullanabilir. Örneğin, bir cihazın adım ölçer ya da sağlık izleyicisi olarak çalışmasına ve verilerini başka bir Bluetooth LE cihazına iletmesine olanak tanıyan uygulamalar oluşturabilirsiniz.

Yeni android.bluetooth.le API'leri uygulamalarınızın reklam yayınlamasına, yanıt taramasına ve yakındaki Bluetooth LE cihazlarla bağlantı kurmasına olanak tanır. Yeni reklam ve tarama özelliklerini kullanmak için manifest dosyanıza BLUETOOTH_ADMIN iznini ekleyin. Kullanıcılar, uygulamanızı Play Store'dan güncellediğinde veya Play Store'dan indirdiklerinde, uygulamanıza şu izni vermeleri istenir: "Bluetooth bağlantı bilgileri: Uygulamanın, yakındaki Bluetooth cihazlara yayın yapmak veya bu cihazlarla ilgili bilgi almak da dahil olmak üzere Bluetooth'u kontrol etmesine izin verir."

Diğer cihazların uygulamanızı keşfedebilmesi amacıyla Bluetooth LE reklamcılığını başlatmak için startAdvertising() numaralı telefonu arayıp AdvertiseCallback sınıfının uygulanmasını geçin. Geri çağırma nesnesi, reklamcılık işleminin başarılı veya başarısız olduğunu belirten bir rapor alır.

Android 5.0, ScanFilter sınıfını kullanıma sunarak uygulamanızın yalnızca ilgilendiği belirli cihaz türlerini tarayabilmesini sağlar. Bluetooth LE cihazlarını taramaya başlamak için startScan() numaralı telefonu arayıp filtre listesini iletin. Yöntem çağrısında, bir Bluetooth LE reklamı bulunduğunda bildirilecek ScanCallback uygulaması da sağlamanız gerekir.

NFC geliştirmeleri

Android 5.0, NFC'nin daha geniş ve esnek bir şekilde kullanılabilmesi için şu geliştirmeleri ekler:

  • Android Beam artık paylaş menüsünde kullanılabilir.
  • Uygulamanız, veri paylaşmak için invokeBeam() numaralı telefonu çağırarak kullanıcının cihazındaki Android ışını'nı çağırabilir. Bu sayede, veri aktarımını tamamlamak için kullanıcının cihazı NFC özellikli başka bir cihaza manuel olarak dokunması gerekmez.
  • UTF-8 metin verileri içeren bir NDEF kaydı oluşturmak için yeni createTextRecord() yöntemini kullanabilirsiniz.
  • Ödeme uygulaması geliştiriyorsanız artık registerAidsForService() yöntemini çağırarak NFC uygulama kimliğini (AID) dinamik olarak kaydedebilirsiniz. Belirli bir etkinlik ön plandayken kullanılması gereken tercih edilen kart emülasyon hizmetini ayarlamak için setPreferredService() kullanabilirsiniz.

Volta Projesi

Android 5.0, yeni özelliklere ek olarak pil ömründe iyileştirmelere de önem verir. Uygulamanızın güç tüketimini anlayıp optimize etmek için yeni API'leri ve aracı kullanın.

İşleri planlama

Android 5.0, sistemin daha sonra veya belirtilen koşullarda (ör. cihaz şarj olurken) eşzamansız olarak çalışması için işler tanımlayarak pil ömrünü optimize etmenizi sağlayan yeni bir JobScheduler API'si sunar. İş planlaması aşağıdaki gibi durumlarda yararlıdır:

  • Uygulamada, kullanıcılara yönelik olmayan ve erteleyebileceğiniz çalışmalar bulunur.
  • Cihaz fişe takıldığında uygulamada gerçekleştirmek istediğiniz bir işlem var.
  • Uygulama, ağ erişimi veya kablosuz bağlantı gerektiren bir görev içeriyor.
  • Uygulamada, düzenli aralıklarla toplu olarak çalıştırmak istediğiniz bir dizi görev vardır.

Bir iş birimi, bir JobInfo nesnesi tarafından sarmalanmış. Bu nesne, zamanlama ölçütlerini belirtir.

Planlanan görevin nasıl çalışacağını yapılandırmak için JobInfo.Builder sınıfını kullanın. Görevi belirli koşullarda çalışacak şekilde planlayabilirsiniz. Ö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
  • Belli bir teslim tarihinden önce ya da minimum bir gecikmeyle bitirin

Örneğin, görevinizi sınırsız bir ağda çalıştırmak için aşağıdaki gibi bir kod ekleyebilirsiniz:

Kotlin

val uploadTask: JobInfo = JobInfo.Builder(
        jobId,
        serviceComponent /* JobService component */
).run {
    setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
    build()
}
val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
jobScheduler.schedule(uploadTask)

Java

JobInfo uploadTask = new JobInfo.Builder(jobId,
                                         serviceComponent /* JobService component */)
        .setRequiredNetworkCapabilities(JobInfo.NETWORK_TYPE_UNMETERED)
        .build();
JobScheduler jobScheduler =
        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(uploadTask);

Cihaz sabit güç sağlıyorsa (yani fişe 2 dakikadan uzun süredir fişe takılıysa ve pil sağlıklı bir seviyedeyse) işin son tarihi geçmemiş olsa bile sistem çalışmaya hazır olan tüm planlanmış işleri çalıştırır.

JobScheduler API'nin nasıl kullanılacağına dair bir örnek görmek için bu sürümdeki JobSchedulerSample uygulama örneğine bakın.

Pil kullanımına yönelik geliştirici araçları

Yeni dumpsys batterystats komutu, bir cihazdaki pil kullanımı hakkında benzersiz kullanıcı kimliğine (UID) göre düzenlenmiş ilginç istatistiksel veriler oluşturur. İstatistikler şunları içerir:

  • Pille ilgili etkinliklerin geçmişi
  • Cihaza ilişkin genel istatistikler
  • UID ve sistem bileşeni başına yaklaşık güç kullanımı
  • Paket başına uygulama başına mobil ms
  • Sistem UID'si toplu istatistikler
  • Uygulama UID'si toplu istatistikler

Sonucu uyarlamayla ilgili çeşitli seçenekleri öğrenmek için --help seçeneğini kullanın. Örneğin, cihazın son şarj edilmesinden bu yana belirli bir uygulama paketine ait pil kullanımı istatistiklerini yazdırmak için şu komutu çalıştırın:

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

Günlüklerden güçle ilgili etkinliklerin HTML görselleştirmesini oluşturmak için dumpsys komutunun çıktısında Pil Geçmişi aracını kullanabilirsiniz. Bu bilgiler, pille ilgili sorunları anlamanızı ve teşhis etmenizi kolaylaştırır.

İş Yerinde ve Eğitimde Android

Yönetilen temel hazırlık

Android 5.0, kurumsal bir ortamda uygulama çalıştırmak için yeni işlevler sunar. Kullanıcının mevcut bir kişisel hesabı varsa cihaz yöneticisi cihaza ortak ancak ayrı bir yönetilen profil eklemek için yönetilen bir temel hazırlık işlemi başlatabilir. Yönetilen profillerle ilişkilendirilmiş uygulamalar, kullanıcının Başlatıcı'da, son kullanılanlar ekranında ve bildirimlerde, yönetilmeyen uygulamalarla birlikte görünür.

Yönetilen temel hazırlık işlemini başlatmak için bir Intent içinde ACTION_PROVISION_MANAGED_PROFILE gönderin. Çağrı başarılı olursa sistem, onProfileProvisioningComplete() geri çağırma işlemini tetikler. Ardından bu yönetilen profili etkinleştirmek için setProfileEnabled() numaralı telefonu arayabilirsiniz.

Varsayılan olarak, yönetilen profilde uygulamaların yalnızca küçük bir alt kümesi etkindir. enableSystemApp() numaralı telefonu arayarak yönetilen profile ek uygulamalar yükleyebilirsiniz.

Bir Başlatıcı uygulaması geliştiriyorsanız mevcut kullanıcı ve ilişkili yönetilen profiller için başlatılabilir etkinliklerin listesini almak üzere yeni LauncherApps sınıfını kullanabilirsiniz. Başlatıcınız, çekilebilir simgeye bir iş rozeti ekleyerek yönetilen uygulamaları görsel olarak daha belirgin hale getirebilir. Rozetli simgeyi geri almak için getUserBadgedIcon() numaralı telefonu arayın.

Yeni işlevin nasıl kullanılacağını görmek için bu sürümdeki BasicManagedProfile uygulama örneğine bakın.

Cihaz sahibi

Android 5.0, cihaz sahibi uygulamalarını dağıtma olanağını sunar. Cihaz sahibi, ikincil kullanıcılar oluşturup kaldırma ve cihazda genel ayarları yapılandırma ek özelliğine sahip olan özel bir cihaz yöneticisi türüdür. Cihaz sahibi uygulamanız, yönetilen cihazlardaki yapılandırma, güvenlik ve uygulamaları ayrıntılı bir şekilde kontrol etmek için DevicePolicyManager sınıfındaki yöntemleri kullanabilir. Bir cihazın aynı anda yalnızca tek bir etkin cihaz sahibi olabilir.

Bir cihaz sahibini dağıtmak ve etkinleştirmek için cihaz temel hazırlığı yapılmamış durumundayken bir programlama uygulamasından cihaza NFC veri aktarımı gerçekleştirmeniz gerekir. Bu veri aktarımı, Yönetilen temel hazırlık bölümünde açıklanan temel hazırlık amacındakilerle aynı bilgileri gönderir.

Ekran sabitleme

Android 5.0'da kullanıma sunulan yeni ekran sabitleme API'si, kullanıcıların görevinizden ayrılmalarını veya bildirimlerle kesintiye uğramalarını geçici olarak kısıtlamanızı sağlar. Örneğin, Android'de yüksek riskli değerlendirme şartlarını destekleyen bir eğitim uygulaması veya tek amaçlı ya da kiosk uygulaması geliştiriyorsanız bu uygulama kullanılabilir. Uygulamanız ekran sabitlemeyi etkinleştirdikten sonra kullanıcılar, uygulamanız moddan çıkana kadar bildirimleri göremez, diğer uygulamalara erişemez veya ana ekrana dönemez.

Ekran sabitlemeyi iki şekilde etkinleştirebilirsiniz:

  • Manuel olarak: Kullanıcılar, Ayarlar > Güvenlik > Ekran Sabitleme'den ekran sabitlemeyi etkinleştirebilir ve son kullanılan ekranındaki yeşil raptiye simgesine dokunarak sabitlemek istedikleri görevleri seçebilir.
  • Programatik olarak: Ekran sabitlemeyi programatik olarak etkinleştirmek için uygulamanızdan startLockTask() numaralı telefonu arayın. İstekte bulunan uygulama bir cihaz sahibi değilse kullanıcıdan onay vermesi istenir. Cihaz sahibi bir uygulama, uygulamaların kullanıcı onayı adımı olmadan sabitlenebilmesini sağlamak için setLockTaskPackages() yöntemini çağırabilir.

Görev kilitleme etkin olduğunda aşağıdaki davranış gerçekleşir:

  • Durum çubuğu boş ve kullanıcı bildirimleri ile durum bilgileri gizlendi.
  • 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.
  • Bir cihaz sahibi ekran sabitlemeyi çağırdığında, kullanıcı, uygulama stopLockTask() komutunu çağırana kadar uygulamanıza kilitli kalır.
  • Ekran sabitleme, cihaz sahibi olmayan başka bir uygulama tarafından veya doğrudan kullanıcı tarafından etkinleştirilirse kullanıcı hem Geri hem de Son düğmelerini basılı tutarak çıkabilir.

Baskı Çerçevesi

PDF'yi bit eşlem olarak oluştur

Artık yeni PdfRenderer sınıfını kullanarak PDF belge sayfalarını yazdırmak için bit eşlem resimler halinde oluşturabilirsiniz. Sistemin yazdırılabilir içeriği yazdığı aranabilir bir ParcelFileDescriptor (yani içeriğe rastgele erişilebilir) belirtmeniz gerekir. Uygulamanız openPage() ile oluşturma işlemi için bir sayfa alabilir, ardından açılan PdfRenderer.Page öğesini bit eşlem haline getirmek için render() yöntemini çağırabilir. Ayrıca, dokümanın yalnızca bir bölümünü bit eşlem resmine dönüştürmek istiyorsanız (örneğin, belgeyi yakınlaştırmak için parçalı oluşturma özelliğini uygulamak üzere) ek parametreler ayarlayabilirsiniz.

Yeni API'lerin nasıl kullanılacağıyla ilgili bir örnek için PdfRendererBasic örneğine bakın.

Sistem

Uygulama kullanım istatistikleri

Artık yeni android.app.usage API ile Android cihazlardaki uygulama kullanım geçmişine erişebilirsiniz. Bu API, kullanımdan kaldırılan getRecentTasks() yöntemine göre daha ayrıntılı kullanım bilgileri sağlar. Bu API'yi kullanmak için önce manifest dosyanızda "android.permission.PACKAGE_USAGE_STATS" iznini beyan etmeniz gerekir. Kullanıcı, kullanım erişimiyle Ayarlar > Güvenlik > Uygulamalar'dan bu uygulamaya erişimi de etkinleştirmelidir.

Sistem; kullanım verilerini uygulama bazında toplar. Veriler günlük, haftalık, aylık ve yıllık aralıklarla toplanır. Sistemin bu verileri sakladığı maksimum süre aşağıdaki gibidir:

  • Günlük veri: 7 gün
  • Haftalık veriler: 4 hafta
  • Aylık veriler: 6 ay
  • Yıllık veriler: 2 yıl

Sistem her uygulama için aşağıdaki verileri kaydeder:

  • Uygulamanın en son kullanıldığı zaman
  • Söz konusu zaman aralığında uygulamanın ön planda olduğu toplam süre (gün, hafta, ay veya yıla göre)
  • Bir bileşenin (paket ve etkinlik adı ile tanımlanır) gün boyunca ön plana veya arka plana taşındığı zaman damgasını yakalama
  • Bir cihaz yapılandırması değiştiğinde (ör. döndürme nedeniyle cihaz yönü değiştiğinde) yakalanan zaman damgası

Test ve Erişilebilirlik

Test ve erişilebilirlikle ilgili iyileştirmeler

Android 5.0, test ve erişilebilirlik için aşağıdaki desteği ekler:

  • Yeni getWindowAnimationFrameStats() ve getWindowContentFrameStats() yöntemleri, pencere animasyonları ve içerik için çerçeve istatistiklerini yakalar. Bu yöntemler, bir uygulamanın sorunsuz bir kullanıcı deneyimi sağlamak için yeterli yenileme sıklığında kare oluşturup oluşturmadığını değerlendirmek üzere araç testleri yazmanızı sağlar.
  • Yeni executeShellCommand() yöntemi, araç testinizden kabuk komutlarını çalıştırmanızı sağlar. Komut yürütme işlemi, cihaza bağlı bir ana makineden adb shell çalıştırmaya benzer. Böylece dumpsys, am, content ve pm gibi kabuk tabanlı araçları kullanabilirsiniz.
  • Erişilebilirlik API'lerini kullanan erişilebilirlik hizmetleri ve test araçları (ör. UiAutomator), artık ekranda gören kullanıcıların etkileşimde bulunabileceği pencerelerin özellikleri hakkında ayrıntılı bilgi alabilir. AccessibilityWindowInfo nesnelerinin listesini almak için yeni getWindows() yöntemini çağırın.
  • 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 ürününde bulunan işlemlerle ilgili API'lerin yerini almaktadır.
  • Android 5.0, uygulamanızdaki metin okuma sentezi üzerinde daha hassas bir kontrole sahip olmanızı sağlar. Yeni Voice sınıfı, uygulamanızın belirli yerel ayarlar, kalite, gecikme derecelendirmesi ve metin okuma motoruna özel parametrelerle ilişkilendirilmiş ses profillerini kullanmasına olanak tanır.

IME

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

Android 5.0'dan itibaren kullanıcılar, platform tarafından desteklenen tüm giriş yöntemi düzenleyicileri (IME) arasında daha kolay geçiş yapabilir. Belirlenen geçiş işlemi gerçekleştiğinde (genellikle elektronik klavyedeki Yerküre simgesine dokunarak) tüm IME'ler arasında geçiş yapılır. Davranıştaki bu değişiklik shouldOfferSwitchingToNextInputMethod() yöntemi ile uygulanır.

Buna ek olarak, çerçeve artık bir sonraki IME'nin herhangi bir geçiş mekanizması içerip içermediğini (ve dolayısıyla, IME'nin kendisinden sonra IME'ye geçişi destekleyip desteklemediğini) de kontrol eder. Geçiş mekanizması olan bir IME, olmadan IME'ye dönüştürülmez. Davranıştaki bu değişiklik switchToNextInputMethod() yöntemi tarafından uygulanır.

Güncellenen IME geçiş API'larının nasıl kullanılacağına dair bir örnek görmek için bu sürümde güncellenmiş yazılım klavyesi uygulama örneğine bakın. IME'ler arasında geçişin nasıl uygulanacağı hakkında daha fazla bilgi edinmek için Giriş Yöntemi Oluşturma bölümüne bakın.

Manifest Beyanları

Beyan edilebilir gerekli özellikler

Aşağıdaki değerler artık <uses-feature> öğesinde desteklenmektedir. Böylece uygulamanızın yalnızca uygulamanızın ihtiyaç duyduğu özellikleri sağlayan cihazlara yüklendiğinden emin olabilirsiniz.

Kullanıcı izinleri

Aşağıdaki izin, uygulamanızın belirli API'lere erişmek için gerektirdiği izinleri belirtmek amacıyla artık <uses-permission> öğesinde desteklenmektedir.

  • BIND_DREAM_SERVICE: API düzeyi 21 ve üstünü hedeflerken bir Daydream hizmeti yalnızca sistemin bağlanmasını sağlamak için bu izni gerektirir.