Özelliklere ve API'lere Genel Bakış

Android 15, geliştiriciler için harika yeni ö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 özetlenmektedir.

Yeni, değiştirilmiş ve kaldırılan API'lerin ayrıntılı listesi için API fark raporunu okuyun. Yeni API'lerle ilgili ayrıntılar için Android API referansını ziyaret edin. Yeni API'ler, görünürlük sağlamak için vurgulanmıştır. Ayrıca, platform değişikliklerinin uygulamalarınızı etkileyebileceği alanlar hakkında bilgi edinmek için Android 15'te Android 15'i hedefleyen uygulamaları etkileyen davranış değişikliklerini ve targetSdkVersion sürümünden bağımsız olarak tüm uygulamaları etkileyen davranış değişikliklerini mutlaka inceleyin.

Kamera ve medya

Android 15, hem kamera ve medya deneyimini iyileştiren hem de içerik üreticileri Android'de vizyonlarını hayata geçirme konusunda destekleyen araçlara ve donanıma erişmenizi sağlayan çeşitli özellikler içerir.

Android medya ve kameraya yönelik en son özellikler ve geliştirici çözümleri hakkında daha fazla bilgi edinmek için Google I/O'daki Modern Android medya ve kamera deneyimleri oluşturma konuşmasına bakın.

Zayıf Işıktan 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 de TORCH modlarında flaş yoğunluğunu hassas bir şekilde kontrol etmenizi sağlar.

HDR boşluk 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.

Sol ekrandaki SDR kullanıcı arayüzü öğelerinin parlaklığı, sağ ekrandaki parlaklığa göre daha eşit görünüyor. Bu da HDR ve SDR içeriği bir arada kullanıldığında olası boşluk odası sorunlarını simüle ediyor. HDR boşluk payını ayarlayarak SDR ve HDR içerik arasında daha iyi bir denge elde edebilirsiniz.

Ses yüksekliği kontrolü

Android 15, ses yüksekliğindeki tutarsızlıklardan kaçınmanıza ve kullanıcıların içerikler arasında geçiş yaparken ses seviyesini sürekli ayarlamak zorunda kalmamalarına yardımcı olmak için CTA-2075 ses yüksekliği standardı için destek sunar. Sistem, ses yüksekliği ve dinamik aralık sıkıştırma seviyelerini akıllı şekilde ayarlamak için çıkış cihazlarının (kulaklık ve hoparlör) bilinen özelliklerinden ve AAC ses içeriğinde bulunan ses yüksekliği meta verilerinden faydalanır.

Bu özelliği etkinleştirmek için ses yüksekliği meta verilerinin AAC içeriğinizde bulunduğundan emin olmanız ve uygulamanızda platform özelliğini etkinleştirmeniz gerekir. Bunun için, ilişkilendirilen AudioTrack öğesindeki ses oturum kimliğiyle create fabrika yöntemini çağırarak bir LoudnessCodecController nesnesini başlatın. Bu işlem otomatik olarak ses güncellemelerini uygulamaya başlar. Ses düzeyi parametrelerini MediaCodec üzerinde uygulanmadan önce 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
}

Ayrıca AndroidX media3 ExoPlayer, sorunsuz bir uygulama entegrasyonu için LoudnessCodecController API'lerini kullanacak şekilde güncellenecektir.

Sanal MIDI 2.0 cihazları

Android 13, Evrensel MIDI Paketlerini (UMP) kullanarak iletişim kuran USB kullanan MIDI 2.0 cihazlarına bağlanma desteğini ekledi. Android 15, UMP desteğini sanal MIDI uygulamalarını da içerecek şekilde genişleterek beste uygulamalarının sentezleyici uygulamalarını bir USB MIDI 2.0 cihazında olduğu gibi sanal bir MIDI 2.0 cihazı olarak kontrol etmesini sağlar.

Daha verimli AV1 yazılımı kod çözme işlemi

