Özelliklere ve API'lere Genel Bakış

Android 15, geliştiriciler için muhteşem yeni özellikler ve API'ler sunar. Aşağıdaki bölümlerde, ilgili API'leri kullanmaya başlamanıza yardımcı olmak için bu özellikler özetlenmiştir.

Yeni, değiştirilmiş ve kaldırılmış API'lerin ayrıntılı bir 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 için vurgulanmaktadır. Ayrıca, platform değişikliklerinin uygulamalarınızı etkileyebileceği alanlar hakkında bilgi edinmek için Android 15'i hedefleyen uygulamaları etkileyen Android 15 davranış değişikliklerini ve targetSdkVersion'dan bağımsız olarak tüm uygulamaları etkileyen davranış değişikliklerini inceleyin.

Kamera ve medya

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

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

Düşük Işık Artışı

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 kafa odası 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 düzeyi kontrolü

Android 15, CTA-2075 ses yüksekliği standardı ses yüksekliğindeki tutarsızlıklardan kaçının ve kullanıcıların sürekli olarak içerikler arasında geçiş yaparken ses düzeyini ayarlayabilirsiniz. Sistem, kullandığı bilinen çıkış cihazlarının (kulaklık ve hoparlör) özelliklerini AAC ses içeriğinde bulunan ses yüksekliği meta verileri, ses düzeyini ve ses düzeyini ses yüksekliği ve dinamik aralık sıkıştırma düzeyleri.

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ğırarak ilişkili AudioTrack oturum kimliği; bu otomatik olarak ses güncellemelerini uygulamaya başlar. Bir Değiştirmek veya filtrelemek için OnLoudnessCodecUpdateListener ses yüksekliği parametreleri, MediaCodec.

// 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 LoudnessCodecController Sorunsuz uygulama entegrasyonu için API'ler

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 etkili AV1 yazılım kod çözme

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 verimliliği ve araçları

Üretkenliğinizi geliştirmeye yönelik çalışmalarımızın çoğu Android Studio, Jetpack Compose ve Android Jetpack kitaplıkları gibi araçlara odaklanıyor. Bununla birlikte, vizyonunuzu daha kolay şekilde gerçekleştirmenize yardımcı olacak yöntemleri her zaman platformda arı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:

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şinde yapılan 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 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:

Yazı tipi oluşturmanın yeni ve eski arayüzde nasıl farklılık gösterdiğine dair bir örnek
API'ler

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 bir TextView ve temel sürüm satır kesici, metinlerin belirli bir bölümünü aynı satırda daha iyi hale getirmek için okunabilirlik. Aşağıdaki satır öğelerini kullanarak bu satır sonu özelleştirmesinden yararlanabilirsiniz: dize kaynaklarındaki <nobreak> etiketini veya createNoBreakSpan Benzer şekilde, kısa çizgi eklemek için <nohyphen> etiketini veya createNoHyphenationSpan

Örneğin, aşağıdaki dize kaynağı bir satır sonu içermiyor ve "Pixel 8 Pro" metniyle oluşturulur. istenmeyen bir yere girme:

<resources>
    <string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>

Buna karşılık, bu dize kaynağı, <nobreak> "Pixel 8 Pro" kelime öbeği. ve satır sonlarını engeller:

<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ğıda gösterilmektedir görseller:

"Pixel 8 Pro" ifadesinin yer aldığı metin satırı düzeni. bir <nobreak> etiketi kullanılarak sarmalanmaz.
"Pixel 8 Pro" ifadesinin yer aldığı aynı metin satırının düzeni. bir <nobreak> etiketi kullanılarak sarmalanır.

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 eklemeler de dahil 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 artırmanıza yardımcı olma odağını sürdürür. Android 15, uygulamanızdaki görevlerin daha verimli şekilde yürütülmesine, uygulama performansını optimize etmesine ve uygulamalarınız hakkında bilgi toplanmasına yardımcı olan yeni API'ler sunar.

