Android 12, geliştiriciler için harika yeni özellikler ve API'ler sunuyor. Aşağıdaki bölümler, uygulamalarınızdaki özellikler hakkında bilgi edinmenize ve ilgili API'leri kullanmaya başlamanıza yardımcı olur.
Yeni, değiştirilmiş ve kaldırılmış API'lerin ayrıntılı listesi için API farkı raporunu inceleyin. Yeni API'lerle ilgili ayrıntılar için Android API referansını ziyaret edin. Yeni API'ler görünürlük 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'deki davranış değişikliklerini inceleyin.
Kullanıcı deneyimi
Material You
Android 12, Material You adlı yeni bir tasarım dili sunarak daha kişiselleştirilmiş ve güzel uygulamalar geliştirmenize yardımcı olur. En son Material Design 3 güncellemelerinin tümünü uygulamalarınıza getirmek için Material Design Components'ın alfa sürümünü deneyin.
Widget'larla ilgili iyileştirmeler
Android 12, platform ve başlatıcılarda kullanıcı ve geliştirici deneyimini iyileştirmek için mevcut Widget API'sini yeniliyor. Widget'ınızın Android 12 ile uyumlu olmasını sağlamanıza ve yeni özelliklerle yenilemenize yardımcı olacak bir rehber hazırladık.
Daha fazla bilgi için Android 12'deki widget iyileştirmeleri başlıklı makaleyi inceleyin.
Zengin içerik ekleme
Android 12, uygulamanızın mevcut herhangi bir kaynaktan (pano, klavye veya sürükle ve bırak) zengin içerik almasına olanak tanıyan yeni bir birleştirilmiş API sunar.
Daha fazla bilgi için Zengin içerik alma başlıklı makaleyi inceleyin.
Uygulama açılış ekranları API'si
Android 12, tüm uygulamalar için yeni bir uygulama açılış animasyonu sunar. Bu animasyonda, açılış noktasından uygulamaya giriş hareketi, uygulama simgesini gösteren bir başlangıç ekranı ve uygulamanın kendisine geçiş yer alır. Daha fazla ayrıntı için açılış ekranları geliştirici kılavuzuna bakın.
Yuvarlak köşe API'leri
Android 12, yuvarlatılmış köşeler için yarıçapı ve merkez noktasını sağlayan RoundedCorner
ve WindowInsets.getRoundedCorner(int
position)
özelliklerini sunar.
Daha fazla bilgi için Yuvarlatılmış köşeler bölümüne bakın.
Zengin dokunsal deneyimler
Android 12, kullanıcı arayüzü etkinlikleri için bilgilendirici dokunsal geri bildirimler, oyun için etkileyici ve keyifli efektler ve üretkenlik için dikkat çekici dokunsal geri bildirimler oluşturmaya yönelik araçları genişletiyor.
Aktüatör efektleri
Android 12, en yeni aktüatörlerin daha geniş frekans bant genişliğinden yararlanan düşük tık gibi etkileyici efektler ekler. Oyun geliştiriciler, artık oyun kumandalarında birden fazla farklı aktüatöre bağımsız olarak erişerek aynı efekti senkronize bir şekilde veya birden fazla aktüatörde farklı dokunsal efektler sunabilir. Geliştiricilerin, zengin dokunsal efektler için yapı taşları olarak sabitleri ve temel öğeleri kullanmasını öneririz. Sabitler, kullanıcı arayüzü etkinliklerini geliştirmek için, dokunsal besteleyici ise daha karmaşık efektler için temel öğeleri sıralamak için kullanılır. Bu API'ler Pixel 4 cihazlarda denenebilir. Ayrıca, dokunsal geri bildirim desteğindeki en son yenilikleri ekosistemdeki kullanıcılara sunmak için cihaz üreticisi iş ortaklarımızla çalışmaya devam ediyoruz.
Sesle bağlantılı dokunsal efektler
Android 12 uygulamaları, telefonun titreşim motorunu kullanarak bir ses oturumundan elde edilen dokunsal geri bildirim oluşturabilir. Bu sayede daha etkileyici oyun ve ses deneyimleri sunulabilir. Örneğin, dokunsal olarak geliştirilmiş zil sesleri arayanları belirlemeye yardımcı olabilir veya bir araba yarışı oyunu engebeli arazide sürüş hissini simüle edebilir.
Daha fazla bilgi için HapticGenerator
referans belgelerini inceleyin.
AppSearch
Android 12, sistem hizmeti olarak yüksek performanslı bir cihaz içi arama motoru olan AppSearch'ü kullanıma sunuyor. 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, yüksek verimli indeksleme ve alma, çoklu dil desteği ve alaka düzeyi sıralaması gibi yerel arama özelliklerini destekler.