dav1d logosu

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 iyileştirme çalışmalarımızın büyük bir kısmı Android Studio, Jetpack Compose ve Android Jetpack kitaplıkları gibi araçlara odaklansa da her zaman platformda, vizyonunuzu daha kolay gerçekleştirmenize yardımcı olacak yollar ararız.

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:

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 API'lerinde önemli iyileştirmeler içerir. Uygulamalar; şifre korumalı dosya oluşturma, ek açıklama oluşturma, form düzenleme, arama ve metinle seçim gibi gelişmiş özellikler içerebilir. Doğrusal PDF optimizasyonları, yerel PDF'lerin daha hızlı görüntülenmesini sağlamak ve kaynak kullanımını azaltmak için desteklenir.

PDF oluşturmayla ilgili son güncellemeler, yerleştirilmiş PDF dosyasında arama yapma gibi özellikleri içerir.

PdfRenderer, platform sürümünden bağımsız olarak Google Play sistem güncellemeleri kullanılarak güncellenebilen bir modüle taşındı. Android 11'e (API düzeyi 30) geri dönmek için bu değişiklikleri, API yüzeyinin PdfRendererPreV adı verilen uyumlu bir Android 15 öncesi sürümünü oluşturarak destekliyoruz.

PdfRenderer API yüzeyinde yaptığımız iyileştirmelerle ilgili geri bildirimleriniz bizim için önemlidir. Yakında çıkacak olan Android Jetpack kitaplığıyla bu API'leri uygulamanıza da dahil etmeyi daha da kolaylaştırmayı planlıyoruz.

Otomatik dil geçişiyle ilgili ayrıntılandırmalar

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.

Geliştirilmiş OpenType Variable Font API'sı

Android 15, OpenType değişken yazı tipinin kullanılabilirliğini iyileştirir. Artık buildVariableFamily API ile ağırlık eksenleri belirtmeden değişken yazı tipinden FontFamily örneği oluşturabilirsiniz. Metin oluşturucu, görüntülenen metinle eşleşmek için wght ekseninin değerini geçersiz kılar.

Bu işlem, yeni API'nin kullanılmasıyla Typeface oluşturmak için gereken kodu önemli ölçüde basitleştirir:

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();

Hem eski hem de yeni API'lerle oluşturulan bir Typeface örneğini aşağıda bulabilirsiniz:

Yeni ve eski API'ler kullanıldığında Yazı Tipi oluşturmanın farkına ilişkin bir örnek

Bu örnekte, eski API ile oluşturulan Typeface 350, 450, 550 ve 650 Font örnekleri için doğru yazı tipi ağırlıkları oluşturamadığından oluşturucu en yakın ağırlığa geri döner. Dolayısıyla bu örnekte, 350 yerine 300, 450 yerine 400 oluşturulur ve bu şekilde devam eder. Buna karşılık, yeni API'lerle oluşturulan Typeface belirli bir ağırlık için dinamik olarak bir Font örneği oluşturur. Böylece 350, 450, 550 ve 650 için de doğru ağırlıklar oluşturulur.

Ayrıntılı satır sonu kontrolleri

Android 15'ten itibaren TextView ve temel satır kesici, okunabilirliği artırmak için metnin belirli bir bölümünü aynı satırda koruyabilir. Dize kaynaklarında <nobreak> etiketini veya createNoBreakSpan etiketini kullanarak bu satır sonu özelleştirmesinden yararlanabilirsiniz. Benzer şekilde, <nohyphen> etiketini veya createNoHyphenationSpan etiketini kullanarak kelimeleri tirelemeden koruyabilirsiniz.

Örneğin, aşağıdaki dize kaynağı satır sonu içermez ve istenmeyen bir yerde kırılarak "Pixel 8 Pro" metniyle 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 saran ve satır sonlarını engelleyen <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çimlerindeki fark aşağıdaki resimlerde gösterilmektedir:

"Pixel 8 Pro" ifadesinin <nobreak> etiketi kullanılarak sarmalanmadığı bir metin satırının düzeni.
"Pixel 8 Pro." ifadesinin <nobreak> etiketi kullanılarak sarmalandığı aynı metin satırının düzeni.

Uygulama arşivleme