Pil tasarrufu sağlayan en iyi uygulamalar, ağ ve güç kullanımında hata ayıklama, 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'da Android'de arka plan çalışmasının pil verimliliğini artırma konulu konuşmayı inceleyin.

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.

Uygulama boyutuyla ilgili ayrıntılı bilgiler

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 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 farkları ifade eder. Uygulamalar, kayıt sürecinin UID'sine ait etkinlikler, kaydedilmektedir. Böylece, uygulamanız hassas bir işlem yapıyorsa kullanıcıya kaydedildiğini bildirebilir.

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, gelişmiş özellikler ve daha hassas Intent çözünürlüğü UriRelativeFilterGroup, Intent kümesini oluşturan UriRelativeFilter nesne URL sorgu parametreleri ve URL dahil olmak üzere her birinin karşılaması gereken eşleştirme kuralları ve engelleme ya da hariç tutma kurallarını içerir.

Bu kurallar, AndroidManifest XML dosyasında yeni <uri-relative-filter-group> etiketi ile başlar ve isteğe bağlı olarak android:allow etiketi. Bu etiketler, mevcut verileri kullanan <data> etiket içerebilir etiket özellikleriyle birlikte yeni android:query ve android:fragment özellikleri hakkında daha fazla bilgi edinin.

Aşağıda, AndroidManifest söz diziminin bir örneği verilmiştir:

<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ın kilidi açılabilir ve gizlenebilir ya da gizlenebilir daha hassas veriler sağlar.

Ö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:

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

Uygulamalar artık yalnızca en son seçilen fotoğrafları vurgulayabilir ve videolar, medya izinlerine kısmi erişim izni verildiğinde gerçekleşebilir. Bu özellik, sık sık istek gönderen uygulamalar için kullanıcı deneyimini iyileştirebilir. fotoğraf ve videolara erişme. Uygulamanızda bu özelliği kullanmak için MediaStore sorgusunda QUERY_ARG_LATEST_SELECTION_ONLY bağımsız değişkeni ContentResolver aracılığıyla.

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 üzerinde Ö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 arayüzü

Android 15, uygulama geliştiricilere ve kullanıcılara cihazlarını ihtiyaçlarına göre yapılandırmaları için daha fazla kontrol ve esneklik sunar.

Uygulamanızın kullanıcı deneyimini iyileştirmek üzere Android 15'teki 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 konulu makaleye göz atın.

Generated Previews API ile daha zengin widget önizlemeleri

Android 15'ten önce, widget seçici önizlemelerini sağlamanın tek yolu statik bir resim veya düzen kaynağı olmalıdır. Bu önizlemeler genellikle birbirinden farklı ana widget'ın üzerine yerleştirildiğinde gerçek widget'ın görünümünden çok daha farklı tıklayın. Ayrıca statik kaynaklar Jetpack Glance ile oluşturulamaz. Bu nedenle, için bir XML düzeni oluşturmaları veya bir web sitesi 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.

Uygulamalar, widget seçiciye Uzaktan Görünümler sağlayabilir ve böylece seçicideki içeriği, kullanıcının içeriğini daha iyi yansıtacak şekilde güncelleyin görür.

Push API'sı

Uygulamalar, oluşturulan önizlemeleri bir push API'si aracılığıyla sağlayabilir. Uygulamalar şunları sağlayabilir: önizlemeleri sunmaz ve açık bir istek almaz. ana makineden önizleme sağlar. Önizlemeler AppWidgetService ürününde kalıcıdır, ve düzenleyenler istek üzerine bunları talep edebilir. 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ış:

  1. Widget sağlayıcı herhangi bir zamanda setWidgetPreview numaralı telefonu arar. Sağlanan Önizlemeler, AppWidgetService uygulamasında diğer sağlayıcı bilgileriyle birlikte kalıcıdır.
  2. setWidgetPreview, ana makinelere güncellenmiş bir önizlemeyi şurada bildirir: AppWidgetHost.onProvidersChanged geri arama. Buna karşılık, widget ana makine tüm sağlayıcı bilgilerini yeniden yükler.
  3. Bir widget önizlemesi görüntülenirken ana makine, AppWidgetProviderInfo.generatedPreviewCategories ve seçiliyse kategorisi kullanılabilir, şunu arar: AppWidgetManager.getWidgetPreview bu sağlayıcı için kaydedilen önizlemeyi döndür.