AppSearch iki şekilde sunulur: uygulamanızın kullanabileceği, Android'in eski sürümleriyle uyumlu yerel bir dizin veya Android 12'de tüm sistem için tutulan merkezi bir dizin. Uygulamanız, merkezi dizini kullanarak sistemin önceden yüklenmiş olan zeka bileşeni tarafından verilerinin sistem kullanıcı arayüzü yüzeylerinde gösterilmesine izin verebilir. Sistem kullanıcı arayüzü yüzeylerinde hangi verilerin gösterileceği OEM'ye bağlıdır. Ayrıca uygulamanız, diğer uygulamaların da bu verilerde arama yapmasına olanak tanımak için verileri güvenli bir şekilde paylaşabilir.
AppSearch hakkında daha fazla bilgiyi geliştirici kılavuzunda bulabilir ve kullanmaya başlamak için AppSearch Jetpack kitaplığını kullanabilirsiniz. Bu kitaplık, geliştirici dostu bir API yüzeyinin yanı sıra ek açıklama işlemcisi desteği de sunar.
Oyun Modu
Game Mode API ve Game Mode müdahaleleri, kullanıcı ayarlarını veya oyuna özel yapılandırmaları temel alarak performans ya da pil ömrü gibi özellikleri önceliklendirerek oyun deneyimini optimize etmenize olanak tanır.
Daha fazla bilgi için Oyun Modu başlıklı makaleyi inceleyin.
Pencere içinde pencere (PiP) önerileri ve iyileştirmeleri
Android 12, PiP modu için aşağıdaki iyileştirmeleri sunar:
Yeni PiP hareketleri için destek
Android 12'de artık PiP penceresi için biriktirme ve iki parmakla yakınlaştırma hareketleri destekleniyor:
Kullanıcı, pencereyi saklamak için pencereyi sol veya sağ kenara sürükleyebilir. Kullanıcı, pencereyi saklamadan çıkarmak için saklanan pencerenin görünür kısmına dokunabilir veya pencereyi dışarı sürükleyebilir.
Kullanıcılar artık iki parmakla yakınlaştırma hareketini kullanarak PiP penceresini yeniden boyutlandırabilir.
Sorunsuz bir PiP geçişi deneyimini destekleyen yeni özellikler önerilir.
Android 12, tam ekran ve PiP pencereleri arasındaki animasyonlu geçişlerde önemli görsel iyileştirmeler yaptı. Geçerli tüm değişiklikleri uygulamanızı önemle tavsiye ederiz. Bu değişiklikleri uyguladığınızda, katlanabilir cihazlar ve tabletler gibi büyük ekranlarda başka bir işlem yapmanıza gerek kalmadan otomatik olarak ölçeklendirilir.
Bu özellikler şunlardır:
Hareketle gezinme ile daha sorunsuz PiP moduna geçiş için yeni bir API işareti
Hareketle gezinme modunda ana sayfaya gitmek için yukarı kaydırırken PIP moduna daha sorunsuz geçiş sağlamak üzere
setAutoEnterEnabled
işaretini kullanın. Android, daha önce PiP penceresini görünür hale getirmeden önce ana ekrana gitmek için yukarı kaydırma animasyonunun tamamlanmasını bekliyordu.PIP moduna girerken ve PIP modundan çıkarken daha akıcı animasyonlar
SourceRectHint
işareti artık PiP moduna girerken ve çıkarken daha sorunsuz animasyon uygulamak için yeniden kullanılıyor.-
SeamlessResizeEnabled
işareti, PiP penceresinde video olmayan içeriklerin boyutu değiştirilirken çok daha akıcı bir geçiş animasyonu sağlar. Daha önce, resim içinde resim penceresinde video olmayan içeriklerin yeniden boyutlandırılması, rahatsız edici görsel öğelere neden olabiliyordu.
Gelen aramaların önemini sıralamaya olanak tanıyan yeni telefon görüşmesi bildirimleri
Android 12, telefon görüşmeleri için yeni bildirim stili
Notification.CallStyle
ekler. Bu şablonu kullanarak uygulamanız, durum çubuğunda arama zamanını gösteren belirgin bir çip görüntüleyerek etkin aramaların önemini belirtebilir. Kullanıcı, aramasına dönmek için bu çipe dokunabilir.
Kullanıcılar için en önemli olanlar gelen ve devam eden aramalar olduğundan bu bildirimler gölgede en üst sırada yer alır. Bu sıralama, sistemin öncelikli aramaları diğer cihazlara yönlendirmesine de olanak tanır.
Tüm arama 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 arama için arama stili bildirimi oluşturmak üzere forIncomingCall()
öğesini 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 arama için arama stili bildirimi oluşturmak üzere forOngoingCall()
simgesini 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 için arama stili bildirimi oluşturmak üzere forScreeningCall()
simgesini 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'de 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 bildirim gölgesinden iletilere yanıt verirken resim mesajları göndermesine olanak tanıyabilir.
Hareketle gezinme için tam ekran modunda iyileştirmeler
Android 12, mevcut davranışı birleştirerek kullanıcıların tam ekran modundayken hareketle gezinme komutlarını gerçekleştirmesini kolaylaştırır. Ayrıca Android 12, yapışkan tam ekran modu için geriye dönük uyumluluk davranışı sağlar.
Son Öğeler'de URL paylaşımı (yalnızca Pixel)
Pixel cihazlarda kullanıcılar, son görüntülenen web içeriklerinin bağlantılarını doğrudan Son Kullanılanlar ekranından paylaşabilir. Bir uygulamada içeriği ziyaret ettikten sonra kullanıcı, Son Kullanılanlar ekranına kaydırarak içeriği görüntülediği uygulamayı bulabilir ve bağlantı düğmesine dokunarak URL'yi kopyalayabilir veya paylaşabilir.
Daha fazla bilgi için Son kullanılan URL paylaşımını etkinleştirme başlıklı makaleyi inceleyin.
Güvenlik ve gizlilik
Gizlilik Kontrol Paneli
Android 12 veya sonraki sürümlerin yüklü olduğu desteklenen cihazlarda sistem ayarlarında bir Gizlilik Kontrol Paneli ekranı gösterilir. Bu ekranda kullanıcılar, uygulamaların konum, kamera ve mikrofon bilgilerine ne zaman eriştiğini gösteren ayrı ekranlara erişebilir. Her ekranda, farklı uygulamaların belirli bir veri türüne ne zaman eriştiğinin zaman çizelgesi gösterilir. Şekil 1'de konum bilgileri için veri erişimi zaman çizelgesi gösterilmektedir.
Uygulamanız, kullanıcıların konum, kamera veya mikrofon bilgilerine neden eriştiğinizi anlamalarına yardımcı olmak için bir gerekçe sunabilir. Bu gerekçe, yeni gizlilik kontrol paneli ekranında, uygulamanızın izinler ekranında veya her ikisinde de görünebilir.
Bluetooth izinleri
Android 12'de BLUETOOTH_SCAN
, BLUETOOTH_ADVERTISE
ve BLUETOOTH_CONNECT
izinleri kullanıma sunulmuştur. Bu izinler, özellikle cihaz konumuna erişim gerektirmeyen uygulamalar için Android 12'yi hedefleyen uygulamaların Bluetooth cihazlarla etkileşimde bulunmasını kolaylaştırır.
Uygulamanızın Bluetooth izni 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 bildirmek yerine daha modern bir Bluetooth izinleri grubu bildirin.
İzin grubu arama
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 tarafından tanımlanan bir izni yerleştirdiği izin grubunu belirlemek için
getGroupOfPlatformPermission()
işlevini çağırın. - Sistemin belirli bir izin grubuna yerleştirdiği platform tanımlı izinleri belirlemek için
getPlatformPermissionsForGroup()
işlevini çağırın.
Uygulama yer paylaşımı pencerelerini gizleme
Android 12, geliştiricilere kullanıcıların geliştirici uygulamasında etkileşimde bulunduklarında gördükleri içerikler üzerinde daha fazla kontrol imkanı sunmak için SYSTEM_ALERT_WINDOW
iznine sahip uygulamalar tarafından çizilen yer paylaşımı pencerelerini gizleme özelliğini kullanıma sunuyor.
HIDE_OVERLAY_WINDOWS
iznini bildirdikten sonra bir uygulama, kendi penceresi görünürken TYPE_APPLICATION_OVERLAY
türündeki tüm pencerelerin gizlenmesi gerektiğini belirtmek için setHideOverlayWindows()
işlevini çağırabilir. Uygulamalar, işlem onayı akışları gibi hassas ekranları gösterirken bunu yapmayı tercih edebilir.
TYPE_APPLICATION_OVERLAY
türünde pencereler gösteren uygulamalar, kullanım alanlarına daha uygun olabilecek alternatifleri (ör. resim içinde resim veya sohbet balonları) değerlendirmelidir.
Bilinen imzalayanlar için izin koruma işareti
Android 12'den itibaren, imza düzeyinde izinler için knownCerts
özelliği, bildirim sırasında bilinen imzalama sertifikalarının özetlerine başvurmanıza olanak tanır.
Uygulamanız bu özelliği bildirebilir ve 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 olanak tanıyabilir.
Cihaz özellikleri onayı
Android 12, bu uygulamalar yeni bir anahtar oluşturduğunda onay sertifikasında bulunan cihaz özelliklerini doğrulayabilen uygulamaların sayısını artırır.
Android 9 (API seviyesi 28) itibarıyla, 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'yi (API düzeyi 31) veya sonraki sürümleri hedefleyen tüm uygulamalar, setDevicePropertiesAttestationIncluded()
yöntemini kullanarak bu doğrulamayı gerçekleştirebilir.
Oluşturulan cihaz özellikleri aşağıdaki Build
alanları içerir:
BRAND
DEVICE
MANUFACTURER
MODEL
PRODUCT
Güvenli kilit ekranı bildirim işlemleri
Android 12'den itibaren Notification.Action.Builder
sınıfı, uygulamanızın belirli bir bildirim işlemini çağırmadan önce cihazın kilidinin açılmasını zorunlu kılmasına olanak tanıyan setAuthenticationRequired()
yöntemini destekler. Bu yöntem, kilitli cihazlardaki bildirimlere ekstra 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'ler sunar. Yeni BiometricManager.Strings
iç içe 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ına olanak tanıyan getButtonLabel()
,
getPromptMessage()
ve getSettingName()
yöntemlerini içerir. Kullanılan biyometrik kimlik doğrulama yöntemlerine özel, kullanıcıya yönelik daha net talimatlar oluşturmak için bu etiketleri kullanın. Örneğin, "Yüz kilidini kullanın" veya "Devam etmek için parmak izinizi 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 iletilerde kimlik avı tespiti yapar. Sistem, şüpheli etkinlikleri tespit etmek için cihaz üzerinde makine öğrenimini kullanır. Sistem, tespit ettiğinde kullanıcıları uyarmak için mesajlaşma uygulamasının kullanıcı arayüzünün üzerinde bir güvenlik yer paylaşımı gösterir. Örneğin, kimlik avı algılama özelliği, kullanıcıları aşağıdaki potansiyel riskler konusunda uyarabilir:
- Kod, para veya benzeri şeyler gönderme gibi şüpheli istekler
- Güvenilmeyen URL'ler
- Kötü amaçlı ekler
- Kötü amaçlı uygulamalara yönlendiren bağlantılar
Yer paylaşımı, kullanıcıyı uyarmasının yanı sıra şüpheli iletileri bildirmesine ve sistem tarafından verilen uyarılarla ilgili geri bildirimde bulunması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ği devre dışı bırakabilir. Ö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 kod dönüştürme
Android 12'den (API düzeyi 31) itibaren sistem, cihazda kaydedilen HEVC(H.265) ve HDR (HDR10 ve HDR10+) videoları, standart oynatıcılarla yaygın olarak uyumlu olan AVC (H.264) biçimine otomatik olarak dönüştürebilir. Bu özellik, eski uygulamalarla uyumluluktan ödün vermeden modern codec'lerden yararlanır.
Daha fazla bilgi için uyumlu medya dönüştürme bölümüne bakın.
Performans sınıfı
Android 12, performans sınıfı adı verilen bir standart sunar. Performans sınıfı, Android'in temel gereksinimlerinin ötesinde donanım özellikleri belirtir. Her Android cihaz, desteklediği performans sınıfını belirtir. Geliştiriciler, cihazın performans sınıfını çalışma zamanında kontrol edebilir ve cihazın özelliklerinden tam olarak yararlanan gelişmiş deneyimler sunabilir.
Daha fazla bilgi için Performans sınıfı başlıklı makaleyi inceleyin.
Video kodlama iyileştirmeleri
Android 12, video kodlaması için nicemleme parametresi (QP) değerini kontrol etmeye yönelik standart bir anahtar grubu tanımlar. Bu sayede geliştiriciler, tedarikçiye özel kod kullanmaktan kaçınabilir.
Yeni anahtarlar, MediaFormat
API'sinde ve NDK Media kitaplığında kullanılabilir.
Android 12'den itibaren video kodlayıcılar minimum kalite eşiğini zorunlu kılar. Bu sayede, yüksek sahne karmaşıklığına sahip videolar kodlanırken kullanıcıların son derece düşük kalite sorunu yaşamaması sağlanır.
Ses odağı
Android 12'den (API düzeyi 31) itibaren, başka bir uygulama odaklanmış ve oynatılırken bir uygulama ses odağı istediğinde sistem, oynatılan uygulamanın sesini azaltır.
Daha fazla bilgi için Android 12 ve sonraki sürümlerde ses odağı başlıklı makaleyi inceleyin.
MediaDrm güncellemeleri
Mevcut MediaDrm
API'leri ile güvenli bir kod çözücü bileşeninin gerekli olup olmadığını belirlemek için aşağıdaki adımları uygulamanız gerekir:
MediaDrm
oluşturun.- Oturum kimliği almak için bir oturum açın.
- Oturum kimliğini kullanarak
MediaCrypto
oluşturun. - Şu numaraya telefon et:
MediaCrypto.requiresSecureDecoderComponent(mimeType)
.
Yeni yöntemler requiresSecureDecoder(@NonNull String mime)
ve requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level)
ile MediaDrm
oluşturur oluşturmaz bunu belirleyebilirsiniz.
Kamera
Camera2 sağlayıcı uzantıları
Cihaz üreticisi iş ortaklarımızın çoğu, uygulamaların cihazlarında farklı deneyimler oluşturmak için kullanmasını istediği özel kamera uzantıları (ör. Bokeh, HDR, gece modu) geliştirmiştir. CameraX kitaplığı bu özel tedarikçi uzantılarını zaten desteklemektedir. Android 12'de bu satıcı uzantıları artık doğrudan platformda kullanıma sunuluyor.
Bu ekleme, karmaşık Camera2
uygulamalarına sahip uygulamaların, eski kodda önemli değişiklikler yapmasına gerek kalmadan tedarikçi uzantılarından yararlanmasına yardımcı olur. Camera2 Extension API'leri, CameraX'tekiyle tam olarak aynı uzantı grubunu kullanır ve bu uzantılar birçok farklı cihazda zaten desteklenir. Bu nedenle, ek bir yapılandırma yapmadan kullanabilirsiniz.
Daha fazla bilgi için CameraExtensionCharacteristics
konusuna bakın.
Quad Bayer kamera sensörü desteği
Günümüzde birçok Android cihazda genellikle Quad veya Nona Bayer desenlerine sahip ultra yüksek çözünürlüklü kamera sensörleri bulunur. Bu sensörler, görüntü kalitesi ve düşük ışık performansı açısından büyük esneklik sunar. Android 12, üçüncü taraf uygulamaların bu çok yönlü sensörlerden tam olarak yararlanmasını sağlayan yeni platform API'leri sunar. Yeni API'ler, bu sensörlerin benzersiz davranışını destekler ve tam çözünürlük veya "maksimum çözünürlük" modunda çalışırken "varsayılan" moda kıyasla farklı akış yapılandırmalarını ve kombinasyonlarını destekleyebileceklerini dikkate alır.
Grafikler ve resimler
Uygulamalara tombstone izlerine doğrudan erişim izni verme
Android 12'den itibaren, ApplicationExitInfo.getTraceInputStream()
yöntemiyle uygulamanızın yerel kilitlenme tombstone'una protocol buffer 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 sağlanıyordu.
Daha fazla bilgi için Uygulamalara mezar taşı izlerine doğrudan erişim sağlama başlıklı makaleyi inceleyin.
AVIF görüntü desteği
Android 12, AV1 Image File Format (AVIF) kullanan resimler için destek sunar. AVIF, AV1 kullanılarak kodlanmış resimler ve resim dizileri için bir kapsayıcı biçimidir. AVIF, video sıkıştırmadan elde edilen kare içi kodlanmış içerikten yararlanır. Bu, JPEG gibi eski görüntü biçimleriyle karşılaştırıldığında aynı dosya boyutu için görüntü kalitesini önemli ölçüde artırır. Bu biçimin avantajları hakkında ayrıntılı bilgi için Jake Archibald'ın blog yayınını inceleyin.
Daha kolay bulanıklaştırma, renk filtreleri ve diğer efektler
Android 12, bulanıklaştırma, renk filtreleri ve Android gölgelendirici efektleri gibi yaygın grafik efektlerini View
'lere ve oluşturma hiyerarşilerine uygulayan yeni RenderEffect
ekliyor. Efektler, zincir efektler (iç ve dış efektlerden oluşur) veya harmanlanmış efektler olarak birleştirilebilir. Farklı Android cihazlar, sınırlı işlem gücü nedeniyle bu özelliği destekleyebilir veya desteklemeyebilir.
Efektler, View.setRenderEffect(RenderEffect)
çağrılarak temel RenderNode
için de uygulanabilir.View
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 çözmek için genişletildi. Android 11'de kullanıma sunulduğunda bu API, yalnızca bu biçimlerdeki animasyonlardan ilk resmi çözüyordu.
APK boyutunu daha da küçültmek ve güvenlik ile 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 yardımcı uygulamaların çalışmaya devam etmesi gerektiği ihtiyacını karşılamak üzere aşağıdaki işlemleri yapan API'ler sunar:
- Tamamlayıcı cihaz kapsama alanındayken uygulamayı uyandırmanıza olanak tanır.
- Cihaz kapsama alanında kaldığı sürece işlemin çalışmaya devam edeceğini garanti edin.
API'leri kullanmak için cihazlarınızın Companion Device
Manager ile bağlanması gerekir. Daha fazla bilgi için CompanionDeviceManager.startObservingDevicePresence()
ve CompanionDeviceService.onDeviceAppeared()
sayfalarına bakın.
Companion Device Manager profilleri