Android ve Google Play geçen yıl uygulama arşivleme desteğini duyurdu. Google Play'de Android App Bundle kullanılarak yayınlanmış, sık kullanılmayan uygulamaları cihazdan kısmen kaldırarak kullanıcıların yer açmalarına olanak tanıyoruz. Android 15 artık uygulama arşivleme ve arşivden çıkarma için işletim sistemi düzeyinde destek sunarak tüm uygulama mağazalarının uygulamayı kolayca kullanabilmesini sağlar.

REQUEST_DELETE_PACKAGES iznine sahip uygulamalar, yüklü bir uygulama paketinin arşivlenmesini istemek için PackageInstaller requestArchive yöntemini çağırabilir. Bu işlem, APK'yı ve önbelleğe alınan tüm dosyaları kaldırır ancak kullanıcı verilerini muhafaza eder. Arşivlenen uygulamalar, LauncherApps API'leri aracılığıyla görüntülenebilir uygulamalar olarak döndürülür. Kullanıcılar ise bu uygulamaların arşivlendiğini belirten bir kullanıcı arayüzü işlemi görür. Kullanıcı, arşivlenmiş bir uygulamaya dokunursa sorumlu yükleyici, uygulamanın arşivden kaldırılması için bir istek alır ve geri yükleme işlemi, ACTION_PACKAGE_ADDED yayını tarafından izlenebilir.

Grafik

Android 15, ANGLE ve Canvas grafik sistemine yapılan eklemeleri de içeren en son grafik iyileştirmelerini sunar.

Android'in GPU erişimini modernleştirme

Vulkan logosu

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ı

Android GPU API&#39;lerinde yapılacak değişikliklerin 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.

Canvas ile ilgili 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ı olma amacını sürdürüyor. Android 15, uygulamanızdaki görevleri daha verimli hale getirmenize, uygulama performansını optimize etmenize ve uygulamalarınız hakkında bilgi toplamanıza yardımcı olan yeni API'leri kullanıma sunar.

Pili verimli kullanan en iyi uygulamalar, ağ ve güç kullanımıyla ilgili hata ayıklama, ayrıca Android 15 ve Android'in son sürümlerinde arka plan çalışmasının pil verimliliğini nasıl iyileştirdiğimizle ilgili ayrıntılar için Google I/O'daki Android'de arka plan çalışmasının pil verimliliğini artırma konulu konuşmaya bakın.

ApplicationStartInfo API'sı

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ızın içinden profil oluşturma bilgilerini toplamanızı sağlayan yepyeni ProfilingManager sınıfını içerir. Bunu, profil oluşturma isteklerinin oluşturulmasını kolaylaştıracak bir Android Jetpack API ile sarmayı planlıyoruz. Ancak temel API; yığın dökümlerinin, yığın profillerinin, yığın örneklemenin ve daha fazlasının toplanmasına olanak tanıyacak. Uygulamanızın dosyalar dizinine yayınlanan çıkış dosyasını tanımlamak için sağlanan bir etiketle uygulamanıza bir geri çağırma sağlar. API, performans üzerindeki etkiyi en aza indirmek için hız sınırlaması uygular.

SQLite veritabanı iyileştirmeleri

Android 15, temel SQLite motorunun, uygulamalarda bildirilebilecek belirli performans sorunlarını hedefleyen gelişmiş özelliklerini sunan yeni SQLite API'lerini kullanıma sunuyor.

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ı ile ilgili en iyi uygulamalara başvurmalıdır.

  • Salt okunur ertelenmiş işlemler: Salt okunur (yazma ifadeleri eklemeyin) işlemleri yayınlarken salt okunur DEFERRED işlemleri yayınlamak için beginTransactionReadOnly() ve beginTransactionWithListenerReadOnly(SQLiteTransactionListener) özelliklerini kullanın. Bu tür işlemler birbirleriyle eşzamanlı olarak çalışabilir ve veritabanı WAL modundaysa IMMEDIATE veya EXCLUSIVE işlemleriyle eş zamanlı olarak çalıştırılabilir.
  • Satır sayıları ve kimlikleri: Değiştirilen satır sayısını veya ek sorgu yayınlamadan son eklenen satır kimliğini almak için yeni API'ler eklenmiştir. getLastChangedRowCount() geçerli işlemdeki en son SQL ifadesi tarafından eklenen, güncellenen veya silinen satır sayısını, getTotalChangedRowCount() ise geçerli bağlantıdaki sayıyı döndürür. getLastInsertRowId(), mevcut bağlantıda eklenecek son satırın rowid değerini döndürür.
  • Ham ifadeler: Kolay sarmalayıcıları ve karşılaşabilecekleri ek işlem ek yükünü atlayarak bir ham SQlite ifadesi yayınlayın.

