Android 12, geliştiriciler için harika yeni özellikler ve API'ler sunar. Aşağıdaki bölümler, uygulamalarınız için özellikler hakkında bilgi edinmenize ve ilgili API'leri kullanmaya başlamanıza yardımcı olur.
Yeni, değiştirilmiş ve kaldırılan API'lerin ayrıntılı listesi için API fark raporunu okuyun. Yeni API'lerle ilgili ayrıntılar için Android API referansını ziyaret edin. Yeni API'ler, görünürlük sağlamak için vurgulanmıştır. Ayrıca, platform değişikliklerinin uygulamalarınızı etkileyebileceği alanlar hakkında bilgi edinmek için Android 12'yi hedefleyen uygulamalar ve tüm uygulamalar için Android 12 davranış değişikliklerine göz atmayı unutmayın.
Kullanıcı deneyimi
Material You
Android 12'de, daha kişiselleştirilmiş, güzel uygulamalar oluşturmanıza yardımcı olan Material You adlı yeni bir tasarım dili kullanıma sunuldu. En yeni Materyal Tasarım 3 güncellemelerinin tümünü uygulamalarınıza getirmek için Materyal Tasarım Bileşenleri'nin alfa sürümünü deneyin.
Widget iyileştirmeleri
Android 12, platform ve başlatıcılardaki kullanıcı ve geliştirici deneyimini iyileştirmek için mevcut Widgets API'yi yeniliyor. Widget'ınızın Android 12 ile uyumlu olduğundan emin olmanıza ve widget'ı yeni özelliklerle yenilemenize yardımcı olacak bir rehber oluşturduk.
Daha fazla bilgi için Android 12 widget iyileştirmeleri bölümüne göz atın.
Zengin içerik ekleme
Android 12, uygulamanızın pano, klavye veya sürükleyip bırakma gibi mevcut herhangi bir kaynaktan zengin içerik almasına olanak tanıyan yeni ve birleşik bir API'yi kullanıma sunar.
Daha fazla bilgi için Zengin içerik alma bölümüne bakın.
Uygulama başlangıç ekranları API'si
Android 12, tüm uygulamalar için yeni bir uygulama başlatma animasyonu sunar. Bu animasyonda lansman anından uygulama içi hareket, uygulama simgesini gösteren başlangıç ekranı ve uygulamaya geçiş imkanı bulunur. Daha fazla bilgi için başlangıç ekranları geliştirici kılavuzuna bakın.
Köşeleri yuvarlatılmış API'ler
Android 12'de, yuvarlatılmış köşeler için yarıçap ve merkez noktası sağlayan RoundedCorner
ve WindowInsets.getRoundedCorner(int
position)
kullanıma sunuldu.
Daha fazla bilgi için yuvarlatılmış köşeler bölümüne bakın.
Zengin dokunsal geri bildirim deneyimleri
Android 12, kullanıcı arayüzü etkinlikleri için bilgilendirici dokunsal geri bildirim, oyunlar için etkileyici ve eğlenceli efektler ve üretkenlik için dikkate dayalı dokunma teknolojisi oluşturma araçlarının kapsamını genişletiyor.
Aktüatör efektleri
Android 12, en yeni aktüatörlerin daha geniş frekans bant genişliğinden yararlanan düşük tik gibi etkileyici efektler ekler. Oyun geliştiricileri artık birden fazla aktüatörde aynı etkiyi veya farklı dokunma teknolojisi efektlerini eşzamanlı olarak sunmak için oyun denetleyicilerinde bağımsız olarak birden fazla aktüatöre erişebilir. Geliştiricilere, zengin dokunsal efektlerin yapı taşları olarak sabit değerleri ve temel öğeleri (kullanıcı arayüzü etkinliklerini geliştirmek için sabit değerler, daha karmaşık efektler için temel öğeleri sıralamak için ise dokuntik oluşturucu) kullanmalarını öneririz. Bu API'leri Pixel 4 cihazlarda deneyebilirsiniz. Biz de ekosistemdeki kullanıcılara en son dokunma teknolojisi desteği sunmak için cihaz üreticisi iş ortaklarımızla çalışmaya devam ediyoruz.
Sese bağlı dokunsal geri bildirim efektleri
Android 12 uygulamaları, telefonun titreşimini kullanarak sesli oturumdan elde edilen dokunsal geri bildirim oluşturabilir. Bu da daha sürükleyici oyun ve ses deneyimleri için bir fırsat sunar. Örneğin, dokunma teknolojisiyle geliştirilmiş zil sesleri arayanları tanımlamanıza yardımcı olabilir veya bir sürüş oyunu engebeli arazi hissini simüle edebilir.
Daha fazla bilgi için HapticGenerator
referans belgelerine göz atın.
Uygulama Araması
Android 12, cihazda yüksek performanslı arama motoru olan AppSearch'ü bir sistem hizmeti olarak kullanıma sundu. AppSearch, uygulamaların yapılandırılmış verileri dizine eklemesine ve yerleşik tam metin arama özellikleriyle bu verilerde arama yapmasına olanak tanır. Ayrıca AppSearch, son derece verimli dizine ekleme ve alma, çok dilli destek ve alaka düzeyi sıralaması gibi yerel arama özelliklerini destekler.
AppSearch iki farklı şekilde sunulur: Uygulamanızın eski Android sürümleriyle uyumlu olan yerel bir dizini veya Android 12'de tüm sistem için korunan merkezi bir dizin. Uygulamanız, merkezi dizini kullanarak verilerinin, sistemin önceden yüklenmiş bilgi bileşeni tarafından sistem kullanıcı arayüzü yüzeylerinde görüntülenmesine izin verebilir. Sistem kullanıcı arayüzü yüzeylerinde tam olarak hangi verilerin gösterileceği OEM'e bağlıdır. Ayrıca uygulamanız, verileri diğer uygulamalarla güvenli bir şekilde paylaşarak diğer uygulamaların da bu verilerde arama yapmasını sağlayabilir.
AppSearch hakkında daha fazla bilgiyi geliştirici kılavuzundan edinebilir ve bu uygulamayı geliştirici dostu bir API yüzeyinin yanı sıra ek açıklama işlemcisi desteği sağlayan AppSearch Jetpack kitaplığıyla kullanmaya başlayabilirsiniz.
Oyun Modu
Oyun Modu API'si ve Oyun Modu müdahaleleri, kullanıcı ayarlarına veya oyuna özgü yapılandırmalara bağlı olarak performans veya pil ömrü gibi özelliklere öncelik vererek oyunu optimize etmenize olanak tanır.
Daha fazla bilgi için Oyun Modu bölümünü inceleyin.
Pencere içinde pencere (PIP) önerileri ve iyileştirmeleri
Android 12'de, PiP modu için aşağıdaki iyileştirmeler yapıldı:
Yeni PiP hareketleri için destek
Android 12 artık PiP penceresi için saklama ve yakınlaştırmak için sıkıştırma hareketlerini desteklemektedir:
Kullanıcı pencereyi gizlemek için pencereyi sol veya sağ kenara sürükleyebilir. Pencerenin kilidini açmak için kullanıcı, saklanmış pencerenin görünür bölümüne dokunabilir veya dışarı sürükleyebilir.
Kullanıcı artık yakınlaştırmak için sıkıştırma özelliğini kullanarak PiP penceresini yeniden boyutlandırabilir.
Şık bir PiP geçiş deneyimini destekleyen yeni özellikler önerildi
Android 12, tam ekran ve PiP pencereler arasındaki animasyonlu geçişlere önemli estetik iyileştirmeler ekledi. Tüm geçerli değişiklikleri uygulamanızı kesinlikle öneririz. Uygulama tamamlandıktan sonra, bu değişiklikler başka bir işlem gerektirmeden katlanabilir cihazlar ve tabletler gibi büyük ekranlara göre otomatik olarak ölçeklenir.
Bu özellikler şunlardır:
Hareketle gezinme ile PiP moduna daha kolay geçiş için yeni bir API işareti
Hareketle gezinme modunda yukarı kaydırırken PiP moduna daha kolay geçiş sağlamak için
setAutoEnterEnabled
işaretini kullanın. Daha önce Android, PiP penceresinde kararmadan önce ana sayfaya doğru kaydırma animasyonunun bitmesini bekliyordu.PIP moduna girerken ve bu moddan çıkarken daha akıcı animasyonlar
PiP moduna girerken ve bu moddan çıkarken daha akıcı bir animasyon uygulamak için
SourceRectHint
işareti artık yeniden kullanılıyor.Video dışı içerikler için sorunsuz yeniden boyutlandırmayı devre dışı bırakan yeni bir API işareti
SeamlessResizeEnabled
işareti, PiP penceresinde video olmayan içerik yeniden boyutlandırıldığında çok daha yumuşak bir çapraz geçiş animasyonu sağlar. Önceden, video olmayan içeriğin PiP penceresinde yeniden boyutlandırılması rahatsız edici görsel yapılar oluşturabiliyordu.
Gelen aramaların önem sıralamasını sağlayan yeni telefon araması bildirimleri
Android 12'de, telefon aramaları için yeni bir bildirim stili Notification.CallStyle
eklendi. Bu şablonu kullandığınızda uygulamanız, durum çubuğunda çağrının saatini gösteren belirgin bir çip görüntüleyerek etkin çağrıların önemini belirtebilir. Kullanıcı bu çipe dokunarak görüşmeye geri dönebilir.
Gelen ve devam eden çağrılar kullanıcılar için en kritik öneme sahip olduklarından, bu bildirimlere gölgede en üst sıralarda yer verilir. Bu sıralama, sistemin bu öncelikli aramaları potansiyel olarak başka cihazlara yönlendirmesine de olanak tanır.
Tüm çağrı türleri için aşağıdaki kodu uygulayın.
Kotlin
// Create a new call with the user as caller. val incoming_caller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
Java
// Create a new call with the user as caller. Person incoming_caller = new Person.Builder() .setName("Jane Doe") .setImportant(true) .build();
Gelen bir arama için arama stili bildirim oluşturmak üzere forIncomingCall()
aracını kullanın.
Kotlin
// Create a call style notification for an incoming call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incoming_caller)
Java
// Create a call style notification for an incoming call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incoming_caller);
Devam eden bir çağrı için arama stili bildirim oluşturmak üzere forOngoingCall()
aracını kullanın.
Kotlin
// Create a call style notification for an ongoing call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOnGoingCall(caller, hangupIntent)) .addPerson(second_caller)
Java
// Create a call style notification for an ongoing call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOnGoingCall(caller, hangupIntent)) .addPerson(second_caller);
Bir aramayı filtrelemek üzere arama stili bildirim oluşturmak için forScreeningCall()
aracını kullanın.
Kotlin
// Create a call style notification for screening a call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller)
Java
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller);
Bildirimler için zenginleştirilmiş resim desteği
Android 12 ile artık MessagingStyle()
ve BigPictureStyle()
bildirimlerinde animasyonlu resimler sağlayarak uygulamanızın bildirim deneyimini zenginleştirebilirsiniz. Ayrıca uygulamanız artık kullanıcıların, iletileri bildirim gölgesinden yanıtladıkları zaman resim mesajı gönderebilmelerini sağlayabilir.
Hareketle gezinme için kapsamlı mod iyileştirmeleri
Android 12, kullanıcıların kapsamlı moddayken hareketle gezinme komutlarını gerçekleştirmelerini kolaylaştırmak için mevcut davranışları birleştirir. Ayrıca Android 12, sürekli yoğun içerik modu için geriye dönük uyumluluk davranışı sunar.
Son kullanılanlar URL paylaşımı (yalnızca Pixel)
Pixel cihazlarda kullanıcılar artık son görüntülenen web içeriklerinin bağlantılarını doğrudan Son Kullanılanlar ekranından paylaşabilirler. Kullanıcı bir uygulamadaki içeriği ziyaret ettikten sonra Son Kullanılanlar ekranına gidip içeriği görüntülediği uygulamayı bulabilir, ardından URL'yi kopyalamak veya paylaşmak için bağlantı düğmesine dokunabilir.
Daha fazla bilgi için Son kullanılanların URL paylaşımını etkinleştirme bölümüne bakın.
Güvenlik ve gizlilik
Gizlilik Kontrol Paneli
Android 12 veya sonraki sürümleri çalıştıran desteklenen cihazlarda sistem ayarlarında bir Gizlilik Kontrol Paneli ekranı görünür. Bu ekranda kullanıcılar, uygulamaların konum, kamera ve mikrofon bilgilerine eriştiğini gösteren ayrı ekranlara erişebilirler. Her ekranda, farklı uygulamaların belirli bir veri türüne ne zaman eriştiğine dair bir zaman çizelgesi gösterilir. Şekil 1'de konum bilgilerine ilişkin veri erişimi zaman çizelgesi gösterilmektedir.
Uygulamanız, kullanıcılara bir gerekçe sunarak uygulamanızın konum, kamera veya mikrofon bilgilerine neden eriştiğini anlamalarına yardımcı olabilir. Bu gerekçe, yeni Gizlilik Kontrol Paneli ekranında, uygulamanızın izinler ekranında veya her ikisinde birden gösterilebilir.
Bluetooth izinleri
Android 12; BLUETOOTH_SCAN
, BLUETOOTH_ADVERTISE
ve BLUETOOTH_CONNECT
izinlerini kullanıma sunuyor. Bu izinler, Android 12'yi hedefleyen uygulamaların, özellikle de cihaz konumuna erişim gerektirmeyen uygulamalarda Bluetooth cihazlarla etkileşimde bulunmasını kolaylaştırır.
Uygulamanızın Bluetooth izin beyanlarını güncelleme
Cihazınızı Android 12 veya sonraki sürümleri hedeflemeye hazırlamak için uygulamanızın mantığını güncelleyin. Eski Bluetooth izinleri grubunu belirtmek yerine daha modern bir Bluetooth izinleri grubunu beyan edin.
İzin grubu araması
Android 12 veya sonraki sürümlerde sistemin, platform tarafından sağlanan izinleri izin grupları halinde nasıl düzenlediğini sorgulayabilirsiniz:
- Sistemin platform tanımlı izin yerleştirdiği izin grubunu belirlemek için
getGroupOfPlatformPermission()
yöntemini çağırın. - Sistemin belirli bir izin grubuna yerleştirdiği platform tanımlı izinleri belirlemek için
getPlatformPermissionsForGroup()
çağrısı yapın.
Uygulama yer paylaşımı pencerelerini gizle
Android 12, SYSTEM_ALERT_WINDOW
iznine sahip uygulamalar tarafından çizilen yer paylaşımlı pencereleri gizleme özelliğini kullanıma sunuyor.
HIDE_OVERLAY_WINDOWS
iznini beyan ettikten sonra, bir uygulama kendi penceresi görünür olduğunda TYPE_APPLICATION_OVERLAY
türündeki tüm pencerelerin gizlenmesi gerektiğini belirtmek için setHideOverlayWindows()
yöntemini çağırabilir. Uygulamalar, işlem onay akışları gibi hassas ekranları görüntülerken bunu yapmayı tercih edebilir.
TYPE_APPLICATION_OVERLAY
türünde pencereler gösteren uygulamalar, pencere içinde pencere veya baloncuk gibi kullanım alanları için daha uygun olabilecek alternatifler kullanmayı düşünmelidir.
Bilinen imzalayanlar izni koruma işareti
Android 12'den itibaren imza düzeyindeki izinler için knownCerts
özelliği, bildirim zamanında bilinen imza sertifikalarının özetlerine başvurmanıza olanak tanır.
Uygulamanız, bu özelliği beyan edip knownSigner
işaretini kullanarak cihazların ve uygulamaların, cihaz üretimi ve gönderimi sırasında uygulamaları imzalamak zorunda kalmadan diğer uygulamalara imza izinleri vermesine izin verebilir.
Cihaz özellikleri onayı
Android 12, bu uygulamalar yeni bir anahtar oluşturduğunda onay sertifikasında bulunan cihaz özelliklerini doğrulayabilen uygulama grubunu genişletir.
Android 9'dan (API düzeyi 28) itibaren, Keymaster 4.0 veya sonraki sürümleri kullanan cihaz politikası sahipleri (DPO'lar) bu onay sertifikalarındaki cihaz özelliklerini doğrulayabilir. Android 12'den itibaren, Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen tüm uygulamalar bu doğrulamayı setDevicePropertiesAttestationIncluded()
yöntemini kullanarak gerçekleştirebilir.
Oluşturulan cihaz özellikleri aşağıdaki Build
alanlarını içerir:
BRAND
DEVICE
MANUFACTURER
MODEL
PRODUCT
Güvenli kilit ekranı bildirim işlemleri
Android 12'den itibaren Notification.Action.Builder
sınıfı setAuthenticationRequired()
yöntemini destekler. Bu yöntem, uygulamanız belirli bir bildirim işlemini çağırmadan önce cihazın kilidinin açılmasını zorunlu tutar. Bu yöntem, kilitli cihazlardaki bildirimlere fazladan bir güvenlik katmanı eklemeye yardımcı olur.
BiometricPrompt için yerelleştirilebilir dizeler
Android 12, uygulamanızın biyometrik kimlik doğrulama kullanıcı deneyimini iyileştirmenize yardımcı olacak yeni API'leri kullanıma sunar. Yeni BiometricManager.Strings
iç içe yerleştirilmiş sınıf, uygulamanızın kullanıcı tarafından okunabilir ve yerelleştirilmiş bir düğme etiketi, istem mesajı veya uygulama ayarı adı almasını sağlayan getButtonLabel()
, getPromptMessage()
ve getSettingName()
yöntemlerini içerir. Kullanılan biyometrik kimlik doğrulama yöntemlerine özel, "Yüz tanıma kilidi kullan" veya "Devam etmek için parmak izinizi kullanın" gibi, kullanıcılara yönelik daha hassas talimatlar oluşturmak için bu etiketleri kullanın.
Mesajlaşma uygulamalarında kimlik avı algılama (yalnızca Pixel)
Android 12, desteklenen Pixel cihazlarda popüler mesajlaşma uygulamalarında alınan mesajlarda kimlik avı algılama özelliğini çalıştırır. Sistem, şüpheli işlemleri algılamak için cihaz üzerindeki makine öğrenimini kullanır. Algılandığında sistem, kullanıcıları uyarmak için mesajlaşma uygulamasının kullanıcı arayüzünün üst kısmında bir güvenlik yer paylaşımı görüntüler. Örneğin, kimlik avı algılaması kullanıcıları aşağıdaki potansiyel riskler konusunda uyarabilir:
- Kod veya para gönderme gibi şüpheli istekler
- Güvenilmeyen URL'ler
- Kötü amaçlı ekler
- Kötü amaçlı uygulamalara bağlantılar
Bu yer paylaşımı, kullanıcıyı uyarmanın yanı sıra kullanıcının şüpheli bir mesajı bildirmesine ve sistem tarafından gönderilen uyarılarla ilgili geri bildirim sağlamasına da olanak tanır.
Geliştiriciler, uygulama manifest dosyalarına com.google.android.ALLOW_PHISHING_DETECTION
dizesini içeren yeni bir meta veri etiketi ekleyerek bu özelliğin kapsamı dışında kalmayı seçebilirler. Örneğin:
<manifest>
<application android:name="com.messagingapp">
<meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />
</application>
</manifest>
Medya
Uyumlu medya kodu dönüştürme
Sistem, Android 12'den (API düzeyi 31) başlayarak cihaza kaydedilen HEVC(H.265) ve HDR (HDR10 ve HDR10+) videoların kodunu AVC'ye (H.264) otomatik olarak dönüştürebilir. Bu biçim, standart oynatıcılarla yaygın olarak uyumludur. Bu, eski uygulamalarla uyumluluktan ödün vermeden kullanılabilir olduklarında modern codec'lerden yararlanır.
Daha fazla ayrıntı için uyumlu medya kodu dönüştürme bölümüne bakın.
Performans sınıfı
Android 12'de, performans sınıfı adı verilen bir standart kullanıma sunulmuştur. Performans sınıfı, Android'in temel gereksinimlerinin ötesinde donanım özelliklerini belirtir. Her Android cihaz, desteklediği performans sınıfını bildirir. Geliştiriciler, çalışma zamanında cihazın performans sınıfını kontrol edebilir ve cihazın özelliklerinden tam olarak yararlanan yükseltilmiş deneyimler sunabilir.
Daha fazla bilgi için Performans sınıfı bölümüne bakın.
Video kodlama iyileştirmeleri
Android 12, video kodlama için nicelik parametresi (QP) değerini kontrol etmek için standart bir anahtar grubu tanımlayarak geliştiricilerin tedarikçi firmaya özel kodlardan kaçınmasına olanak tanır.
Yeni anahtarları MediaFormat
API'de ve NDK Medya kitaplığında bulabilirsiniz.
Android 12'den itibaren video kodlayıcılar minimum kalite eşiği uygular. Bu, sahne karmaşıklığı yüksek olan videoları kodlarken kullanıcıların çok düşük kalite yaşamamasını garantiler.
Ses odağı
Android 12'den (API düzeyi 31) başlayarak, bir uygulama ses odağı isteğinde bulunurken başka bir uygulama odaklanıp çalmaya başladığında sistem, oynatılan uygulama yavaşça devre dışı bırakılır.
Daha fazla ayrıntı için Android 12 ve sonraki sürümlerde ses odağı başlıklı makaleyi inceleyin.
MediaDrm güncellemeleri
Mevcut MediaDrm
API'leriyle güvenli bir kod çözücü bileşeni gerekip gerekmediğini belirlemek için şu adımları uygulamanız gerekir:
MediaDrm
oluşturun.- Oturum kimliği almak için bir oturum açın.
- Oturum kimliğini kullanarak bir
MediaCrypto
oluşturun. - Şu numaraya telefon et:
MediaCrypto.requiresSecureDecoderComponent(mimeType)
.
requiresSecureDecoder(@NonNull String mime)
ve requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level)
adlı yeni yöntemler sayesinde MediaDrm
oluşturduktan hemen sonra bunu belirleyebilirsiniz.
Kamera
Kamera2 satıcı uzantıları
Cihaz üreticisi iş ortaklarımızın birçoğu, uygulamaların cihazlarında farklı deneyimler oluşturmak için kullanmasını istedikleri Bokeh, HDR, Gece modu gibi özel kamera uzantıları oluşturmuştur. KameraX kitaplığı bu özel tedarikçi firma uzantılarını zaten desteklemektedir. Bu satıcı uzantıları, Android 12'de artık doğrudan platformda gösterilir.
Bu ek, karmaşık Camera2
uygulamalarına sahip uygulamaların eski kodda önemli değişiklikler yapmak zorunda kalmadan tedarikçi firma uzantılarından yararlanmasına yardımcı olur. Camera2 Extension API'leri, CameraX'teki ile tam olarak aynı uzantı kümesini gösterir ve bunlar zaten birçok farklı cihazda desteklenmektedir. Bu nedenle, bunları ek yapılandırma olmadan kullanabilirsiniz.
Daha fazla bilgi için CameraExtensionCharacteristics
adresini inceleyin.
Quad bayer kamera sensörü desteği
Günümüzde birçok Android cihaz, genellikle Quad veya Nona Bayer desenlerine sahip ultra yüksek çözünürlüklü kamera sensörleriyle birlikte gönderilmektedir. Bunlar, resim kalitesi ve düşük ışık performansı açısından büyük esneklik sunar. Android 12, üçüncü taraf uygulamalarının bu çok yönlü sensörlerden tam anlamıyla yararlanmasını sağlayan yeni platform API'leri sunar. Yeni API'ler bu sensörlerin benzersiz davranışını destekler ve tam çözünürlükte veya "maksimum çözünürlük" modunda ve "varsayılan" modda çalışırken farklı akış yapılandırmalarını ve kombinasyonlarını destekleyebileceğini dikkate alır.
Grafikler ve resimler
Uygulamaların mezar taşı izlerine doğrudan erişim sağlaması
Android 12'den itibaren uygulamanızın yerel kilitlenme mezarına ApplicationExitInfo.getTraceInputStream()
yöntemi aracılığıyla protokol arabelleği olarak erişebilirsiniz. Protokol arabelleği, bu şema kullanılarak serileştirilir.
Daha önce, bu bilgilere erişmenin tek yolu Android Debug Bridge (adb) üzerinden yapılıyordu.
Daha fazla bilgi için Uygulamalara, mezar izlerine doğrudan erişim sağlama konusuna bakın.
AVIF görüntü desteği
Android 12'de, AV1 Görüntü Dosya Biçimi (AVIF) kullanan resimler için destek sunulmaktadır. AVIF, AV1 kullanılarak kodlanan görüntüler ve görüntü dizileri için bir kapsayıcı biçimidir. AVIF, video sıkıştırma işleminde kare içi kodlanmış içerikten yararlanır. Bu özellik, JPEG gibi eski resim biçimleriyle karşılaştırıldığında, aynı dosya boyutu için resim kalitesini önemli ölçüde iyileştirir. Bu biçimin avantajları hakkında ayrıntılı bilgi için Jake Archibald'ın blog yayınına bakın.
Daha kolay bulanıklaştırma, renk filtreleri ve diğer efektler
Android 12'de View
'lara ve oluşturma hiyerarşilerine bulanıklaştırma, renk filtreleri ve Android gölgelendirici efektleri gibi yaygın grafik efektlerinin uygulandığı yeni RenderEffect
eklenir. Efektler, zincir efektleri (iç ve dış bir efekt oluşturur) veya karışık efektler olarak birleştirilebilir. İşlem gücünün sınırlı olması nedeniyle bu özelliği farklı Android cihazlar destekleyebilir veya desteklemeyebilir.
View.setRenderEffect(RenderEffect)
yöntemini çağırarak View
öğeleri için temel RenderNode
efektlerine de uygulanabilir.
RenderEffect
uygulamak için:
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
Yerel animasyonlu resim kod çözme
Android 12'de NDK ImageDecoder
API, animasyonlu GIF ve animasyonlu WebP dosya biçimlerini kullanan resimlerdeki tüm karelerin ve zamanlama verilerinin kodunu çözecek şekilde genişletilmiştir. Android 11'de kullanıma sunulduğunda bu API, bu biçimlerdeki animasyonlardan yalnızca ilk resmin kodunu çözmüştür.
APK boyutunu daha da küçültmek, güvenlik ve performansla ilgili gelecekteki güncellemelerden yararlanmak için üçüncü taraf kitaplıkları yerine ImageDecoder
kullanın.
API hakkında daha fazla bilgi için API referansına ve GitHub'daki örneğe bakın.
Bağlantı
Tamamlayıcı uygulamaları uyanık tutma
Android 12, cihazı yönetmek için çalışmaya devam eden tamamlayıcı uygulamaların ihtiyacını desteklemek amacıyla aşağıdakileri yapan API'leri kullanıma sunuyor:
- Kapsama alanında bir tamamlayıcı cihaz olduğunda uygulamayı uyandırmanızı sağlar.
- Cihaz kapsama alanında kalırken işlemin çalışmaya devam edeceğinden emin olun.
API'leri kullanmak için cihazlarınızın Companion Device Manager kullanılarak bağlanmış olması gerekir. Daha fazla bilgi için CompanionDeviceManager.startObservingDevicePresence()
ve CompanionDeviceService.onDeviceAppeared()
sayfalarına bakın.
Companion Cihaz Yöneticisi profilleri
Android 12 (API düzeyi 31) ve sonraki sürümlerdeki iş ortağı uygulamaları, bir saate bağlanırken tamamlayıcı cihaz profillerini kullanabilir. Profil kullanmak, cihaz türüne özel izinlerin verilmesini tek adımda gruplandırarak kayıt işlemini kolaylaştırır.
Paketlenmiş izinler, cihaz bağlandığında tamamlayıcı uygulamaya verilir ve yalnızca cihaz ilişkilendirildiği sürece geçerli olur. Uygulamayı sildiğinizde veya ilişkilendirmeyi kaldırdığınızda izinler kaldırılır.
Daha fazla bilgi için AssociationRequest.Builder.setDeviceProfile()
adresini inceleyin.
Bant genişliği tahminiyle ilgili iyileştirmeler
Android 12'de getLinkDownstreamBandwidthKbps()
ve getLinkUpstreamBandwidthKbps()
tarafından sağlanan bant genişliği tahmini özellikleri hem kablosuz hem de hücresel bağlantı için iyileştirilmiştir. Döndürülen değerler artık cihazdaki tüm uygulamalarda operatör veya kablosuz ağ SSID'si, ağ türü ve sinyal düzeyi başına kullanıcının tüm zamanlara ait ağırlıklı ortalama işleme hızını temsil eder.
Bu sayede, beklenen işleme hızına dair daha doğru ve gerçekçi bir tahmin elde edilebilir, uygulamanızın baştan başlatılmasıyla ilgili tahminler sağlanabilir ve diğer işleme hızı tahmin yöntemleri kullanılmasına kıyasla daha az döngü gerekebilir.
Wi-Fi Aware (NAN) geliştirmeleri
Android 12, Wi-Fi Aware özelliğine bazı geliştirmeler ekler:
- Android 12 (API düzeyi 31) ve sonraki sürümleri çalıştıran cihazlarda, uygulamanız hizmetin durması veya kapsama alanı dışına çıkması nedeniyle keşfedilen bir hizmeti kaybettiğinde uyarı almak için
onServiceLost()
geri çağırma işlevini kullanabilirsiniz. - Birden fazla veri yolunun (NAN Veri Yolu) oluşturulma şekli daha verimli olacak şekilde değiştiriliyor. Önceki sürümlerde, başlatıcıların eş bilgilerini paylaşmak için L2 mesajları kullanılıyor ve bu da gecikmelere yol açıyordu. Android 12 ve sonraki sürümleri çalıştıran cihazlarda yanıt veren (sunucu) herhangi bir eş düzey kullanıcı kabul edecek şekilde yapılandırılabilir. Bu durumda, başlatıcı bilgilerini önceden bilmesi gerekmez. Bu, veri yolu getirme işlemini hızlandırır ve yalnızca tek bir ağ isteğiyle birden çok noktadan noktaya bağlantı yapılmasına olanak tanır.
- Çerçevenin, kaynakların tükenmesi nedeniyle keşif veya bağlantı isteklerini reddetmesini önlemek için Android 12 ve sonraki sürümleri çalıştıran cihazlarda
WifiAwareManager.getAvailableAwareResources()
yöntemini çağırabilirsiniz. Bu yöntemin döndürdüğü değer; kullanılabilir veri yolu sayısını, kullanılabilir yayınlama oturumu sayısını ve mevcut abone oturumlarının sayısını elde etmenizi sağlar.
Eşzamanlı Eşler Arası + İnternet Bağlantısı
Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen cihazlar, donanım desteği olan cihazlarda çalıştığında Eşler arası bağlantıların kullanılması, eş cihazla bağlantı oluştururken mevcut kablosuz bağlantınızın bağlantısını kesmez. Bu özellikle ilgili destek almak için WifiManager.isMultiStaConcurrencySupported()
adresini kullanın.
NFC ödemeleri için ekranı kapatma özelliğini etkinleştirin
Android 12 ve sonraki sürümleri hedefleyen uygulamalarda, requireDeviceScreenOn
seçeneğini false
olarak ayarlayarak NFC ödemelerini cihazın ekranı açık olmadan etkinleştirebilirsiniz. Ekran kapalıyken veya kilitliyken NFC ödemeleri hakkında daha fazla bilgi edinmek için Ekran kapalı ve kilit ekranı davranışı konusuna bakın.
Depolama
Android 12, aşağıdaki depolama yönetimi özelliklerini sunar:
- Uygulamanız belirli bir belge sağlayıcı URI'sına eşdeğer bir medya URI'sı aldığında
MediaDocumentsProvider
için medya mağazası desteği. - Ses kayıtları için bir dizin.
- Bir uygulamanın her işlem için kullanıcıya onay iletişim kutusu göstermeden medya yönetimi işlemlerini gerçekleştirmesini sağlayan
MANAGE_MEDIA
izni. - Hem
MANAGE_EXTERNAL_STORAGE
hem deQUERY_ALL_PACKAGES
iznine sahip olan uygulamalar (ör. dosya yönetimi uygulamaları), diğer uygulamanın özel etkinliği oluşturması koşuluyla başka bir uygulamanın depolama alanını yönetmek için özel bir etkinliği çağırabilir.
Temel işlevler
Otomatik uygulama güncellemeleri
Android 12, PackageInstaller
API kullanan uygulamalar için setRequireUserAction()
yöntemini kullanıma sunuyor.
Bu yöntem, yükleyici uygulamalarının kullanıcının işlemi onaylamasını gerektirmeden uygulama güncellemeleri yapmasına olanak tanır.
Cihaz yonga seti bilgileri
Android 12, android.os.Build
öğesine çip üzerinde sistem (SoC) yonga seti tedarikçi firması ve model bilgilerini SDK aracılığıyla gösteren iki sabit değer ekler. Bu bilgiyi sırasıyla Build.SOC_MANUFACTURER
ve Build.SOC_MODEL
çağrılarını yaparak öğrenebilirsiniz.
Temel Java API'leri için güncellemeler
İstekler ve geliştiricilerle yapılan ortak çalışmalar doğrultusunda, Android 12'ye aşağıdaki temel kitaplıkları ekledik:
Ders | API'ler |
---|---|
java.lang.Deprecated
|
|
java.lang.Byte
|
|
java.lang.Short
|
|
java.lang.Math
|
|
java.lang.StrictMath
|
|
java.util.Set
|
copyOf()
|
java.util.Map
|
copyOf()
|
java.util.List
|
copyOf()
|
java.time.Duration
|
|
java.time.LocalTime
|