Android 12 (API düzeyi 31) ve sonraki sürümlerdeki iş ortağı uygulamaları, kol saatine bağlanırken yardımcı cihaz profillerini kullanabilir. Profil kullanmak, cihaza özel bir izin grubunun verilmesini tek bir adımda birleştirerek kaydolma sürecini basitleştirir.
Paketlenmiş izinler, cihaz bağlandıktan sonra yardımcı uygulamaya verilir ve yalnızca cihaz ilişkilendirildiği sürece geçerli olur. Uygulamanın silinmesi veya ilişkilendirmenin kaldırılması izinleri de kaldırır.
Daha fazla bilgi için AssociationRequest.Builder.setDeviceProfile()
konusuna bakın.
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ştirildi. Döndürülen değerler artık kullanıcının cihazdaki tüm uygulamalarda operatör veya kablosuz ağ SSID'si, ağ türü ve sinyal seviyesi başına tüm zamanların ağırlıklı ortalama verimini temsil ediyor.
Bu yöntem, beklenen işleme hızıyla ilgili daha doğru ve gerçekçi bir tahmin döndürebilir, uygulamanızın soğuk başlatılmasıyla ilgili tahminler sağlayabilir ve diğer işleme hızı tahmin yöntemlerinin kullanılmasına kıyasla daha az döngü gerektirir.
Wi-Fi Aware (NAN) geliştirmeleri
Android 12, Wi-Fi Aware'e bazı geliştirmeler ekliyor:
- Android 12 (API düzeyi 31) ve sonraki sürümlerin yüklü olduğu cihazlarda, uygulamanızın hizmetin durması veya aralığın dışına çıkması nedeniyle keşfedilen bir hizmeti kaybettiğinde uyarı almak için
onServiceLost()
geri çağırmasını kullanabilirsiniz. - Birden fazla veri yolunun (NAN Veri Yolları) kurulum şekli daha verimli olacak şekilde değişiyor. Daha önceki sürümlerde, başlatıcıların eş bilgilerini değiştirmek için L2 mesajlaşma kullanılıyordu. Bu da gecikmeye neden oluyordu. Android 12 ve sonraki sürümlerin yüklü olduğu cihazlarda yanıtlayıcı (sunucu), herhangi bir eşi kabul edecek şekilde yapılandırılabilir. Yani başlatıcı bilgilerini önceden bilmesi gerekmez. Bu, veri yolu başlatma işlemini hızlandırır ve yalnızca tek bir ağ isteğiyle birden fazla noktadan noktaya bağlantı sağlar.
- Çerçevenin kaynakların tükenmesi nedeniyle keşif veya bağlantı isteklerini reddetmesini önlemek için Android 12 ve sonraki sürümlerin yüklü olduğu cihazlarda
WifiAwareManager.getAvailableAwareResources()
işlevini çağırabilirsiniz. Bu yöntemin dönüş değeri, kullanılabilir veri yollarının sayısını, kullanılabilir yayın oturumlarının sayısını ve kullanılabilir abone oturumlarının sayısını almanızı sağlar.
Eşler Arası + İnternet Bağlantısı
Android 12'yi (API düzeyi 31) ve sonraki sürümleri hedefleyen cihazlar, donanım desteği olan cihazlarda çalışırken eşler arası bağlantılar kullanıldığında eş cihazla bağlantı oluşturulurken mevcut kablosuz bağlantınız kesilmez. Bu özelliğin desteklenip desteklenmediğini kontrol etmek için WifiManager.isMultiStaConcurrencySupported()
simgesini kullanın.
NFC ödemeleri için ekranı kapatmayı etkinleştirme
Android 12 ve sonraki sürümleri hedefleyen uygulamalarda, requireDeviceScreenOn
değerini false
olarak ayarlayarak cihazın ekranı açık olmadan NFC ödemelerini etkinleştirebilirsiniz. Ekran kapalıyken veya kilitliyken NFC ödemeleri hakkında daha fazla bilgi için Ekran kapalıyken ve kilit ekranı davranışları başlıklı makaleyi inceleyin.
Depolama
Android 12'de aşağıdaki depolama alanı yönetimi özellikleri kullanıma sunulmuştur:
- Uygulamanız belirli bir doküman sağlayıcı URI'sına eşdeğer bir medya URI'si aldığında
MediaDocumentsProvider
için medya mağazası desteği. - Ses kayıtları için bir dizin.
MANAGE_MEDIA
izni, bir uygulamanın her işlem için kullanıcıya onay iletişim kutusu göstermeden medya yönetimi işlemleri gerçekleştirmesine olanak tanır.- Hem
MANAGE_EXTERNAL_STORAGE
iznine hem deQUERY_ALL_PACKAGES
iznine sahip uygulamalar (ör. dosya yönetimi uygulamaları), başka bir uygulamanın depolama alanını yönetmek için özel bir etkinlik başlatabilir. Bunun için diğer uygulamanın özel etkinliği oluşturması gerekir.
Temel işlevler
Otomatik uygulama güncellemeleri
Android 12, PackageInstaller
API'yi kullanan uygulamalar için setRequireUserAction()
yöntemini sunar.
Bu yöntem, yükleyici uygulamaların kullanıcıdan işlemi onaylamasını istemeden uygulama güncellemeleri yapmasına olanak tanır.
Cihaz yonga seti bilgileri
Android 12, android.os.Build
'ya iki sabit ekleyerek SDK üzerinden SoC yonga seti satıcısı ve model bilgilerini kullanıma sunar. Bu bilgilere Build.SOC_MANUFACTURER
ve Build.SOC_MODEL
numaralı telefonları arayarak ulaşabilirsiniz.
Temel Java API'lerinde yapılan güncellemeler
Geliştiricilerden gelen istekler ve onlarla yaptığımız işbirliği doğrultusunda Android 12'ye aşağıdaki temel kitaplıkları ekledik:
Sınıf | 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
|