Android Dynamic Performance Framework 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'te, uygulamaların kaydedildiğini algılamak için uygulama desteği sağlanır. Uygulama, bir ekran kaydı içinde görünür ve görünmez olmak arasında geçiş yaptığında bir geri çağırma çağrılır. Kayıt sürecinin UID'sine ait etkinlikler kaydediliyorsa uygulama görünür olarak kabul edilir. Bu şekilde, uygulamanız hassas bir işlem yapıyorsa kullanıcıyı bu işlemin kaydedildiği konusunda bilgilendirebilirsiniz.

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ı, engelleme veya hariç tutma kuralları dahil olmak üzere her birinin karşılanması gereken Intent eşleştirme kuralı grubunu oluşturan bir dizi UriRelativeFilter nesneden oluşan UriRelativeFilterGroup aracılığıyla daha hassas Intent çözünürlüğünü destekler.

Bu kurallar, AndroidManifest XML dosyasında yeni <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 yeni android:query ve android:fragment özelliklerini kullanan <data> etiketleri içerebilir.

AndroidManifest söz diziminin bir örneğini burada bulabilirsiniz:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.BROWSABLE" />
  <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, cihazdaki hassas uygulamaların gösterilmesi veya gizlenmesi için kilidi açılabilir ve kilitlenebilir.

Özel alan, kullanıcıların cihazlarında ek bir kimlik doğrulama katmanıyla hassas uygulamaları meraklı gözlerden uzak tutabilecekleri ayrı bir alan oluşturmalarına olanak tanır. Özel alan, ayrı bir kullanıcı profili kullanır. Kullanıcı özel alanı kilitlediğinde profil duraklatılır ve özel alandaki uygulamalar artık etkin olmaz. Kullanıcı, özel alan için cihaz kilidi veya ayrı bir kilit faktörü kullanmayı seçebilir.

Özel alandaki uygulamalar, başlatıcıda ayrı bir kapsayıcıda görünür ve özel alan kilitli olduğunda son kullanılanlar görünümünden, bildirimlerden, ayarlardan ve diğer uygulamalardan gizlenir. Kullanıcı tarafından oluşturulan ve indirilen içerik (medya veya dosyalar gibi) ve hesaplar, özel alan ile ana alan arasında ayrılır. Sistem paylaşım sayfası ve fotoğraf seçici, özel alanın kilidi açıldığında uygulamaların alanlardaki içeriklere erişmesini sağlamak için kullanılabilir.

Özellikle uygulamanız aşağıdaki kategorilerden birine giriyorsa uygulamanızın beklendiği gibi çalıştığından emin olmak için özel alan ile test etmenizi öneririz:

Seçili Fotoğraflara Erişim için en son kullanıcı seçimini sorgula

Medya izinleri için kısmi erişim verildiğinde uygulamalar artık yalnızca en son seçilen fotoğrafları ve videoları vurgulayabilir. Bu özellik, fotoğraf ve videolara sıklıkla erişim isteğinde bulunan uygulamalar için kullanıcı deneyimini iyileştirebilir. Uygulamanızda bu özelliği kullanmak için ContentResolver üzerinden MediaStore sorgusu yapılırken 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, uygulamalarla toplanan sağlık ve fitness verilerini yönetip paylaşmak için güvenli ve merkezi bir platform olan Android'den Health Connect ile ilgili en yeni uzantıları entegre eder. Bu güncellemeyle birlikte fitness, beslenme, cilt sıcaklığı, antrenman planları ve daha birçok konuda yeni veri türleri için destek eklendi.

