Android 12, geliştiricilere yeni ve harika özellikler ile API'ler sunuyor. Aşağıdaki bölümler, uygulamalarınızın özellikleri hakkında bilgi edinmenize ve ilgili API'leri kullanmaya başlamanıza yardımcı olur.
Yeni, değiştirilen ve kaldırılan API'lerin ayrıntılı listesi için API karşılaştırma raporunu okuyun. Yeni API'ler hakkında ayrıntılı bilgi için Android API referansı sayfasını ziyaret edin. Yeni API'ler, görünür olmaları için vurgulanmıştır. Ayrıca, platform değişikliklerinin uygulamalarınızı etkileyebileceği alanları öğrenmek istiyorsanız Android 12'yi hedefleyen uygulamalar ve tüm uygulamalar için Android 12 davranış değişikliklerini inceleyin.
Kullanıcı deneyimi
Material You
Android 12, daha kişiselleştirilmiş ve güzel uygulamalar geliştirmenize yardımcı olan Material You adlı yeni bir tasarım dilini kullanıma sunuyor. En son Material Design 3 güncellemelerinin tümünü uygulamalarınıza uygulamak için Material Design Components'in alfa sürümünü deneyin.
Widget iyileştirmeleri
Android 12, platform ve başlatıcılarda kullanıcı ve geliştirici deneyimini iyileştirmek için mevcut Widgets API'sini yeniler. Widget'ınızın Android 12 ile uyumlu olmasını sağlamanıza ve yeni özelliklerle yenilemenize yardımcı olacak bir kılavuz hazırladık.
Daha fazla bilgi için Android 12 widget'larında yapılan iyileştirmeler başlıklı makaleyi inceleyin.
Zengin içerik ekleme
Android 12, uygulamanızın panoya, klavyeye veya sürükle ve bırak işlemine erişerek zengin içerik almasını sağlayan yeni bir birleşik API'yi kullanıma sunar.
Daha fazla bilgi için Zengin içerik alma bölümüne bakın.
Uygulama açılış ekranları API'si
Android 12, tüm uygulamalar için yeni bir uygulama başlatma animasyonu sunuyor. Bu animasyonda, lansmandan itibaren uygulama içi hareket, uygulama simgesini gösteren bir başlangıç ekranı ve uygulamanın kendisine geçiş yer alıyor. Daha fazla bilgi için açılış ekranları geliştirici kılavuzuna bakın.
Yuvarlatılmış 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 kullanıma sunar.
Daha fazla bilgi için Yuvarlak köşeler başlıklı makaleye bakın.
Zengin dokunma teknolojisi 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şletir.
Aktüatör efektleri
Android 12, en yeni aktüatörlerin daha geniş frekans bant genişliğinden yararlanan düşük tıklama gibi etkileyici efektler ekler. Oyun geliştiriciler artık oyun kontrol cihazlarında birden fazla farklı aktüatöre bağımsız olarak erişerek aynı efekti senkronize olarak veya birden fazla aktüatörde farklı dokunma etkileri sunabilir. Geliştiricilerin, zengin dokunsal efektler için yapı taşları olarak sabitler ve basit öğeleri kullanmasını öneririz. Kullanıcı arayüzü etkinliklerini geliştirmek için sabitler, daha karmaşık efektler için basit öğeleri sıralamak üzere dokunsal besteci kullanın. Bu API'leri Pixel 4 cihazlarda deneyebilirsiniz. Ekosistemdeki kullanıcılara en yeni dokunma teknolojisi desteğini sunmak için cihaz üreticisi iş ortaklarımızla çalışmalarımızı sürdürüyoruz.
Sesle eşlenen dokunma efektleri
Android 12 uygulamaları, telefonun titreşim motorunu kullanarak ses oturumundan elde edilen dokunma geri bildirimi oluşturabilir. Bu da daha sürükleyici oyun ve ses deneyimleri elde etme fırsatı sağlar. Örneğin, dokunma teknolojisiyle geliştirilmiş zil sesleri, arayanların tanınmasına yardımcı olabilir veya bir sürüş oyunu, arazinin kesiştiği yerin hissini taklit edebilir.
Daha fazla bilgi için HapticGenerator
referans dokümanlarını inceleyin.
Uygulama Araması
Android 12, sistem hizmeti olarak yüksek performanslı bir cihaz üzerinde arama motoru olan AppSearch'i kullanıma sunar. 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, birden fazla dil desteği ve alaka düzeyi sıralaması gibi yerel arama özelliklerini de destekler.
AppSearch iki şekilde sunulur: Uygulamanızın kullanabileceği, Android'in eski sürümleriyle uyumlu yerel bir dizin veya Android 12'de sistemin tamamı için yönetilen merkezi bir dizin. Merkezi dizin sayesinde uygulamanız, verilerinin sistemin önceden yüklenmiş zeka bileşeni tarafından sistem kullanıcı arayüzü yüzeylerinde gösterilmesine 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, diğer uygulamaların da bu verileri aramasına izin vermek için verileri güvenli bir şekilde diğer uygulamalarla paylaşabilir.
Geliştirici kılavuzundan AppSearch hakkında daha fazla bilgi edinin ve geliştirici dostu bir API yüzeyi ve ek açıklama işlemci desteği sunan AppSearch Jetpack kitaplığı ile bu uygulamayı kullanmaya başlayın.
Oyun Modu
Game Mode API ve Game Mode müdahaleleri, kullanıcı ayarlarına veya oyuna özgü yapılandırmalara göre performans ya da pil ömrü gibi özelliklere öncelik vererek 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 artık PiP penceresi için gizleme ve yakınlaştırma/uzaklaştırma hareketlerini destekliyor:
Kullanıcı, pencereyi gizlemek için sola veya sağa kenara sürükleyebilir. Pencerenin sabitlemesini kaldırmak için kullanıcı, saklanan pencerenin görünür bölümüne hafifçe dokunabilir veya pencereyi 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.
PiP geçiş deneyimini iyileştiren yeni özellikler
Android 12, tam ekran ve PiP pencereleri arasındaki animasyonlu geçişlere önemli görsel iyileştirmeler ekledi. Geçerli tüm değişiklikleri uygulamanızı önemle tavsiye ederiz. Bu değişiklikleri yaptıktan sonra, başka bir işlem yapmanıza gerek kalmadan katlanabilir cihazlar ve tabletler gibi büyük ekranlara otomatik olarak ölçeklendirilir.
Bu özellikler şunlardır:
Hareketle gezinme ile PiP moduna daha akıcı bir geçiş için yeni bir API işareti
Hareketle gezinme modunda yukarı kaydırarak ana sayfaya gittiğinizde PIP moduna daha yumuşak geçişler sağlamak için
setAutoEnterEnabled
işaretçisini kullanın. Daha önce Android, PiP penceresinde karar vermeden önce ana ekrana doğru kaydırma animasyonunun bitmesini bekliyordu.PIP moduna girip çıkarken daha akıcı animasyonlar
PiP moduna girerken ve bu moddan çıkarken daha düzgün bir animasyon uygulamak için
SourceRectHint
işareti artık yeniden kullanılıyor.Video dışı içeriklerde sorunsuz yeniden boyutlandırmayı devre dışı bırakan yeni bir API işareti
SeamlessResizeEnabled
işaretçisi, PiP penceresindeki video dışı içeriklerin boyutu değiştirilirken çok daha yumuşak bir geçiş animasyonu sağlar. Daha önce, PiP penceresindeki video dışı içeriğin boyutunu değiştirmek rahatsız edici görsel kusurlara neden olabiliyordu.
Gelen aramaların önemini sıralamaya olanak tanıyan yeni telefon araması bildirimleri
Android 12, telefon görüşmeleri için yeni bildirim stilini Notification.CallStyle
ekler. Bu şablonu kullanmak, uygulamanızın durum çubuğunda aramanın süresini gösteren belirgin bir çip göstererek etkin aramaların önemini belirtmesine olanak tanır. Kullanıcı, aramasına dönmek için bu çipe dokunabilir.
Gelen ve devam eden aramalar kullanıcılar için en önemli olduğundan bu bildirimler gölgede en üst sıraya yerleştirilir. 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()
simgesini 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);
Aramaları 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()
bildirimleri için animasyonlu resimler sağlayarak uygulamanızın bildirim deneyimini zenginleştirebilirsiniz. Ayrıca uygulamanız, kullanıcıların mesajlara bildirim gölgesinden yanıt verirken resim mesaj göndermesine de izin verebilir.
Hareketle gezinme için yoğun içerik modu iyileştirmeleri
Android 12, kullanıcıların tam ekran modundayken hareketle gezinme komutlarını gerçekleştirmelerini kolaylaştırmak için mevcut davranışı birleştirir. Ayrıca Android 12, yapışkan tam ekran modu için geriye dönük uyumluluk davranışı sağlar.
Son aramalar URL'si paylaşımı (yalnızca Pixel)
Pixel cihazlarda kullanıcılar artık son görüntülenen web içeriğinin bağlantılarını doğrudan Son Kullanılanlar ekranından paylaşabilir. 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 bağlantı düğmesine dokunarak URL'yi kopyalayabilir veya paylaşabilir.
Daha fazla bilgi için Son kullanılanlar 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ö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ğine dair bir zaman çizelgesi gösterilir. Şekil 1'de, konum bilgilerine ilişkin veri erişimi zaman çizelgesi gösterilmektedir.
Uygulamanız, konum, kamera veya mikrofon bilgilerine neden eriştiğini kullanıcıların anlayabilmesi için kullanıcılara bir gerekçe sunabilir. Bu gerekçe, yeni Gizlilik Kontrol Paneli ekranında, uygulamanızın izinler ekranında veya her ikisinde de gösterilebilir.
Bluetooth izinleri
Android 12'de BLUETOOTH_SCAN
,
BLUETOOTH_ADVERTISE
ve
BLUETOOTH_CONNECT
izinleri kullanıma sunulmuştur. Bu izinler, Android 12'yi hedefleyen uygulamaların, özellikle de cihaz konumuna erişim gerektirmeyen uygulamaların Bluetooth cihazlarla
etkileşime geçmesini 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 grubu yerine daha modern bir Bluetooth izinleri grubu tanımlayın.
İzin grubu araması
Android 12 veya sonraki sürümlerde, sistemin platform tarafından sağlanan izinleri izin gruplarına nasıl düzenlediğini sorgulayabilirsiniz:
- Sistemin platform tanımlı 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ştiricilerin kendi uygulamalarıyla etkileşime geçen kullanıcıların ne göreceği üzerinde daha fazla kontrol sahibi olması için SYSTEM_ALERT_WINDOW
iznine sahip uygulamalar tarafından çizilen yer paylaşımı pencerelerini gizleme özelliğini kullanıma sunar.
Bir uygulama, HIDE_OVERLAY_WINDOWS
iznine sahip olduğunu beyan ettikten sonra, kendi penceresi görünür durumdayken TYPE_APPLICATION_OVERLAY
türündeki tüm pencerelerin gizlenmesini belirtmek için setHideOverlayWindows()
işlevini çağırabilir. Uygulamalar, işlem onay akışları gibi hassas ekranları görüntülerken bunu tercih edebilir.
TYPE_APPLICATION_OVERLAY
türündeki pencereler gösteren uygulamalar, kullanım alanları için daha uygun olabilecek alternatifleri (ör. resim içinde resim veya balonlar) dikkate almalıdır.
Bilinen imzalayıcıların izin koruması işareti
Android 12'den itibaren, imza düzeyindeki izinler için knownCerts
özelliği, beyan sırasında bilinen imzalama sertifikalarının özetlerine başvurmanıza olanak tanır.
Uygulamanız bu özelliği tanımlayabilir ve knownSigner
işaretini kullanarak cihazların ve uygulamaların, cihazların üretimi ve gönderimi sırasında uygulamaları imzalamak zorunda kalmadan diğer uygulamalara imza izinleri vermesine olanak tanıyabilir.
Cihaz özellikleri tasdiki
Android 12, bu uygulamalar yeni bir anahtar oluşturduğunda onay sertifikasındaki cihaz özelliklerini doğrulayabilecek uygulama grubunu genişletir.
Android 9 (API seviyesi 28) itibarıyla, Keymaster 4.0 veya sonraki sürümleri kullanan cihaz politikası sahipleri (DPO'lar) bu doğrulama 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ı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ın belirli bir bildirim işlemini çağırmadan önce cihazın kilidinin açılmasını zorunlu kılmasını sağlar. Bu yöntem, kilitli cihazlardaki bildirimlere ekstra bir güvenlik katmanı eklenmesine 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 yerleştirilmiş sınıfı, uygulamanızın kullanıcı tarafından okunabilen ve yerelleştirilmiş bir düğme etiketi, istem mesajı veya uygulama ayarı adını almasına olanak tanıyan getButtonLabel()
, getPromptMessage()
ve getSettingName()
yöntemlerini içerir. Kullanılan biyometrik kimlik doğrulama yöntemlerine özel, kullanıcılara yönelik daha net talimatlar oluşturmak için bu etiketleri kullanın (ör. "Yüz tanıma 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 mesajlarda kimlik avı algılama işlemi gerçekleştirir. Sistem, şüpheli etkinlikleri tespit etmek için cihaz üzerinde makine öğrenimi kullanır. Sistem, bu tür bir durum algıladığında kullanıcıları uyarmak için mesajlaşma uygulamasının kullanıcı arayüzünün üzerine 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:
- Şüpheli istekler (ör. kod, para veya benzerlerini gönderme)
- 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ı uyarmanın yanı sıra kullanıcının şüpheli bir mesajı bildirmesine ve sistem tarafından verilen uyarılar hakkında geri bildirim sağlamasına da olanak tanır.
Geliştiriciler, uygulama manifesti dosyalarına com.google.android.ALLOW_PHISHING_DETECTION
dizesini içeren yeni bir meta veri etiketi ekleyerek bu özelliği devre dışı bırakabilir. Örnek:
<manifest>
<application android:name="com.messagingapp">
<meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />
</application>
</manifest>
Medya
Uyumlu medya kodlama 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 bir biçim olan AVC (H.264) biçimine otomatik olarak kodlayabilir. Bu sayede, eski uygulamalarla uyumluluktan ödün vermeden mevcut olduğunda modern codec'lerden yararlanabilirsiniz.
Daha fazla bilgi için uyumlu medya kod dönüştürme bölümüne bakın.
Performans sınıfı
Android 12, performans sınıfı adlı bir standart sunuyor. Performans sınıfı, Android'in temel gereksinimlerinin ötesindeki donanım özelliklerini 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ını inceleyin.
Video kodlama iyileştirmeleri
Android 12, video kodlama için miktar belirleme parametresi (QP) değerini kontrol etmek üzere geliştiricilerin tedarikçiye özel koddan kaçınmasına olanak tanıyan standart bir anahtar grubu tanımlar.
Yeni anahtarlar MediaFormat
API'sinde ve NDK medya kitaplığında kullanılabilir.
Android 12'den itibaren video kodlayıcılar minimum kalite eşiği uygular. Bu sayede, kullanıcılar yüksek sahne karmaşıklığına sahip videoları kodlarken son derece düşük kalitede videolar izlemez.
Ses odağı
Android 12'den (API düzeyi 31) itibaren, başka bir uygulamanın odak sahibi olduğu ve oynattığı sırada bir uygulama ses odağını istediğinde sistem, oynatılan uygulamayı yavaş yavaş karartır.
Daha fazla ayrıntı için Android 12 ve sonraki sürümlerde ses odağı bölümüne bakın.
MediaDrm güncellemeleri
Mevcut MediaDrm
API'leriyle güvenli bir kod çözücü bileşeninin gerekli olup olmadığını belirlemek için şu adımları uygulamanız gerekir:
- Bir
MediaDrm
oluşturun. - Oturum kimliğini 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öntemlerle bunu bir MediaDrm
oluşturduktan hemen sonra belirleyebilirsiniz.
Kamera
Camera2 tedarikçi uzantıları
Cihaz üreticisi iş ortaklarımızın çoğu, cihazlarında farklı deneyimler oluşturmak için uygulamaların kullanmasını istedikleri özel kamera uzantıları (ör. Bokeh, HDR, Gece Modu ve diğerleri) geliştirmiştir. CameraX kitaplığı bu özel tedarikçi uzantılarını zaten desteklemektedir. Android 12'de bu tedarikçi uzantıları artık doğrudan platformda gösteriliyor.
Bu ekleme, karmaşık Camera2
uygulamalarının eski kodda önemli değişiklikler yapmak zorunda kalmadan tedarikçi uzantılarından yararlanmasına yardımcı olur. Camera2 Uzatma API'leri, CameraX'tekiyle tam olarak aynı uzantı grubunu sunar. Bu uzantılar birçok farklı cihazda zaten desteklendiğinden, ek yapılandırma yapmadan kullanabilirsiniz.
Daha fazla bilgi için CameraExtensionCharacteristics
başlıklı makaleyi inceleyin.
Dört 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önderiliyor. Bu sensörler, görüntü kalitesi ve düşük ışık performansı açısından büyük esneklik sunuyor. Android 12, üçüncü taraf uygulamalarının bu çok yönlü sensörlerden tam olarak yararlanmasına olanak tanıyan yeni platform API'lerini kullanıma sunar. Yeni API'ler bu sensörlerin benzersiz davranışını destekler ve tam çözünürlük veya "maksimum çözünürlük" modu ile "varsayılan" mod arasında çalışırken farklı akış yapılandırmalarını ve kombinasyonlarını destekleyebileceklerini dikkate alır.
Grafikler ve resimler
Uygulamalara, mezar taşı izlerine doğrudan erişim izni verme
Android 12'den itibaren uygulamanızın yerel kilitlenme mezar taşı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) üzerindendi.
Daha fazla bilgi için Uygulamalara mezar taşı izlerine doğrudan erişim sağlama başlıklı makaleyi inceleyin.
AVIF resim desteği
Android 12, AV1 resim dosyası biçimini (AVIF) kullanan resimler için destek sunar. AVIF, AV1 kullanılarak kodlanan görüntüler ve görüntü dizileri için bir container biçimidir. AVIF, video sıkıştırma işleminde kullanılan kare içi kodlanmış içerikten yararlanır. Bu sayede, JPEG gibi eski resim biçimleriyle karşılaştırıldığında aynı dosya boyutu için resim kalitesi önemli ölçüde artar. Bu biçimin avantajlarını derinlemesine incelemek 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, bulanıklık, renk filtreleri, Android gölgelendirici efektleri ve daha fazlası gibi yaygın grafik efektlerini View
'lere ve oluşturma hiyerarşilerine uygulayan yeni RenderEffect
özelliğini ekler. Efektler zincir efektler (iç ve dış efekt oluşturur) veya karışık efektler olarak birleştirilebilir. Farklı Android cihazlar, sınırlı işlem gücü nedeniyle özelliği destekleyebilir veya desteklemeyebilir.
View.setRenderEffect(RenderEffect)
çağrısı yapılarak View
için temel RenderNode
RenderNode
sınıfına da efektler 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'si, animasyonlu GIF ve animasyonlu WebP dosya biçimlerini kullanan resimlerdeki tüm karelerin ve zamanlama verilerinin kodunu çözecek şekilde genişletildi. Bu API, Android 11'de kullanıma sunulduğunda bu biçimlerdeki animasyonlardan yalnızca ilk resmin kodunu çözmüştür.
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ı açık tutma
Cihazları yönetmek için tamamlayıcı uygulamaların çalışmaya devam etmesini desteklemek amacıyla Android 12, aşağıdaki işlemleri yapan API'leri kullanıma sunar:
- Tamamlayıcı cihaz kapsama alanındayken bir uygulamayı uyandırmanıza olanak tanır.
- Cihaz kapsama alanındayken işlemin çalışmaya devam etmesini sağlayın.
API'leri kullanmak için cihazlarınızın Companion Device Manager kullanılarak 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 tamamlayıcı cihaz profillerini kullanabilir. Profil kullanmak, cihaz türüne özel izinlerin verilmesini tek bir adımda toplayarak kayıt sürecini basitleştirir.
Paket halinde sunulan izinler, cihaz bağlandıktan sonra tamamlayıcı uygulamaya verilir ve bu izinler yalnızca cihaz ilişkilendirildiğinde geçerli olur. Uygulamayı sildiğinizde veya ilişkilendirmeyi kaldırdığınızda izinler de kaldırılır.
Daha fazla bilgi için AssociationRequest.Builder.setDeviceProfile()
başlıklı makaleyi inceleyin.
Bant genişliği tahmini iyileştirmeleri
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 kullanıcının operatör veya kablosuz ağ SSID'si, ağ türü ve sinyal düzeyi başına tüm zamanlar ağırlıklı ortalama işleme hızını temsil etmektedir.
Bu yöntem, beklenen aktarım hızı için daha doğru ve gerçekçi bir tahmin sağlayabilir, uygulamanızın soğuk başlatma işlemiyle ilgili tahminler sunabilir ve diğer aktarım hızı tahmini yöntemlerine kıyasla daha az döngü gerektirir.
Wi-Fi Aware (NAN) geliştirmeleri
Android 12, kablosuz ağ farkındalığı özelliğine bazı iyileştirmeler ekler:
- Android 12 (API düzeyi 31) ve sonraki sürümleri çalıştıran cihazlarda, uygulamanız bir hizmeti hizmetin durması veya kapsama alanından çıkması nedeniyle kaybettiğinde uyarı almak için
onServiceLost()
geri çağırma işlevini kullanabilirsiniz. - Birden fazla veri yolunun (NAN Veri Yolları) oluşturulma yöntemi, daha verimli olacak şekilde değişiyor. Önceki sürümler, başlatıcıların eş bilgileri alışverişinde bulunmak için L2 mesajlaşmasını kullanıyordu. Bu da gecikmeye neden oluyordu. Android 12 ve sonraki sürümleri çalıştıran cihazlarda yanıtlayan (sunucu), herhangi bir eşlemeyi kabul edecek şekilde yapılandırılabilir. Yani 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ı sağlar.
- Android 12 ve sonraki sürümleri çalıştıran cihazlarda, çerçevenin kaynak yetersizliği nedeniyle keşif veya bağlantı isteklerini reddetmesini önlemek için
WifiAwareManager.getAvailableAwareResources()
işlevini çağırabilirsiniz. Bu yöntemin döndürülen değeri; mevcut veri yollarının sayısını, kullanılabilir yayınlama oturumlarının sayısını ve kullanılabilir abone oturumlarının sayısını görmenizi sağlar.
Eşler Arası + İnternet Bağlantısı Aynı Anda
Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen cihazlar, donanım desteği olan cihazlarda çalıştırıldığında eşler arası bağlantılar kullanıldığında eş cihazla bağlantı oluşturulurken mevcut kablosuz bağlantınızın bağlantısı kesilmez. Bu özelliğin desteklenip desteklenmediğini kontrol etmek için WifiManager.isMultiStaConcurrencySupported()
değerini kullanın.
NFC ödemeleri için ekranı kapalıyken ödeme özelliğini etkinleştirme
Android 12 ve sonraki sürümleri hedefleyen uygulamalarda, requireDeviceScreenOn
değerini false
olarak ayarlayarak NFC ödemelerini cihazın ekranı açık olmadan etkinleştirebilirsiniz. Ekran kapalı veya kilitliyken NFC ödemeleri hakkında daha fazla bilgi için Ekran kapalı ve kilit ekranı davranışı başlıklı makaleyi inceleyin.
Depolama
Android 12, aşağıdaki depolama alanı yönetimi özelliklerini kullanıma sunar:
- Uygulamanız belirli bir doküman sağlayıcı URI'sine eşdeğer bir medya URI'si aldığında
MediaDocumentsProvider
için medya mağazası desteği. - Ses kayıtları dizini.
- Uygulamanın her işlem için kullanıcıya onay iletişim kutusu göstermeden medya yönetimi işlemleri yapmasına olanak tanıyan
MANAGE_MEDIA
izni. - Hem
MANAGE_EXTERNAL_STORAGE
iznine hem deQUERY_ALL_PACKAGES
iznine sahip uygulamalar (ör. dosya yönetimi uygulamaları), diğer uygulamanın depolama alanını yönetmek için özel bir etkinlik çağırabilir. 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 kullanıma sunuyor.
Bu yöntem, yükleyici uygulamalarının kullanıcının işlemi onaylamasını gerektirmeden uygulama güncellemeleri gerçekleştirmesine olanak tanır.
Cihaz yonga seti bilgileri
Android 12, android.os.Build
değişkenine SDK üzerinden SoC yonga seti tedarikçisi ve model bilgilerini gösteren iki sabit değer ekler. Bu bilgileri sırasıyla Build.SOC_MANUFACTURER
ve Build.SOC_MODEL
numaralı telefonları arayarak edinebilirsiniz.
Temel Java API'lerinde yapılan güncellemeler
Geliştiricilerle yaptığımız ortak çalışmalar ve istekler 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
|