Android 15, geliştiricilere harika özellikler ve API'ler sunuyor. Aşağıdaki bölümlerde, ilgili API'leri kullanmaya başlamanıza yardımcı olmak için bu özellikler özetlenmiştir.
Eklenen, değiştirilen ve kaldırılan API'lerin ayrıntılı listesi için API karşılaştırma raporunu okuyun. Eklenen API'ler hakkında ayrıntılı bilgi için Android API referansı sayfasını ziyaret edin. Android 15 için API düzeyi 35'te eklenen API'leri arayın. Platform değişikliklerinin uygulamalarınızı etkileyebileceği alanlar hakkında bilgi edinmek için Android 15'i hedefleyen uygulamalar ve tüm uygulamalar için Android 15 davranış değişikliklerine göz atın.
Kamera ve medya içerikleri
Android 15, kamera ve medya deneyimini iyileştiren ve içerik üreticilerin Android'de vizyonlarını hayata geçirmelerine yardımcı olacak araçlara ve donanımlara erişim sağlayan çeşitli özellikler içerir.
Android medya ve kamera için en son özellikler ve geliştirici çözümleri hakkında daha fazla bilgi edinmek isterseniz Google I/O'daki Modern Android medya ve kamera deneyimleri oluşturma konulu konuşmaya göz atın.
Düşük Işık Güçlendirme
Android 15'te, hem Kamera 2 hem de gece modu kamera uzantısı için kullanılabilen yeni bir otomatik pozlama modu olan Düşük Işık Artırma kullanıma sunuldu. Düşük Işık Artırma, düşük ışık koşullarında Önizleme akışının pozlamasını ayarlar. Bu, gece modu kamera uzantısının hareketsiz resimler oluşturmasından farklıdır, çünkü gece modu bir seri çekim fotoğrafı birleştirerek tek, geliştirilmiş bir resim oluşturur. Gece modu, hareketsiz resim oluşturmak için çok iyi çalışsa da kesintisiz bir kare akışı oluşturamaz ancak Düşük Işık Artırması bunu yapabilir. Bu sayede Düşük Işık Artışı, aşağıdakiler gibi yeni kamera özellikleri sağlar:
- Kullanıcıların düşük ışıkta çekilmiş resimlerini daha iyi çerçevelemeleri için gelişmiş bir resim önizlemesi sağlama
- QR kodları zayıf ışıkta taranıyor
Düşük Işık Artırma'yı etkinleştirirseniz düşük ışık seviyesi olduğunda otomatik olarak açılır ve daha fazla ışık olduğunda kapanır.
Uygulamalar, düşük ışık koşullarında Önizleme akışı dışında video kaydederek aydınlatılmış bir video kaydedebilir.
Daha fazla bilgi için Düşük Işık Artışı bölümüne bakın.
Uygulama içi kamera kontrolleri
Android 15, desteklenen cihazlardaki kamera donanımı ve algoritmaları üzerinde daha fazla kontrol sahibi olabilmeniz için yeni bir uzantı ekliyor:
- Gelişmiş flaş gücü ayarlamaları, resim çekerken hem
SINGLE
hem deTORCH
modlarında flaş yoğunluğunu hassas bir şekilde kontrol etmenizi sağlar.
HDR baş üstü alanı kontrolü
Android 15, cihazın özelliklerine ve panelin bit derinliğine uygun olan HDR boşluk payını seçer. Bu davranış, tek bir HDR küçük resmi görüntüleyen bir mesajlaşma uygulaması gibi çok fazla SDR içeriğine sahip sayfalarda, SDR içeriğinin algılanan parlaklığını olumsuz yönde etkileyebilir. Android 15, SDR ile HDR içerik arasında denge kurmak için HDR boşluğunu setDesiredHdrHeadroom
ile kontrol etmenize olanak tanır.
Ses seviyesi kontrolü
Android 15, ses yüksekliği tutarsızlıklarını önlemenize ve kullanıcıların içerikler arasında geçiş yaparken sürekli olarak ses düzeyini ayarlamak zorunda kalmamasını sağlamanıza yardımcı olmak için CTA-2075 ses yüksekliği standardını destekler. Sistem, sesin ses düzeyini ve dinamik aralık sıkıştırma seviyelerini akıllıca ayarlamak için çıkış cihazlarının (kulaklık ve hoparlör) bilinen özelliklerinden ve AAC ses içeriğindeki ses düzeyi meta verilerinden yararlanır.
Bu özelliği etkinleştirmek için ses yüksekliği meta verilerinin şurada bulunduğundan emin olmanız gerekir:
AAC içeriğinizi ve uygulamanızda platform özelliğini etkinleştirin. Bunun için
LoudnessCodecController
nesnesini şu şekilde örneklendir:
cihazın sesiyle birlikte create fabrika yöntemini çağırıyor.
ilişkili AudioTrack
oturum kimliği; bu
otomatik olarak ses güncellemelerini uygulamaya başlar. MediaCodec
'e uygulanmadan önce ses seviyesi parametrelerini değiştirmek veya filtrelemek için bir OnLoudnessCodecUpdateListener
iletebilirsiniz.
// Media contains metadata of type MPEG_4 OR MPEG_D
val mediaCodec = …
val audioTrack = AudioTrack.Builder()
.setSessionId(sessionId)
.build()
...
// Create new loudness controller that applies the parameters to the MediaCodec
try {
val lcController = LoudnessCodecController.create(mSessionId)
// Starts applying audio updates for each added MediaCodec
}
AndroidX media3 ExoPlayer da sorunsuz bir uygulama entegrasyonu için LoudnessCodecController
API'lerini kullanacak şekilde güncellenecek.
Sanal MIDI 2.0 cihazları
Android 13, USB kullanan MIDI 2.0 cihazları Evrensel MIDI Paketleri (UMP). Android 15, UMP desteğini sanal MIDI uygulamalarına genişleterek beste uygulamalarının sentezleyici uygulamalarını USB MIDI 2.0 cihazı gibi sanal MIDI 2.0 cihazı olarak kontrol etmesine olanak tanır.
Daha verimli AV1 yazılım kod çözme
VideoLAN'ın popüler AV1 yazılım kod çözücüsü dav1d, artık donanımda AV1 kod çözmeyi desteklemeyen Android cihazlarda kullanılabiliyor. dav1d, eski AV1 yazılım kod çözücüye göre 3 kata kadar daha iyi performans gösteriyor. Bu sayede, düşük ve orta katmanlı cihazlar da dahil olmak üzere daha fazla kullanıcı HD AV1 oynatabiliyor.
Şimdilik uygulamanızın, "c2.android.av1-dav1d.decoder"
adıyla çağırarak dav1d kullanımını etkinleştirmesi gerekmektedir. dav1d, sonraki bir güncellemede varsayılan AV1 yazılım kod
çözücüsü olacaktır. Bu destek standartlaştırılmıştır ve Google Play sistem güncellemelerini alan Android 11 cihazlara geri aktarılır.
Geliştirici üretkenliği ve araçları
Üretkenliğinizi artırmaya yönelik çalışmalarımızın çoğu Android Studio, Jetpack Compose ve Android Jetpack kitaplıkları gibi araçlara odaklansa da platformda vizyonunuzu daha kolay gerçekleştirmenize yardımcı olacak yöntemler bulmaya her zaman çalışıyoruz.
OpenJDK 17 güncellemeleri
Android 15, Android'in çekirdek kitaplıklarını en son OpenJDK LTS sürümlerindeki özelliklerle uyumlu olacak şekilde yenileme çalışmalarına devam ediyor.
Aşağıda belirtilen temel özellikler ve iyileştirmeler sunulmuştur:
- NIO tamponları ile ilgili yaşam kalitesi iyileştirmeleri
- Akışlar
- Ek
math
vestrictmath
yöntemleri - Sıralı
collection
,map
veset
dahil olmak üzereutil
paket güncellemeleri Deflater
bölgesindeByteBuffer
desteğiX500PrivateCredential
gibi güvenlik güncellemeleri ve güvenlik anahtarı güncellemeleri
Bu API'ler, Google Play sistem güncellemeleri aracılığıyla Android 12 (API düzeyi 31) ve sonraki sürümleri çalıştıran bir milyardan fazla cihazda güncellenir. Böylece en yeni programlama özelliklerini hedefleyebilirsiniz.
PDF iyileştirmeleri
Android 15, PdfRenderer
ile ilgili önemli iyileştirmeler içerir.
API'ler. Uygulamalar, şifre korumalı dosyaların oluşturulması, ek açıklama, form düzenleme, arama ve kopyalama ile seçme gibi gelişmiş özellikler içerebilir. Yerel PDF görüntülemeyi hızlandırmak ve kaynak kullanımını azaltmak için doğrusallaştırılmış PDF optimizasyonları desteklenir.
Jetpack PDF kitaplığı, uygulamanıza PDF görüntüleme özelliklerini eklemeyi kolaylaştırmak için bu API'leri kullanır.
PdfRenderer
, Google kullanılarak güncellenebilecek bir modüle taşındı
Platform sürümünden bağımsız olarak Play sistem güncellemelerini destekleriz.
bu değişiklikleri Android 11'e (API düzeyi 30) geri
API yüzeyinin Android 15 öncesi sürümü
PdfRendererPreV
Otomatik dil geçişiyle ilgili ayrıntılı bilgiler
Android 14'te, diller arasında otomatik geçiş yapılarak seste cihaz üzerinde çok dilli tanıma özelliği eklendi ancak bu durum, özellikle diller arasında iki ifade arasında daha az duraklamayla geçiş yapıldığında kelimelerin kaybolmasına neden olabilir. Android 15'te, uygulamaların bu geçişi kendi kullanım alanına göre ayarlamasına yardımcı olacak ek kontroller vardır.
EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS
, otomatik geçişi ses oturumunun başlangıcıyla sınırlarken EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES
belirli sayıda anahtardan sonra dil geçişini devre dışı bırakır. Bu seçenekler özellikle oturum sırasında otomatik olarak algılanması gereken tek bir dil konuşulacağını düşünüyorsanız kullanışlıdır.
İyileştirilmiş OpenType Değişken Yazı Tipi API'si
Android 15, OpenType değişken yazı tipinin kullanılabilirliğini iyileştiriyor. Artık şunları yapabilirsiniz:
belirtmeden değişken yazı tipinden bir FontFamily
örneği oluştur
buildVariableFamily
API ile ağırlık eksenlerini belirleyin. Metin oluşturucu geçersiz kılmaları
görüntülenen metinle eşleşecek şekilde wght
ekseninin değerini değiştirin.
Yeni API'yi kullanarak bu işlem, Typeface
oluşturma kodunu basitleştirir
dikkate alabilirsiniz:
Kotlin
val newTypeface = Typeface.CustomFallbackBuilder( FontFamily.Builder( Font.Builder(assets, "RobotoFlex.ttf").build()) .buildVariableFamily()) .build()
Java
Typeface newTypeface = Typeface.CustomFallbackBuilder( new FontFamily.Builder( new Font.Builder(assets, "RobotoFlex.ttf").build()) .buildVariableFamily()) .build();
Önceden, aynı Typeface
öğesini oluşturmak için çok daha fazla koda ihtiyacınız vardı:
Kotlin
val oldTypeface = Typeface.CustomFallbackBuilder( FontFamily.Builder( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 400") .setWeight(400) .build()) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 100") .setWeight(100) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 200") .setWeight(200) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 300") .setWeight(300) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 500") .setWeight(500) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 600") .setWeight(600) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 700") .setWeight(700) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 800") .setWeight(800) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 900") .setWeight(900) .build() ).build() ).build()
Java
Typeface oldTypeface = new Typeface.CustomFallbackBuilder( new FontFamily.Builder( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 400") .setWeight(400) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 100") .setWeight(100) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 200") .setWeight(200) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 300") .setWeight(300) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 500") .setWeight(500) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 600") .setWeight(600) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 700") .setWeight(700) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 800") .setWeight(800) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 900") .setWeight(900) .build() ) .build() ).build();
Aşağıda, bir Typeface
hesabının hem eski hem de yeni API'lerle nasıl oluşturulduğuna dair bir örnek verilmiştir
oluşturur:
Bu örnekte, eski API ile oluşturulan Typeface
öğesinde
350, 450, 550 ve 650 için doğru yazı tipi ağırlıkları oluşturma olanağı
Font
örneklerinden oluşur, böylece oluşturucu en yakın ağırlığa geri döner. Bu nedenle
bu durumda 350 yerine 300, 450 yerine 400 oluşturulur ve
bu şekilde devam eder. Buna karşın, yeni API'lerle oluşturulan Typeface
,
Böylece, doğru ağırlıklar 350 için oluşturulur ve bu şekilde, belirli bir ağırlık için Font
örneği oluşturulur.
450, 550 ve 650 de olabilir.
Ayrıntılı satır sonu kontrolleri
Android 15'ten itibaren, TextView
ve temel satır ayırıcı, okunabilirliği artırmak için metnin belirli bir bölümünü aynı satırda koruyabilir. Dize kaynaklarında <nobreak>
etiketini veya createNoBreakSpan
kullanarak bu satır sonu özelleştirmesinden yararlanabilirsiniz. Benzer şekilde, <nohyphen>
etiketini veya createNoHyphenationSpan
kullanarak kelimeleri kısaltmalardan koruyabilirsiniz.
Örneğin, aşağıdaki dize kaynağı satır sonu içermez ve "Pixel 8 Pro" metninin istenmeyen bir yerde kesildiği şekilde oluşturulur:
<resources>
<string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>
Buna karşılık bu dize kaynağı, "Pixel 8 Pro" ifadesini sarmalayan ve satır aralarını önleyen <nobreak>
etiketini içerir:
<resources>
<string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>
Bu dizelerin oluşturulma biçimleri arasındaki fark aşağıdaki resimlerde gösterilmektedir:
Uygulama arşivleme
Android ve Google Play son olarak uygulama arşivleme desteğini duyurdu yıl, kullanıcıların belirli bir süre içinde Cihazda Android Uygulaması kullanılarak yayınlanan, sık kullanılmayan uygulamalar Google Play'deki paket. Android 15, uygulama arşivleme ve arşivden çıkarma için OS düzeyinde destek içerir. Bu sayede tüm uygulama mağazalarının bu özelliği uygulamasını kolaylaştırır.
REQUEST_DELETE_PACKAGES
iznine sahip uygulamalar, yüklü bir uygulama paketinin arşivlenmesini istemek için PackageInstaller
requestArchive
yöntemini çağırabilir. Bu yöntem, APK'yı ve önbelleğe alınmış dosyaları kaldırır ancak kullanıcı verilerini korur. Arşivlenen uygulamalar, LauncherApps
API'leri aracılığıyla görüntülenebilir uygulamalar olarak döndürülür. Kullanıcılar, bu uygulamaların arşivlendiğini vurgulayan bir kullanıcı arayüzü işlemi görür. Kullanıcı arşivlenmiş bir uygulamaya dokunursa sorumlu yükleyici
arşivden çıkarma isteği alır ve geri yükleme işlemi
ACTION_PACKAGE_ADDED
yayını tarafından izlenmektedir.
Geliştirici seçeneklerini kullanarak cihazda 16 KB modunu etkinleştirme
Android 15 QPR1'den itibaren, cihazı 16 KB modunda başlatmak ve cihaz üzerinde test yapmak için belirli cihazlarda bulunan geliştirici seçeneğini kullanabilirsiniz.
Bu geliştirici seçeneği aşağıdaki cihazlarda kullanılabilir:
- Pixel 8 ve 8 Pro (Android 15 QPR1 veya sonraki sürümler)
- Pixel 8a (Android 15 QPR1 veya sonraki sürümler)
Grafik
Android 15, ANGLE ve Canvas grafik sistemine eklenen özellikler de dahil olmak üzere en son grafik iyileştirmelerini sunar.
Android'in GPU erişimini modernize etme
Android donanımı, çekirdek işletim sisteminin tek bir CPU'da çalıştığı ilk günlerden beri epey gelişti. Sabit işlev ardışık düzenlerine dayalı API'ler kullanılarak GPU'lara erişiliyordu. Vulkan® grafik API'si, Android 7.0'dan (API seviyesi 24) itibaren NDK'da kullanımdadır. Modern GPU donanımını daha iyi yansıtan, birden fazla CPU çekirdeğini destekleyecek şekilde daha iyi ölçeklenen ve CPU sürücüsü ek yükünü azaltan daha düşük seviyeli bir soyutlamayla uygulama performansını iyileştirir. Vulkan, tüm modern oyun motorları tarafından desteklenir.
Vulkan, Android'in GPU için tercih edilen arayüzüdür. Bu nedenle Android 15, Vulkan'ın üzerinde OpenGL® ES'yi çalıştırmak için isteğe bağlı bir katman olarak ANGLE'ı içerir. ANGLE'a geçiş yapmak, daha iyi uyumluluk ve bazı durumlarda daha iyi performans için Android OpenGL uygulamasını standart hale getirir. Android 15'te Ayarlar -> Sistem -> Geliştirici Seçenekleri -> Deneysel: ANGLE'ı Etkinleştir seçeneğinden geliştirici seçeneğini etkinleştirerek OpenGL ES uygulamanızın kararlılığını ve performansını ANGLE ile test edebilirsiniz.
Vulkan'da Android ANGLE yol haritası
GPU yığınımızı kolaylaştırmanın bir parçası olarak bundan sonra ANGLE'ı daha fazla yeni cihazda GL sistem sürücüsü olarak sunacağız. OpenGL/ES'nin yalnızca ANGLE üzerinden kullanılabilmesi beklenmektedir. Bununla birlikte, tüm cihazlarda OpenGL ES desteğine devam etmeyi planlıyoruz.
Sıradaki önerilen adımlar
OpenGL ES için ANGLE sürücüsünü seçmek ve uygulamanızı test etmek üzere geliştirici seçeneklerini kullanın. Yeni projelerde, C/C++ için Vulkan'ı kullanmanızı önemle tavsiye ederiz.
Tuval'de yapılan iyileştirmeler
Android 15, Android'in Canvas grafik sistemini yeni özelliklerle modernleştirmemize devam ediyor:
Matrix44
, tuvali 3D olarak işlemek istediğinizde kullanılması gereken koordinatların dönüştürülmesi için bir 4x4 matrisi sağlar.clipShader
, geçerli klibi, belirtilen gölgelendiriciyle kesiştirir.clipOutShader
ise klibi, geçerli klibin ve gölgelendiricinin farkına ayarlar. Her biri, gölgelendiriciyi bir alfa maskesi olarak değerlendirir. Bu, karmaşık şekillerin etkili bir şekilde çizilmesini destekler.
Performans ve pil
Android, uygulamalarınızın performansını ve kalitesini iyileştirmenize yardımcı olmaya devam ediyor. Android 15, uygulamanızdaki görevlerin daha verimli şekilde yürütülmesine, uygulama performansını optimize etmeye ve uygulamalarınızla ilgili analizler toplamaya yardımcı olan API'ler sunar.
Pil tasarrufu sağlayan en iyi uygulamalar, ağ ve güç kullanımıyla ilgili hata ayıklama ve Android 15 ile Android'in son sürümlerinde arka plan işlemlerinin pil verimliliğini nasıl iyileştirdiğimiz hakkında ayrıntılı bilgi için Google I/O'daki Android'de arka plan işlemlerinin pil verimliliğini iyileştirme konulu konuşmaya göz atın.
ApplicationStartInfo API
Android'in önceki sürümlerinde uygulama başlatma işlemi biraz gizemli olmuştur. Uygulamanızın içinde bu durumun soğuk mu, sıcak mı yoksa sıcak durumda mı başladığını belirlemek zordu. Ayrıca, uygulamanızın çeşitli lansman aşamalarında ne kadar süre harcadığını bilmek de zordu. Süreci bölme, onCreate
çağırma, ilk kareyi çizme ve daha pek çok işlem. Application
sınıfınız örneklendiğinde, uygulamanın bir yayından mı, içerik sağlayıcıdan mı, bir işten mi, bir yedeklemeden mi, bir başlatmadan mı, bir alarmdan mı yoksa bir Activity
'dan mı başlatıldığını bilmeniz mümkün değildi.
Android 15'teki ApplicationStartInfo
API, bunların tümünü ve daha fazlasını sağlar. Zamanlama verilerini tek bir yerden toplamaya yardımcı olması için akışa kendi zaman damgalarınızı bile ekleyebilirsiniz. Metrik toplamaya ek olarak, uygulama başlangıcını doğrudan optimize etmeye yardımcı olması için ApplicationStartInfo
kullanabilirsiniz. Örneğin, uygulamanız yayın nedeniyle başlatılırken Application
sınıfınızda kullanıcı arayüzü ile ilgili kitaplıkların maliyetli şekilde örneklenmesini önleyebilirsiniz.
Ayrıntılı uygulama boyutu bilgileri
Android 8.0'dan (API düzeyi 26) bu yana Android, bir uygulamanın yüklü boyutunu tek bir bayt sayısı olarak özetleyen StorageStats.getAppBytes
API'sini içerir. Bu API; APK boyutunun, APK'dan çıkarılan dosyaların boyutu ve cihazda oluşturulan dosyaların (ör. önceden derlenen kod) toplamıdır. Bu sayı, uygulamanızın depolama alanını nasıl kullandığı açısından yeterince anlamlı değildir.
Android 15'te APK dosyası bölümleri, AOT ve hızlandırmayla ilgili kodlar, dex meta verileri, kitaplıklar ve açıklamalı profiller de dahil olmak üzere uygulamanızın tüm bu alanı nasıl kullandığına dair bilgi edinmenizi sağlayan StorageStats.getAppBytesByDataType([type])
API'si bulunur.
Uygulama tarafından yönetilen profil oluşturma
Android 15, uygulamanızdan yığın dökümleri, yığın profilleri, yığın örnekleme ve daha fazlası gibi profil oluşturma bilgilerini toplamanıza olanak tanıyan ProfilingManager
sınıfını içerir. Uygulamanızın dosya dizinine yayınlanan çıkış dosyasını tanımlamak için sağlanan bir etiketle uygulamanıza geri çağırma sağlar. API, performans üzerindeki etkiyi en aza indirmek için hız sınırlaması yapar.
Uygulamanızda profil oluşturma istekleri oluşturmayı basitleştirmek için Core 1.15.0-rc01 veya sonraki sürümlerde bulunan ilgili Profiling
AndroidX API'sini kullanmanızı öneririz.
SQLite veritabanı iyileştirmeleri
Android 15, temel SQLite motorundaki gelişmiş özellikleri sunan ve uygulamalarda ortaya çıkabilecek belirli performans sorunlarını hedefleyen SQLite API'lerini kullanıma sunar. Bu API'ler, SQLite'ın sürüm güncellemesine dahil edilir 3.44.3 belgesini inceleyin.
Geliştiriciler, özellikle büyük veritabanlarıyla çalışırken veya gecikmeye duyarlı sorgular çalıştırırken SQLite veritabanlarından en iyi şekilde yararlanmak için SQLite performansıyla ilgili en iyi uygulamalara göz atmalıdır.
- Salt okunur ertelenen işlemler: Salt okunur (yazma ifadeleri içermeyen) işlemler gönderirken salt okunur
DEFERRED
işlemleri göndermek içinbeginTransactionReadOnly()
vebeginTransactionWithListenerReadOnly(SQLiteTransactionListener)
kullanın. Bu tür işlemler, olarak ayarlayabilir ve veritabanı WAL modundaysa birbirlerineIMMEDIATE
veyaEXCLUSIVE
işlemiyle eş zamanlı olarak çalışır. - Satır sayıları ve kimlikler: Değiştirilen öğelerin sayısını almak için API'ler eklenmiştir
satır kimliğini veya son eklenen satır kimliğini girin.
getLastChangedRowCount()
, geçerli işlemdeki en son SQL ifadesi tarafından eklenen, güncellenen veya silinen satır sayısını döndürür.getTotalChangedRowCount()
ise geçerli bağlantıdaki sayıyı döndürür.getLastInsertRowId()
, son satırınrowid
değerini döndürür yeni bir bağlantı eklemeniz gerekir. - Ham ifadeler: Kolaylık sağlayan sarmalayıcıları ve bunların neden olabileceği ek işlem maliyetlerini atlayarak ham SQlite ifadesi gönderin.
Android Dinamik Performans Çerçevesi güncellemeleri
Android 15, oyunların ve performans odaklı uygulamaların Android cihazların güç ve termal sistemleriyle daha doğrudan etkileşim kurmasını sağlayan bir API kümesi olan Android Dinamik Performans Çerçevesi'ne (ADPF) yatırımımıza devam ediyor. Android 15, desteklenen cihazlarda yeni ADPF özellikleri ekleyecektir:
- İpucu oturumlarının ilişkili iş parçacıklarının performans yerine güç tasarrufunu tercih etmesi gerektiğini belirten bir güç verimliliği modu. Bu mod, uzun süre çalışan arka plan iş yükleri için idealdir.
- GPU ve CPU çalışma süreleri, ipucu oturumlarında raporlanabilir. Böylece, sistemin CPU ve GPU frekanslarını, iş yükü taleplerini en iyi şekilde karşılayacak şekilde birlikte ayarlayabilir.
- Olası termal kısıtlama durumunu iyileştirme olasılığı tahminine göre yorumlamak için termal artış payı eşikleri.
Uygulama ve oyunlarınızda ADPF'yi nasıl kullanacağınız hakkında daha fazla bilgi edinmek için belgeleri inceleyin.
Gizlilik
Android 15, uygulama geliştiricilerin kullanıcı gizliliğini korumasına yardımcı olan çeşitli özellikler içerir.
Ekran kaydı algılama
Android 15, bunları algılamak için uygulamalar için destek sunmaya başladı. kaydedilmektedir. Uygulama geçişinde her zaman geri çağırma çağrılır arasında bir ekran kaydında görünür veya görünmez olma arasındaki farka bağlıdır. Kayıt işleminin UID'sine ait etkinlikler kaydediliyorsa uygulama görünür olarak kabul edilir. Bu sayede, uygulamanız hassas bir işlem gerçekleştiriyorsa kullanıcıyı kaydedildiğini bildirebilirsiniz.
val mCallback = Consumer<Int> { state ->
if (state == SCREEN_RECORDING_STATE_VISIBLE) {
// We're being recorded
} else {
// We're not being recorded
}
}
override fun onStart() {
super.onStart()
val initialState =
windowManager.addScreenRecordingCallback(mainExecutor, mCallback)
mCallback.accept(initialState)
}
override fun onStop() {
super.onStop()
windowManager.removeScreenRecordingCallback(mCallback)
}
Genişletilmiş IntentFilter özellikleri
Android 15, URL sorgu parametreleri, URL parçaları ve engelleme veya hariç tutma kuralları dahil olmak üzere her biri karşılanması gereken bir Intent
eşleme kuralı grubu oluşturan bir UriRelativeFilter
nesnesi grubu içeren UriRelativeFilterGroup
aracılığıyla daha hassas Intent
çözümü destekler.
Bu kurallar, AndroidManifest
XML dosyasında <uri-relative-filter-group>
etiketiyle tanımlanabilir. Bu etiket isteğe bağlı olarak android:allow
etiketi içerebilir. Bu etiketler, mevcut veri etiketi özelliklerinin yanı sıra android:query
ve android:fragment
özelliklerini kullanan <data>
etiketleri içerebilir.
AndroidManifest
söz dizimi örneğini aşağıda bulabilirsiniz:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:domain="astore.com" />
<uri-relative-filter-group>
<data android:pathPrefix="/auth" />
<data android:query="region=na" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:query="mobileoptout=true" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:fragmentPrefix="faq" />
</uri-relative-filter-group>
</intent-filter>
Özel alan
Özel alan, kullanıcıların cihazlarında ayrı bir alan oluşturmasına olanak tanır. aşağıdaki ekstra bir katmanın altında hassas uygulamaları meraklı gözlerden uzak tutun: kimlik doğrulama. Özel alanda ayrı bir kullanıcı profili kullanılır. Kullanıcı özel alan için cihaz kilidini veya ayrı bir kilit faktörü kullanmayı seçin.
Özel alandaki uygulamalar, başlatıcıda ayrı bir kapsayıcıda görünür ve son kullanılanlar görünümünden, bildirimlerden, ayarlardan ve diğer uygulamalardan gizlenir özel alan kilitliyken de kullanabilirsiniz. Kullanıcı tarafından oluşturulan ve indirilen içerikler (ör. medya dosyaları veya dosyalar) ve hesaplar, özel alan ile ana alan. Sistem paylaşım sayfası ve fotoğraf seçici, uygulamaların içeriğe erişmesine izin vermek için kullanılabilir özel alanın kilidi açıkken alanlar arasında geçiş yapabiliyor.
Kullanıcılar mevcut uygulamaları ve verilerini özel alana taşıyamaz. Bunun yerine Kullanıcılar özel alanda bir uygulamayı yüklemek için uygulama mağazasına geçiş yapabilirsiniz. Özel alandaki uygulamalar şu şekilde yüklenir: ana alandaki uygulamalardan ayrı kopyalar (aynı uygulamanın yeni kopyaları).
Kullanıcı özel alanı kilitlediğinde profil durdurulur. Profil durdurulursa, özel alandaki uygulamalar artık etkin değildir ve performans yapamaz. Bildirimlerin gösterilmesi de dahil olmak üzere ön plan veya arka plan etkinlikleri.
Uygulamanızın her zaman güvenli olduğundan emin olmak için uygulamanızı özel alanla beklendiği gibi çalışıyorsa, özellikle uygulamanız aşağıdakilerden birine uygunsa kategoriler:
- İş profilleri için mantığı olan uygulamalar. Bu uygulamalarda herhangi bir ana profilde bulunmayan yüklenmiş kopyaları iş profiline gidin.
- Tıbbi uygulamalar
- Başlatıcı uygulamaları
- Uygulama mağazası uygulamaları
Seçili Fotoğraflar erişimi için en son kullanıcı seçimini sorgulayın
Artık medya izinlerine kısmi erişim verildiğinde uygulamalar yalnızca en son seçilen fotoğraf ve videoları vurgulayabilir. Bu özellik, sık sık fotoğraflara ve videolara erişim isteyen uygulamalar için kullanıcı deneyimini iyileştirebilir. Bu özelliği uygulamanızda kullanmak için ContentResolver
üzerinden MediaStore
sorgusu oluştururken QUERY_ARG_LATEST_SELECTION_ONLY
bağımsız değişkenini etkinleştirin.
Kotlin
val externalContentUri = MediaStore.Files.getContentUri("external") val mediaColumns = arrayOf( FileColumns._ID, FileColumns.DISPLAY_NAME, FileColumns.MIME_TYPE, ) val queryArgs = bundleOf( // Return only items from the last selection (selected photos access) QUERY_ARG_LATEST_SELECTION_ONLY to true, // Sort returned items chronologically based on when they were added to the device's storage QUERY_ARG_SQL_SORT_ORDER to "${FileColumns.DATE_ADDED} DESC", QUERY_ARG_SQL_SELECTION to "${FileColumns.MEDIA_TYPE} = ? OR ${FileColumns.MEDIA_TYPE} = ?", QUERY_ARG_SQL_SELECTION_ARGS to arrayOf( FileColumns.MEDIA_TYPE_IMAGE.toString(), FileColumns.MEDIA_TYPE_VIDEO.toString() ) )
Java
Uri externalContentUri = MediaStore.Files.getContentUri("external"); String[] mediaColumns = { FileColumns._ID, FileColumns.DISPLAY_NAME, FileColumns.MIME_TYPE }; Bundle queryArgs = new Bundle(); queryArgs.putBoolean(MediaStore.QUERY_ARG_LATEST_SELECTION_ONLY, true); queryArgs.putString(MediaStore.QUERY_ARG_SQL_SORT_ORDER, FileColumns.DATE_ADDED + " DESC"); queryArgs.putString(MediaStore.QUERY_ARG_SQL_SELECTION, FileColumns.MEDIA_TYPE + " = ? OR " + FileColumns.MEDIA_TYPE + " = ?"); queryArgs.putStringArray(MediaStore.QUERY_ARG_SQL_SELECTION_ARGS, new String[] { String.valueOf(FileColumns.MEDIA_TYPE_IMAGE), String.valueOf(FileColumns.MEDIA_TYPE_VIDEO) });
Android'de Özel Korumalı Alan
Android 15, Android'deki Özel Korumalı Alan'ın en son sürümünü içeren en yeni Android Reklam Hizmetleri uzantılarını içerir. Bu ekleme, kullanıcı gizliliğini iyileştiren ve mobil uygulamalar için etkili, kişiselleştirilmiş reklam deneyimleri sağlayan yeni teknolojiler geliştirme çalışmalarımızın bir parçasıdır. Başlamanıza yardımcı olacak Android geliştirici önizlemesi ve beta programları hakkında daha fazla bilgiyi özel korumalı alan sayfamızda bulabilirsiniz.
Health Connect
Android 15, uygulamalar tarafından toplanan sağlık ve fitness verilerini yönetmek ve paylaşmak için güvenli ve merkezi bir platform olan Android'den Health Connect ile ilgili en son uzantıları entegre eder. Bu güncellemeyle fitness, beslenme, deri sıcaklığı, antrenman planları ve daha birçok alanda ek veri türleri için destek eklendi.
Cilt sıcaklığı takibi, kullanıcıların giyilebilir cihazlardan veya diğer izleme cihazlarından daha doğru sıcaklık verileri depolayıp paylaşmasına olanak tanır.
Antrenman planları, kullanıcıların fitness hedeflerine ulaşmasına yardımcı olmak için hazırlanmış yapılandırılmış antrenman planlarıdır hedefler. Eğitim planları desteği, tamamlama ve performans açısından farklılık gösterir hedefler:
- Harcanan kalori, mesafe, süre, tekrar ve adım sayısıyla ilgili tamamlama hedefleri
- Mümkün olduğunca çok tekrar (AMRAP), ritim, kalp atış hızı, güç, algılanan efor oranı ve hız ile ilgili performans hedefleri.
Android'deki Health Connect ile ilgili son güncellemeler hakkında daha fazla bilgiyi şurada bulabilirsiniz: Android'de uyarlanabilir deneyimler geliştirme Google I/O'da sağlık konuşması.
Uygulama ekran paylaşımı
Android 15, uygulama ekranı paylaşımını destekler. Böylece kullanıcılar cihaz ekranının tamamını değil, yalnızca bir uygulama penceresini paylaşabilir veya kaydedebilir. İlk olarak Android 14 QPR2'de etkinleştirilen bu özellik, uygulamanızın uygulama ekranı paylaşımı deneyimini özelleştirmesine olanak tanıyan MediaProjection
geri çağırma işlevlerini içerir. Android 14 (API düzeyi 34) veya sonraki sürümleri hedefleyen uygulamalarda her MediaProjection
yakalama oturumu için kullanıcı izninin gerekli olduğunu unutmayın.
Kullanıcı deneyimi ve sistem kullanıcı arayüzü
Android 15, uygulama geliştiricilere ve kullanıcılara cihazlarını ihtiyaçlarına göre yapılandırma konusunda daha fazla kontrol ve esneklik sunar.
Uygulamanızın kullanıcı deneyimini iyileştirmek için Android 15'teki en son iyileştirmeleri nasıl kullanacağınız hakkında daha fazla bilgi edinmek için Google I/O'daki Android uygulamanızın kullanıcı deneyimini iyileştirme konuşmasına göz atın.
Oluşturulan Önizlemeler API'si ile daha zengin widget önizlemeleri
Android 15'ten önce widget seçici önizlemeleri sağlamanın tek yolu statik bir resim veya düzen kaynağı belirtmekti. Bu önizlemeler, ana ekrana yerleştirildiğinde asıl widget'ın görünümünden genellikle önemli ölçüde farklıdır. Ayrıca statik kaynaklar Jetpack Glance ile oluşturulamaz. Bu nedenle, bir XML dosyasına sahip olması için geliştiricinin widget'ın ekran görüntüsünü widget önizlemesi.
Android 15'te oluşturulan önizlemeler için destek eklendi. Bu, uygulama widget'ının
sağlayıcılar, bunun yerine seçici önizlemesi olarak kullanmak üzere RemoteViews
oluşturabilir
örneğidir.
Push API'sı
Uygulamalar, oluşturulan önizlemeleri bir push API'si aracılığıyla sağlayabilir. Uygulamalar, yaşam döngülerinin herhangi bir noktasında önizleme sağlayabilir ve canlı yayın sahibinden önizleme sağlamaları için açık bir istek almazlar. Önizlemeler AppWidgetService
'te saklanır ve ev sahipleri bunları istedikleri zaman isteyebilir. Aşağıdaki örnek, bir XML widget'ı yükler
düzen kaynağını belirler ve bunu önizleme olarak ayarlar:
AppWidgetManager.getInstance(appContext).setWidgetPreview(
ComponentName(
appContext,
SociaLiteAppWidgetReceiver::class.java
),
AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN,
RemoteViews("com.example", R.layout.widget_preview)
)
Beklenen akış şu şekildedir:
- Widget sağlayıcı dilediğinde
setWidgetPreview
çağrısı yapar. Sağlanan Önizlemeler,AppWidgetService
uygulamasında diğer sağlayıcı bilgileriyle birlikte kalıcıdır. setWidgetPreview
,AppWidgetHost.onProvidersChanged
geri çağırma işlevi aracılığıyla ev sahiplerini güncellenmiş önizlemeden haberdar eder. Buna karşılık, widget ana makine tüm sağlayıcı bilgilerini yeniden yükler.- Barındırıcı, widget önizlemesini görüntülerken
AppWidgetProviderInfo.generatedPreviewCategories
değerini kontrol eder ve seçilen kategori mevcutsa bu sağlayıcının kayıtlı önizlemesini döndürmek içinAppWidgetManager.getWidgetPreview
işlevini çağırır.
setWidgetPreview
'ü ne zaman aramalısınız?
Önizleme sağlamak için geri çağırma olmadığından uygulamalar, çalıştıkları herhangi bir noktada önizleme göndermeyi seçebilir. Önizlemenin ne sıklıkta güncelleneceği widget'ın kullanım alanına bağlıdır.
Aşağıdaki listede, önizleme kullanım alanlarının iki ana kategorisi açıklanmaktadır:
- Widget önizlemelerinde gerçek veriler gösteren sağlayıcılar (ör. kişiselleştirilmiş reklamlar) en son bilgilere ulaşabilirsiniz. Bu sağlayıcılar, kullanıcı aşağıdaki işlemleri yaptıktan sonra önizlemeyi ayarlayabilir: oturum açmış veya uygulamasında ilk yapılandırmayı gerçekleştirmiş olduğundan emin olun. Bundan sonra, önizlemeleri seçtikleri sıklıkta güncellemek için periyodik bir görev oluşturabilir. Bu tür widget'lara örnek olarak fotoğraf, takvim, hava durumu veya haber widget'ları verilebilir.
- Önizlemelerde veya hızlı işlem widget'larında statik bilgiler gösteren sağlayıcılar reklam grupları oluşturabilirsiniz. Bu sağlayıcılar, uygulama ilk kez açıldığında önizlemeleri bir kez ayarlayabilir. Bu tür widget'lara örnek olarak Drive hızlı işlemler widget'ı veya Chrome kısayolları widget'ı verilebilir.
Bazı sağlayıcılar, hub modu seçicisinde statik önizlemeler gösterebilir ancak gerçek bilgileri kontrol edin. Bu sağlayıcılar, önizlemeleri ayarlamak için bu kullanım alanlarının her ikisi için de yönergeleri izlemelidir.
Pencere İçinde Pencere
Android 15'te Pencere İçinde Pencere (PiP) değişiklikleriyle birlikte PiP moduna girerken daha yumuşak geçiş sağlanır. Bu özellik, ana kullanıcı arayüzlerinin üzerine yer paylaşımlı olarak yerleştirilmiş kullanıcı arayüzü öğelerine sahip uygulamalar için faydalı olacaktır.
Geliştiriciler, üste binen kullanıcı arayüzü öğelerinin görünürlüğünü değiştiren mantığı tanımlamak için onPictureInPictureModeChanged
geri çağırma işlevini kullanır. Bu geri çağırma, PiP giriş veya çıkış animasyonu tamamlandığında tetiklenir. Android 15'ten itibaren PictureInPictureUiState
sınıfı başka bir durum içerir.
Bu kullanıcı arayüzü durumunda, Android 15'i (API düzeyi 35) hedefleyen uygulamalar, PIP animasyonu başlar başlamaz Activity#onPictureInPictureUiStateChanged
geri çağırma işlevinin isTransitioningToPip()
ile çağrıldığını gözlemler. PiP modundayken uygulamayla alakalı olmayan birçok kullanıcı arayüzü öğesi vardır. Örneğin, öneriler, yaklaşan video, derecelendirmeler ve başlıklar gibi bilgileri içeren görünümler veya düzenler. Uygulama PiP moduna geçtiğinde bu kullanıcı arayüzü öğelerini gizlemek için onPictureInPictureUiStateChanged
geri çağırma işlevini kullanın. Uygulama, PiP penceresinden tam ekran moduna geçtiğinde aşağıdaki örneklerde gösterildiği gibi bu öğeleri göstermek için onPictureInPictureModeChanged
geri çağırma işlevini kullanın:
override fun onPictureInPictureUiStateChanged(pipState: PictureInPictureUiState) {
if (pipState.isTransitioningToPip()) {
// Hide UI elements
}
}
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) {
if (isInPictureInPictureMode) {
// Unhide UI elements
}
}
Alakasız kullanıcı arayüzü öğelerinin (PiP penceresi için) bu hızlı görünürlük açma/kapatma özelliği, PiP giriş animasyonunun daha akıcı ve titreşimsiz olmasını sağlar.
İyileştirilmiş Rahatsız Etmeyin kuralları
AutomaticZenRule
, uygulamaların Dikkat'i özelleştirmesine olanak tanır
Yönetim (Rahatsız Etmeyin) kuralları ve ne zaman etkinleştirileceğine veya devre dışı bırakılacağına karar verme
oluşturabilirsiniz. Android 15,
en iyi uygulamaları paylaşacağız. Aşağıdaki iyileştirmeler dahildir:
AutomaticZenRule
öğesine türler ekleniyor ve sistemin özel uygulama yapmasına olanak tanıyor bazı kurallara uyması gerekir.AutomaticZenRule
uygulamasına simge eklenerek modların daha kullanışlı hale getirilmesine yardımcı olun fark edebilirsiniz.AutomaticZenRule
öğesine aşağıdakileri açıklayan birtriggerDescription
dizesi ekleniyor kuralın kullanıcı için etkin olması gereken koşullar.- Eklenme zamanı
ZenDeviceEffects
AutomaticZenRule
değerine ayarlayarak kuralların gri tonlama gibi öğeleri tetiklemesine izin verir gece moduna girebilir veya duvar kağıdını karartabilirsiniz.
Bildirim kanalları için VibrationEffect'i ayarlama
Android 15, gelen bildirimler için zengin titreşimlerin ayarlanmasını
NotificationChannel.setVibrationEffect
kullanıyor. Bu nedenle,
Kullanıcılarınız farklı bildirim türlerini birbirinden
cihazlarına bakması gerekmez.
Medya projeksiyonu durum çubuğu çipi ve otomatik durdurma
Medya yansıtma, kullanıcıların gizli bilgilerini açığa çıkarabilir. Yeni ve belirgin bir durum çubuğu çipi, devam eden ekran projeksiyonlarından kullanıcıları haberdar eder. Kullanıcılar ekran aktarmayı, paylaşımı veya kaydı durdurmak için çipe dokunabilir. Ayrıca, daha sezgisel bir kullanıcı deneyimi için devam eden ekran projeksiyonları artık cihaz ekranı kilitlendiğinde otomatik olarak durdurulur.
Büyük ekranlar ve form faktörleri
Android 15, uygulamalarınızın büyük ekranlar, katlanabilir cihazlar ve katlanabilir cihazlar da dahil olmak üzere Android'in form faktörlerinden en iyi şekilde yararlanmasını sağlar.
Büyük ekranda çoklu görev deneyimi artık daha iyi
Android 15, kullanıcıların büyük ekranlı cihazlarda çoklu görev gerçekleştirmeleri için daha iyi yöntemler sunar. Örneğin, Örneğin, kullanıcılar en sevdikleri bölünmüş ekran uygulama kombinasyonlarını hızlı bir şekilde görev çubuğuna dokunup sabitleyerek uygulamalar arasında kolayca geçiş yapabilirsiniz. Bunun anlamı şudur: uygulamanızın uyarlanabilir olmasını sağlamanın hiç olmadığı kadar önemli olduğunu unutmayın.
Google I/O, Uyarlanabilir Android'i Geliştirme uygulamalar ve Material 3 ile Kullanıcı Arayüzü Oluşturma uyarlanabilir kitaplık yardımcı olabilir ve dokümanlarımızda büyük müşteri memnuniyeti için ekranları için de geçerlidir.
Kapak ekranı desteği
Uygulamanız, Android 15'in Application
veya Activity
cihazınızın desteklenen çevrilebilir cihazların küçük kapak ekranlarında gösterilmesine izin vermek için kullandığı bir özelliği beyan edebilir. Bu ekranlar, Android uygulamalarının çalışması için uyumlu hedefler olarak kabul edilemeyecek kadar küçük olsa da uygulamanız bu ekranları desteklemeyi tercih edebilir. Böylece uygulamanız daha fazla yerde kullanılabilir.
Bağlantı
Android 15, platformu güncelleyerek uygulamanızın iletişim ve kablosuz teknolojilerdeki en son gelişmelere erişmesini sağlar.
Uydu desteği
Android 15, uydu bağlantısı için platform desteğini genişletmeye ve Kullanıcı deneyiminin tutarlı bir uydu bağlantısı durumu.
Uygulamalar, bir cihazın uyduya ne zaman bağlandığını algılamak için ServiceState.isUsingNonTerrestrialNetwork()
kullanabilir. Bu sayede, tam ağ hizmetlerinin neden kullanılamayabileceği konusunda daha fazla bilgi sahibi olabilirler. Ayrıca Android 15, mesaj göndermek ve almak için uydu bağlantısını kullanmak üzere SMS ve MMS uygulamalarının yanı sıra önceden yüklenmiş RCS uygulamaları için destek sunar.
Daha sorunsuz NFC deneyimleri
Android 15, Android'in sağlam NFC uygulama ekosistemini desteklemeye devam ederken temassız ödeme deneyimini daha sorunsuz ve güvenilir hale getirmek için çalışıyor. Desteklenen cihazlarda uygulamalar gözlem moduna girmek için NfcAdapter
iznini isteyebilir. Bu modda cihaz, NFC okuyucuları dinler ancak NFC okuyuculara yanıt vermez ve uygulamanın NFC hizmetini PollingFrame
nesneleri işlemesi için gönderir. PollingFrame
nesneleri, NFC okuyucuyla ilk iletişimden önce kimlik doğrulaması yapmak için kullanılabilir. Böylece çoğu durumda tek dokunuşla işlem yapılabilir.
Ayrıca uygulamalar artık desteklenen cihazlarda filtre kaydedebilir. Böylece, NFC duyarlı birden çok uygulamayla sorunsuz bir şekilde çalışmaya olanak tanıyan yoklama döngüsü etkinliği hakkında bildirim alabilirler.
Cüzdan rolü
Android 15'te, kullanıcının tercih ettiği cüzdan uygulamasıyla daha sıkı entegrasyon olanağı sağlayan yeni bir Cüzdan rolü kullanıma sunuluyor. Bu rol, NFC varsayılan temassız ödeme ayarının yerini alır. Kullanıcılar, Ayarlar > Uygulamalar > Varsayılan Uygulamalar'a giderek Cüzdan rol sahibini yönetebilir.
Cüzdan rolü, ödeme kategorisinde kayıtlı AID'ler için NFC dokunmaları yönlendirilirken kullanılır. Ön planda aynı AID için kayıtlı başka bir uygulama çalışmıyorsa dokunma işlemleri her zaman Cüzdan rol sahibine gider.
Bu rol, etkinleştirildiğinde Cüzdan Hızlı Erişim kutusunun nereye gideceğini belirlemek için de kullanılır. Rol "Yok" olarak ayarlandığında QuickAccess kutusu kullanılamaz ve ödeme kategorisindeki NFC dokunmaları yalnızca ön plandaki uygulamaya iletilir.
Güvenlik
Android 15, uygulamanızın güvenliğini artırmanıza ve verilerini korumanıza yardımcı olur. Ayrıca kullanıcılara verilerini daha şeffaf bir şekilde kullanma ve kontrol etme olanağı sunar. Kullanıcı korumalarını iyileştirmek ve uygulamanızı yeni tehditlere karşı korumak için yaptığımız çalışmalar hakkında daha fazla bilgi edinmek isterseniz Google I/O'daki Android'de kullanıcı güvenliğini sağlama konulu konuşmaya göz atın.
Kimlik Bilgisi Yöneticisi'ni otomatik doldurma ile entegre etme
Starting with Android 15, developers can link specific views like username or password fields with Credential Manager requests, making it easier to provide a tailored user experience during the sign-in process. When the user focuses on one of these views, a corresponding request is sent to Credential Manager. The resulting credentials are aggregated across providers and displayed in autofill fallback UIs, such as inline suggestions or drop-down suggestions. The Jetpack androidx.credentials library is the preferred endpoint for developers to use and will soon be available to further enhance this feature in Android 15 and higher.
Tek dokunuşla kaydolma ve oturum açma özelliğini biyometri istemleriyle entegre etme
Kimlik Bilgisi Yöneticisi, biyometrik istemleri kimlik bilgisi oluşturmaya entegre eder ve oturum açma işlemlerini gerçekleştirdiğinden sağlayıcıların yönetim ihtiyacını biyometrik istemleri kullanabilir. Sonuç olarak, kimlik bilgisi sağlayıcıların yalnızca kimlik bilgisi oluşturma ve alma akışlarının sonuçlarına odaklanmaları ve bu sonuçları biyometrik akış sonucuyla tamamlamaları gerekir. Bu basitleştirilmiş süreç, daha verimli ve basit bir kimlik bilgisi oluşturma ve alma süreci oluşturur.
Uçtan uca şifreleme için anahtar yönetimi
Şifreleme ortak anahtarlarının depolanması için işletim sistemi düzeyinde bir API sağlayarak Android uygulamalarınızda uçtan uca şifrelemeyi (E2EE) kolaylaştıran E2eeContactKeysManager
'i Android 15'te kullanıma sunuyoruz.
E2eeContactKeysManager
, kullanıcılara kişilerinin ortak anahtarlarını yönetmeleri ve doğrulamaları için merkezi bir yol sunmak amacıyla, platform kişileri uygulamasıyla entegre olacak şekilde tasarlanmıştır.
İçerik URI'lerinde izin kontrolleri
Android 15, içerik URI'lerinde izin kontrolleri gerçekleştiren yeni bir dizi API'yi kullanıma sunar:
Context.checkContentUriPermissionFull
: İçerik URI'lerinde tam izin kontrolü gerçekleştirir.Activity
manifest özelliğirequireContentUriPermissionFromCaller
: Bu, etkinlik başlangıcında sağlanan içerik URI'lerinde belirtilen izinleri uygular.Activity
arayanlar içinComponentCaller
sınıfı: Bu, etkinliği başlatan uygulamayı gösterir.
Erişilebilirlik
Android 15, kullanıcılar için erişilebilirliği artıran özellikler ekler.
Daha iyi Braille
Android 15'te, TalkBack'in hem USB hem de güvenli Bluetooth üzerinden HID standardını kullanan Braille ekranları desteklemesini mümkün hale getirdik.
Fareler ve klavyeler tarafından kullanılana çok benzeyen bu standart, Android'in zaman içinde daha geniş bir Braille ekran aralığını desteklemesine yardımcı olacaktır.
Uluslararası hale getirme
Android 15, cihaz farklı dillerde kullanıldığında kullanıcı deneyimini tamamlayan özellikler ve özellikler ekler.
CJK değişken yazı tipi
Android 15'ten başlayarak Çince, Japonca ve Korece (CJK) dilleri için yazı tipi dosyası, NotoSansCJK artık değişken bir yazı tipi oldu. Değişken yazı tipleri, CJK dillerinde reklam öğesi tipografisi için yeni olanaklar yaratır. Tasarımcılar, daha geniş bir stil yelpazesini keşfedip önceden zor ya da imkansız olan görsel olarak çarpıcı düzenler oluşturabilir.
Karakterler arası hizalama
Android 15'ten itibaren metin, harf aralığı kullanılarak ikiye yaslanabilir ve
JUSTIFICATION_MODE_INTER_CHARACTER
kullanılıyor. Kelimeler arası iki yana yaslama (önceki değeri)
İlk olarak Android 8.0'da (API düzeyi 26) kullanıma sunulduktan sonra
iki yana yaslama,
Segmentasyon için bir boşluk karakteri (ör. Çince, Japonca vb.).
Otomatik satır sonu yapılandırması
Android, İngilizcede Japonca ve Korece için sıralı tabanlı satır sonlarını desteklemeye başladı.
Android 13 (API düzeyi 33). Ancak sıralı tabanlı satır sonları,
metinler okunaklı olduğundan, uzun metin satırlarında iyi performans göstermez.
Android 15'te uygulamalar, LINE_BREAK_WORD_STYLE_AUTO
seçeneğini kullanarak ifade tabanlı satır aralarını yalnızca kısa metin satırları için uygulayabilir. Bu seçenek, metin için en iyi kelime stili seçeneğini belirler.
Kısa metin satırları için, aynı işlevi gören kelime öbeğine dayalı satır sonları kullanılır.
aşağıda gösterildiği gibi LINE_BREAK_WORD_STYLE_PHRASE
olarak
şu resim:
Daha uzun metin satırları için LINE_BREAK_WORD_STYLE_AUTO
, hayır kullanır
aynı şekilde çalışan satır sonu kelime stili
LINE_BREAK_WORD_STYLE_NONE
,
şu resim:
Ek Japonca Hentaigana yazı tipi
Android 15'te eski Japonca Hiragana (Hentaigana olarak bilinir) yazı tipi dosyası varsayılan olarak paketlenmiştir. Hentaigana karakterlerinin benzersiz şekilleri sanat eseri veya tasarımda ayırt edici bir dokunuş katar ve aynı zamanda doğru hazineleri eski Japon belgelerinin iletimi ve anlaşılması.
VideoLAN koni Telif Hakkı (c) 1996-2010 VideoLAN. Bu logo veya değiştirilmiş sürümü, herhangi bir kişi tarafından VideoLAN projesine veya VideoLAN ekibi tarafından geliştirilen herhangi bir ürüne atıfta bulunmak için kullanılabilir ya da değiştirilebilir ancak projenin desteklediği anlamına gelmez.
Vulkan ve Vulkan logosu, Khronos Group Inc.in tescilli ticari markalarıdır.
OpenGL tescilli bir ticari markadır ve OpenGL ES logosu, Hewlett Packard Enterprise'ın ticari markasıdır ve Khronos'un izniyle kullanılmıştır.