Deri sıcaklığı takibi, kullanıcıların giyilebilir veya başka bir takip cihazından daha doğru sıcaklık verilerini kaydedip paylaşmasına olanak tanır.

Eğitim planları, kullanıcının fitness hedeflerine ulaşmasına yardımcı olmak için yapılandırılmış antrenman planlarıdır. Eğitim planları desteği çeşitli tamamlama ve performans hedeflerini içerir:

Google I/O'daki Android Health ile uyarlanabilir deneyimler oluşturma konuşmasını inceleyerek Android'deki Health Connect ile ilgili en son güncellemeler hakkında daha fazla bilgi edinin.

Kısmi ekran paylaşımı

Android 15 kısmi ekran paylaşımını destekler. Bu sayede kullanıcılar, cihazın ekranının tamamı yerine yalnızca bir uygulama penceresini paylaşabilir veya kaydedebilir. İlk olarak Android 14 QPR2'de etkinleştirilen bu özellik, uygulamanızın kısmi ekran paylaşımı deneyimini özelleştirmesine olanak tanıyan MediaProjection geri çağırma içerir. Android 14 (API düzeyi 34) veya sonraki sürümleri hedefleyen uygulamalarda her MediaProjection yakalama oturumu için kullanıcı izni gerektiğini 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 uygun şekilde yapılandırma konusunda daha fazla kontrol ve esneklik sağlar.

Uygulamanızın kullanıcı deneyimini iyileştirmek amacıyla Android 15'teki en son iyileştirmelerin nasıl kullanılacağı hakkında daha fazla bilgi edinmek için Google I/O'daki Android uygulamanızın kullanıcı deneyimini iyileştirin konuşmasına bakın.

Generated Previews API 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, genellikle ana ekrana yerleştirildiklerinde gerçek widget'ın görünümünden önemli ölçüde farklıdır. Ayrıca, Jetpack Glance ile statik kaynaklar oluşturulamaz. Bu nedenle, bir Glance geliştiricisinin widget önizlemesi için widget'ının ekran görüntüsünü alması veya bir XML düzeni oluşturması gerekiyordu.

Android 15'te, oluşturulan önizlemeler için destek eklenir. Yani uygulama widget'ı sağlayıcıları, statik bir kaynak yerine seçici önizlemesi olarak kullanmak üzere RemoteViews oluşturabilir.

Uygulamalar, widget seçiciye uzaktan görüntüleme özelliği sağlayabilir. Böylece kullanıcılar, seçicideki içeriği kullanıcının göreceği içeriği daha iyi temsil edecek şekilde güncelleyebilir.

Push API'sı

Uygulamalar, oluşturulan önizlemeleri bir push API'sı aracılığıyla sağlayabilir. Uygulamalar yaşam döngülerinin herhangi bir noktasında önizleme sağlayabilir ve önizleme sağlaması için ana makineden açık bir istek almaz. Önizlemeler AppWidgetService ürününde kalıcıdır ve ana makineler isteğe bağlı olarak bunları isteyebilir. Aşağıdaki örnek, bir XML widget düzeni kaynağı yükler 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ış:

  1. Widget sağlayıcı herhangi bir zamanda setWidgetPreview numaralı telefonu çağırır. Sağlanan önizlemeler, diğer sağlayıcı bilgileriyle birlikte AppWidgetService üzerinde kalıcı olarak saklanır.
  2. setWidgetPreview, AppWidgetHost.onProvidersChanged geri çağırması yoluyla ana makineleri güncellenmiş önizleme hakkında bilgilendirir. Buna karşılık, widget ana makinesi tüm sağlayıcı bilgilerini yeniden yükler.
  3. Bir widget önizlemesi görüntülerken toplantı sahibi AppWidgetProviderInfo.generatedPreviewCategories seçeneğini kontrol eder ve seçilen kategori mevcutsa bu sağlayıcının kaydedilmiş önizlemesini döndürmek için AppWidgetManager.getWidgetPreview aracını çağırır.