setWidgetPreview ne zaman aranır?

Önizlemeler için geri arama olmadığından uygulamalar çalışırken herhangi bir noktada önizleme yapabilir. Ö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 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 haberler gösterilebilir. widget'ını tıklayın.
  • Ö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, uygulamanın ilk lansmanı. Bu widget'a örnek olarak Drive hızlı işlemler widget'ı veya Chrome kısayolları widget'ı.

Bazı sağlayıcılar, hub modu seçicisinde statik önizlemeler gösterebilir ancak gerçek bilgileri kontrol edin. Bu sağlayıcılar, her iki kullanım alanında da önizlemeleri ayarlamak için kullanılır.

Pencere İçinde Pencere

Android 15, Pencere İçinde Pencere (PiP) özelliğinde yapılan yeni değişikliklerle birlikte daha akıcı geçişler sağlıyor. Bu işlem, ana kullanıcı arayüzünün üzerine yerleştirilmiş kullanıcı arayüzü öğeleri içeren uygulamalar.

Geliştiriciler mantığı tanımlamak için onPictureInPictureModeChanged geri çağırma yöntemini kullanır bölümünü açar/kapatır. Bu geri arama PiP giriş veya çıkış animasyonu tamamlandığında tetiklenir. Şu tarihte başlıyor: Android 15, PictureInPictureUiState sınıfı yeni bir durum içeriyor.

Bu yeni kullanıcı arayüzü durumuyla, Android 15'i hedefleyen uygulamalar Activity#onPictureInPictureUiStateChanged geri çağırma özelliği şununla çağrılıyor: PiP animasyonu başlar başlamaz isTransitioningToPip(). Her biri 100'den az gösterim alan PiP modundayken uygulamayla alakalı olmayan birçok kullanıcı arayüzü öğesi öneriler, yaklaşan görüntüleme sayısı gibi bilgiler içeren örnek görünümler veya videolar, derecelendirmeler ve başlıklar. Uygulama PiP moduna geçtiğinde Bu kullanıcı arayüzü öğelerini gizlemek için onPictureInPictureUiStateChanged geri çağırma işlemini gerçekleştirin. PiP penceresinden tam ekran moduna geçerse Bu öğeleri göstermek için onPictureInPictureModeChanged geri çağırması (aşağıda gösterildiği gibi) aşağıdaki örnekler:

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 açma/kapatma düğmesi (PIP penceresi için) daha akıcı ve titreyen bir PiP giriş animasyonu olduğundan emin olun.

İ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 TitreşimEfekti'ni 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 Android'in büyük ekranlar, çevrilebilir ve katlanabilirler gibi form faktörlerinden en iyi şekilde yararlanma desteği sunar.

Büyük ekranda gelişmiş ç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 teknolojilerdeki en son gelişmelere erişebilmesi 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 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 uygulamanızın verilerini korumanıza yardımcı olur. Ayrıca, kullanıcılara verileri üzerinde daha fazla şeffaflık ve kontrol sunar. Kullanıcı teminatlarını iyileştirmek ve uygulamanızı yeni tehditlere karşı korumak için yaptıklarımızla ilgili daha fazla bilgiyi Google I/O'da Android'de kullanıcı güvenliğini koruma konulu konuşmada bulabilirsiniz.

Kimlik Bilgisi Yöneticisi'ni otomatik doldurma özelliğiyle 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 işlemlerini biyometrik istemlerle entegre etme

Credential Manager integrates biometric prompts into the credential creation and sign-in processes, eliminating the need for providers to manage biometric prompts. As a result, credential providers only need to focus on the results of the create and get flows, augmented with the biometric flow result. This simplified process creates a more efficient and streamlined credential creation and retrieval process.

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'lerindeki 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, kullanıcılar için erişilebilirliği iyileştiren ö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, 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 Japon 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.