setWidgetPreview ne zaman aranacak?

Önizleme sağlamak için geri çağırma olmadığından uygulamalar çalışırken herhangi bir noktada önizleme göndermeyi seçebilir. Önizlemenin güncellenme sıklığı, 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 kişiselleştirilmiş veya son bilgiler gibi gerçek veriler gösteren sağlayıcılar. Bu sağlayıcılar, kullanıcı oturum açtığında veya uygulamasında ilk yapılandırmayı tamamladıktan sonra önizlemeyi ayarlayabilir. Bunun ardından, önizlemeleri istedikleri sıklıkta güncellemek için periyodik bir görev oluşturabilirler. Bu tür widget'lara örnek olarak fotoğraf, takvim, hava durumu veya haber widget'ı verilebilir.
  • Önizlemelerde veya hızlı işlem widget'larında statik bilgiler gösteren ve veri göstermeyen sağlayıcılardır. Bu sağlayıcılar önizlemeleri bir kez, uygulama ilk kez başlatıldığında ayarlayabilirler. Bu tür widget'lara örnek olarak, harekete geçirme widget'ı veya Chrome kısayolları widget'ı verilebilir.

Bazı sağlayıcılar, hub modu seçicide statik önizlemeler, ana ekran seçicide ise gerçek bilgiler gösterebilir. Bu sağlayıcılar, önizlemeleri ayarlamak için bu kullanım alanlarının her ikisiyle ilgili yönergeleri izlemelidir.

Pencere İçinde Pencere

Android 15, Pencere İçinde Pencere (PiP) özelliğinde yapılan yeni değişikliklerle birlikte PiP moduna girerken daha akıcı bir geçiş sağlıyor. Bu, PiP'ye giden ana kullanıcı arayüzünün üzerine kullanıcı arayüzü öğeleri yerleştirilen uygulamalar için faydalı olacaktır.

Geliştiriciler, yer paylaşımlı kullanıcı arayüzü öğelerinin görünürlüğünü değiştiren mantığı tanımlamak için onPictureInPictureModeChanged geri çağırmasını kullanır. Bu geri çağırma, PiP giriş veya çıkış animasyonu tamamlandığında tetiklenir. Android 15'ten itibaren PictureInPictureUiState sınıfı yeni bir duruma sahiptir.

Bu yeni kullanıcı arayüzü durumuyla Android 15'i hedefleyen uygulamalar, PiP animasyonu başlar başlamaz isTransitioningToPip() ile çağrılan Activity#onPictureInPictureUiStateChanged geri çağırma işlemini gözlemler. PiP modundayken uygulama ile alakalı olmayan birçok kullanıcı arayüzü öğesi vardır. Örneğin; öneriler, yakında sunulacak video, puanlar ve başlıklar gibi bilgileri içeren görünümler veya düzen. 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 bu öğeleri göstermek için aşağıdaki örneklerde gösterildiği gibi onPictureInPictureModeChanged geri çağırmasını 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 bu hızlı görünürlük ayarı (PIP penceresi için) sayesinde PiP'nin animasyona daha sorunsuz ve titremesiz bir şekilde girer.

İyileştirilmiş Rahatsız Etmeyin kuralları

AutomaticZenRule, uygulamaların Dikkat Yönetimi (Rahatsız Etmeyin) kurallarını özelleştirmesine ve bu kuralları ne zaman etkinleştireceğine veya devre dışı bırakacağına karar vermesine olanak tanır. Android 15, kullanıcı deneyimini iyileştirmek amacıyla bu kuralları büyük ölçüde geliştirir. Aşağıdaki geliştirmeler dahildir:

  • AutomaticZenRule öğesine türler ekleniyor. Böylece sistemin bazı kurallara özel işlem uygulayabilmesi sağlandı.
  • AutomaticZenRule öğesine bir simge ekleyerek modların daha tanınabilir hale gelmesini sağlayın.
  • AutomaticZenRule öğesine kuralın kullanıcı için etkin hale gelmesi gereken koşulları açıklayan bir triggerDescription dizesi ekleme.
  • ZenDeviceEffects, AutomaticZenRule sürümüne eklendi. Böylece kuralların gri tonlamalı görüntüleme, gece modu veya duvar kağıdının soluk renkte görünmesini tetiklemesi sağlandı.

Bildirim kanalları için VibrationEffect'i ayarlama

Android 15, NotificationChannel.setVibrationEffect aracılığıyla gelen bildirimler için kanala göre zengin titreşimlerin ayarlanmasını destekler. Böylece kullanıcılarınız, cihazlarına bakmadan farklı bildirim türlerini birbirinden ayırt edebilir.

Büyük ekranlar ve form faktörleri

Android 15, uygulamalarınıza büyük ekran, çevrilebilir ve katlanabilir cihazlar da dahil olmak üzere Android'in form faktörlerinden en iyi şekilde yararlanma desteği sunar.

İyileştirilmiş büyük ekranda çoklu görev

Android 15, kullanıcılara büyük ekranlı cihazlarda çoklu görev yapabilmeleri için daha iyi yollar sunar. Örneğin kullanıcılar, hızlı erişim için en sevdikleri bölünmüş ekran uygulama kombinasyonlarını kaydedebilir ve uygulamalar arasında hızlıca geçiş yapmak için görev çubuğunu sabitleyebilir. Yani, uygulamanızın uyarlanabilir olması her zamankinden daha önemli.

Google I/O'da Uyarlanabilir Android uygulamaları oluşturma ve Material 3 uyarlanabilir kitaplığıyla kullanıcı arayüzü oluşturma konulu oturumları vardır. Ayrıca dokümanlarımızda da Büyük ekranlar için tasarlama konusunda size yardımcı olacak daha fazla bilgi bulabilirsiniz.

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, uygulamanızın iletişim ve kablosuz teknolojilerindeki en son gelişmelere erişmesini sağlamak için platformu günceller.

Uydu desteği

Android 15, uydu bağlantısı için platform desteğini genişletmeye devam ediyor ve uydu bağlantı ortamı genelinde tutarlı bir kullanıcı deneyimi sağlamak için bazı kullanıcı arayüzü öğeleri içeriyor.

Uygulamalar bir cihazın uyduya bağlı olduğu zamanı algılamak için ServiceState.isUsingNonTerrestrialNetwork() özelliğini kullanabilir. Bu özellik, kullanıcılara tam ağ hizmetlerinin neden kullanılamayabileceği konusunda daha fazla bilgi verir. Ayrıca Android 15, mesaj gönderip almak için uydu bağlantısını kullanan, önceden yüklenmiş RCS uygulamalarının yanı sıra SMS ve MMS uygulamaları için de destek sunar.

Cihaz bir uyduya bağlandığında bir bildirim görüntülenir.

Daha akıcı NFC deneyimleri

Android 15, Android'in güçlü NFC uygulama ekosistemini desteklemeye devam ederken dokundur ve öde deneyimini daha sorunsuz ve güvenilir hale getirmek için çalışmaktadır. Desteklenen cihazlarda uygulamalar NfcAdapter'ten gözlem moduna girmesini isteyebilir. Bu modda cihaz, NFC okuyucularını dinleyip yanıt vermez ve uygulamanın NFC hizmeti PollingFrame nesnelerini işlemesi için gönderir. PollingFrame nesneleri, NFC okuyucuyla ilk iletişimden önce kimlik doğrulaması yapmak için kullanılabilir. Bu sayede, çoğu durumda tek dokunuşla işlem yapılabilir.

Ayrıca, uygulamalar artık desteklenen cihazlarda parmak izi kaydedebilir ve böylece yoklama döngüsü etkinliği onlara bildirilebilir. Böylece NFC'ye duyarlı birden fazla uygulamanın sorunsuz çalışması sağlanır.

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, uygulama verilerinizi korumanıza yardımcı olur, kullanıcılara verileri üzerinde daha fazla şeffaflık ve kontrol olanağı sunar. Kullanıcı korumalarını iyileştirmek ve uygulamanızı yeni tehditlere karşı korumak için neler yaptığımızı öğrenmek amacıyla Android'de kullanıcı güvenliğini koruma konulu Google I/O konuşmasına göz atın.

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:

Erişilebilirlik

Android 15'e kullanıcılar için erişilebilirliği iyileştiren özellikler eklenir.

Daha İyi 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, cihazlar farklı dillerde kullanıldığında kullanıcı deneyimini tamamlayan özellikler ve işlevler 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.

Çince, Japonca ve Korece (CJK) dilleri için değişken yazı tipinin farklı yazı tipi genişlikleriyle nasıl göründüğü.

Karakterler arası iki yana yaslama

Android 15'ten itibaren metinler, JUSTIFICATION_MODE_INTER_CHARACTER aracılığıyla harfler arasında boşluk bırakılarak hizalanabilir. Kelimeler arası gerekçelendirme ilk olarak Android 8.0'da (API düzeyi 26) kullanıma sunulmuştur ve karakterler arası iki yana yaslama, segmentasyon için boşluk karakterini kullanan diller için de (ör. Çince, Japonca ve diğer diller) benzer özellikler sağlar.

JUSTIFICATION_MODE_NONE kullanılan Japonca metin düzeni.
JUSTIFICATION_MODE_NONE kullanılan İngilizce metin düzeni.


JUSTIFICATION_MODE_INTER_WORD kullanılan Japonca metin düzeni.
JUSTIFICATION_MODE_INTER_WORD kullanılan İngilizce metin düzeni.


Yeni JUSTIFICATION_MODE_INTER_CHARACTER kullanılan Japonca metin düzeni.
Yeni JUSTIFICATION_MODE_INTER_CHARACTER kullanılan İngilizce metin düzeni.

Otomatik satır sonu yapılandırması

Android, Android 13'te (API düzeyi 33) Japonca ve Korece için ifade tabanlı satır sonlarını desteklemeye başladı. Ancak, kelime öbeğine dayalı satır sonları kısa metin satırlarının okunabilirliğini artırsa da uzun metin satırlarında iyi sonuç vermez. Android 15'te uygulamalar artık LINE_BREAK_WORD_STYLE_AUTO seçeneğini kullanarak yalnızca kısa metin satırlarında ifadeye dayalı satır sonları uygulayabilir. Bu seçenek metin için en uygun kelime stili seçeneğini belirler.

Kısa metin satırları için aşağıdaki resimde gösterildiği gibi LINE_BREAK_WORD_STYLE_PHRASE ile aynı şekilde çalışan kelime öbeği tabanlı satır sonları kullanılır:

LINE_BREAK_WORD_STYLE_AUTO, kısa metin satırlarında metnin okunabilirliğini iyileştirmek için ifadeye dayalı satır sonları uygular. Bu, LINE_BREAK_WORD_STYLE_PHRASE uygulamakla aynıdır.

Daha uzun metin satırları için LINE_BREAK_WORD_STYLE_AUTO, aşağıdaki resimde gösterildiği gibi LINE_BREAK_WORD_STYLE_NONE ile aynı şekilde çalışan satır sonu olmayan bir kelime stili kullanır:

Uzun metin satırları için, LINE_BREAK_WORD_STYLE_AUTO metnin okunabilirliğini iyileştirmek için satır sonu kelime stili uygulamaz. Bu, LINE_BREAK_WORD_STYLE_NONE uygulamakla aynıdır.

Yeni Japonca Hentaigana Yazı Tipi

Android 15'te, eski Japon Hiragana'sı (Hentaigana olarak bilinir) için yeni bir yazı tipi dosyası varsayılan olarak paket hâline getirilir. Hentaigana karakterlerinin benzersiz şekilleri, sanat eseri veya tasarıma ayırt edici bir görünüm katarken, antik Japon belgelerinin doğru iletilmeye ve anlaşılmasına da yardımcı olmaktadır.

Japon Hentaigana yazı tipi için karakter ve metin stili.

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.