Android 15, geliştiriciler için harika özellikler ve API'ler sunuyor. Aşağıdaki bölümlerde, ilgili API'leri kullanmaya başlamanıza yardımcı olmak için bu özellikler özetlenmiştir.
Eklenen, değiştirilen ve kaldırılan API'lerin ayrıntılı listesi için API farkı raporunu inceleyin. Eklenen API'lerle ilgili ayrıntılar için Android API referansını ziyaret edin. Android 15'te API düzeyi 35'te eklenen API'leri inceleyin. Platform değişikliklerinin uygulamalarınızı etkileyebileceği alanlar hakkında bilgi edinmek için Android 15'te Android 15'i hedefleyen uygulamalarda ve tüm uygulamalarda davranış değişikliklerini inceleyin.
Kamera ve medya içerikleri
Android 15, kamera ve medya deneyimini iyileştiren, içerik üreticilerin Android'de vizyonlarını hayata geçirmelerini desteklemek için araçlara ve donanımlara erişmelerini sağlayan çeşitli özellikler içerir.
Android'deki medya ve kamera için en yeni özellikler ve geliştirici çözümleri hakkında daha fazla bilgi edinmek istiyorsanız Google I/O'daki Building modern Android media and camera experiences (Modern Android medya ve kamera deneyimleri oluşturma) başlıklı konuşmayı izleyin.
Loş ışık iyileştirme
Android 15, hem Camera 2 hem de gece modu kamera uzantısında kullanılabilen bir otomatik pozlama modu olan düşük ışık güçlendirmesi özelliğini kullanıma sunar. Düşük Işık Güçlendirmesi, düşük ışık koşullarında önizleme akışının pozlamasını ayarlar. Gece modu, tek bir gelişmiş resim oluşturmak için seri çekim fotoğrafları birleştirdiğinden bu, gece modu kamera uzantısının hareketsiz resim oluşturma yönteminden farklıdır. Gece modu, hareketsiz resim oluşturmak için çok iyi çalışır ancak sürekli kare akışı oluşturamaz. Düşük Işık Geliştirme özelliği ise bunu yapabilir. Bu nedenle, Düşük Işıkta Geliştirme özelliği aşağıdaki gibi kamera özelliklerini etkinleştirir:
- Kullanıcıların düşük ışıkta çektiği fotoğrafları daha iyi kadraja alabilmesi için gelişmiş resim önizlemesi sunma
- Düşük ışıkta QR kodu tarama
Düşük ışık güçlendirmesini etkinleştirirseniz bu özellik, ışık seviyesi düşük olduğunda otomatik olarak açılır ve ışık seviyesi arttığında kapanır.
Uygulamalar, düşük ışık koşullarında önizleme akışını kaydederek videoları aydınlatabilir.
Daha fazla bilgi için Düşük Işıkta Güçlendirme başlıklı makaleyi inceleyin.
Uygulama içi kamera kontrolleri
Android 15 添加了一个扩展程序,可让您更好地控制支持的设备上的相机硬件及其算法:
HDR headroom kontrolü
Android 15, temel cihazın özelliklerine ve panelin bit derinliğine uygun HDR yedek bandını seçer. Tek bir HDR küçük resmi gösteren bir mesajlaşma uygulaması gibi çok fazla SDR içeriği bulunan sayfalarda bu davranış, SDR içeriğinin algılanan parlaklığını olumsuz yönde etkileyebilir. Android 15, SDR ve HDR içerik arasında denge kurmak için setDesiredHdrHeadroom
ile HDR marjını kontrol etmenize olanak tanır.

Ses yüksekliği kontrolü
Android 15 introduces support for the CTA-2075 loudness standard to help you avoid audio loudness inconsistencies and ensure users don't have to constantly adjust volume when switching between content. The system leverages known characteristics of the output devices (headphones and speaker) along with loudness metadata available in AAC audio content to intelligently adjust the audio loudness and dynamic range compression levels.
To enable this feature, you need to ensure loudness metadata is available in
your AAC content and enable the platform feature in your app. For this, you
instantiate a LoudnessCodecController
object by
calling its create factory method with the audio
session ID from the associated AudioTrack
; this
automatically starts applying audio updates. You can pass an
OnLoudnessCodecUpdateListener
to modify or filter
loudness parameters before they are applied on the
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 will also be updated to use the
LoudnessCodecController
APIs for a seamless app integration.
Sanal MIDI 2.0 cihazları
Android 13 added support for connecting to MIDI 2.0 devices using USB, which communicate using Universal MIDI Packets (UMP). Android 15 extends UMP support to virtual MIDI apps, enabling composition apps to control synthesizer apps as a virtual MIDI 2.0 device just like they would with an USB MIDI 2.0 device.
Daha verimli AV1 yazılım kod çözme
dav1d, the popular AV1 software decoder from VideoLAN is available for Android devices that don't support AV1 decode in hardware. dav1d is up to 3x more performant than the legacy AV1 software decoder, enabling HD AV1 playback for more users, including some low and mid tier devices.
Your app needs to opt-in to using dav1d by invoking it by name
"c2.android.av1-dav1d.decoder"
. dav1d will be made the default AV1 software
decoder in a subsequent update. This support is standardized and backported to
Android 11 devices that receive Google Play system updates.
Geliştirici üretkenliği ve araçları
Üretkenliğinizi artırmaya yönelik çalışmalarımızın çoğu Android Studio, Jetpack Compose ve Android Jetpack kitaplıkları gibi araçlara odaklanırken platformda vizyonunuzu daha kolay gerçekleştirmenize yardımcı olacak yollar aramaya devam ediyoruz.
OpenJDK 17 güncellemeleri
Android 15 continues the work of refreshing Android's core libraries to align with the features in the latest OpenJDK LTS releases.
The following key features and improvements are included:
- Quality-of-life improvements around NIO buffers
- Streams
- Additional
math
andstrictmath
methods util
package updates including sequencedcollection
,map
, andset
ByteBuffer
support inDeflater
- Security updates such as
X500PrivateCredential
and security key updates
These APIs are updated on over a billion devices running Android 12 (API level 31) and higher through Google Play System updates, so you can target the latest programming features.
PDF iyileştirmeleri
Android 15, PdfRenderer
ile ilgili önemli iyileştirmeler içerir.
API'ler. Uygulamalar, şifre korumalı dosyaların oluşturulması, ek açıklama, form düzenleme, arama ve kopyalama ile seçme gibi gelişmiş özellikler içerebilir. Yerel PDF görüntülemeyi hızlandırmak ve kaynak kullanımını azaltmak için doğrusallaştırılmış PDF optimizasyonları desteklenir.
Jetpack PDF kitaplığı, uygulamanıza PDF görüntüleme özelliklerini eklemeyi kolaylaştırmak için bu API'leri kullanır.

PdfRenderer
, Google kullanılarak güncellenebilecek bir modüle taşındı
Platform sürümünden bağımsız olarak Play sistem güncellemelerini destekleriz.
bu değişiklikleri Android 11'e (API düzeyi 30) geri
API yüzeyinin Android 15 öncesi sürümü
PdfRendererPreV
Otomatik dil geçişiyle ilgili iyileştirmeler
Android 14 added on-device, multi-language recognition in audio with automatic
switching between languages, but this can cause words to get dropped,
especially when languages switch with less of a pause between the two
utterances. Android 15 adds additional controls to help apps tune this switching
to their use case.
EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS
confines the automatic switching to the beginning of the audio session, while
EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES
deactivates the
language switching after a defined number of switches. These options are
particularly useful if you expect that there will be a single language spoken
during the session that should be autodetected.
Geliştirilmiş OpenType Variable Font API
Android 15, OpenType değişken yazı tipinin kullanılabilirliğini iyileştiriyor. Artık şunları yapabilirsiniz:
belirtmeden değişken yazı tipinden bir FontFamily
örneği oluştur
buildVariableFamily
API ile ağırlık eksenlerini belirleyin. Metin oluşturucu geçersiz kılmaları
görüntülenen metinle eşleşecek şekilde wght
ekseninin değerini değiştirin.
Yeni API'yi kullanarak bu işlem, Typeface
oluşturma kodunu basitleştirir
dikkate alabilirsiniz:
Kotlin
val newTypeface = Typeface.CustomFallbackBuilder( FontFamily.Builder( Font.Builder(assets, "RobotoFlex.ttf").build()) .buildVariableFamily()) .build()
Java
Typeface newTypeface = Typeface.CustomFallbackBuilder( new FontFamily.Builder( new Font.Builder(assets, "RobotoFlex.ttf").build()) .buildVariableFamily()) .build();
Önceden, aynı Typeface
öğesini oluşturmak için çok daha fazla koda ihtiyacınız vardı:
Kotlin
val oldTypeface = Typeface.CustomFallbackBuilder( FontFamily.Builder( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 400") .setWeight(400) .build()) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 100") .setWeight(100) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 200") .setWeight(200) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 300") .setWeight(300) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 500") .setWeight(500) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 600") .setWeight(600) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 700") .setWeight(700) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 800") .setWeight(800) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 900") .setWeight(900) .build() ).build() ).build()
Java
Typeface oldTypeface = new Typeface.CustomFallbackBuilder( new FontFamily.Builder( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 400") .setWeight(400) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 100") .setWeight(100) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 200") .setWeight(200) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 300") .setWeight(300) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 500") .setWeight(500) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 600") .setWeight(600) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 700") .setWeight(700) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 800") .setWeight(800) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 900") .setWeight(900) .build() ) .build() ).build();
Aşağıda, bir Typeface
hesabının hem eski hem de yeni API'lerle nasıl oluşturulduğuna dair bir örnek verilmiştir
oluşturur:
Bu örnekte, eski API ile oluşturulan Typeface
öğesinde
350, 450, 550 ve 650 için doğru yazı tipi ağırlıkları oluşturma olanağı
Font
örneklerinden oluşur, böylece oluşturucu en yakın ağırlığa geri döner. Bu nedenle
bu durumda 350 yerine 300, 450 yerine 400 oluşturulur ve
bu şekilde devam eder. Buna karşın, yeni API'lerle oluşturulan Typeface
,
Böylece, doğru ağırlıklar 350 için oluşturulur ve bu şekilde, belirli bir ağırlık için Font
örneği oluşturulur.
450, 550 ve 650 de olabilir.
Ayrıntılı satır sonu kontrolleri
Android 15'ten itibaren, TextView
ve temel satır ayırıcı, okunabilirliği artırmak için metnin belirli bir bölümünü aynı satırda koruyabilir. Dize kaynaklarında <nobreak>
etiketini veya createNoBreakSpan
kullanarak bu satır sonu özelleştirmesinden yararlanabilirsiniz. Benzer şekilde, <nohyphen>
etiketini veya createNoHyphenationSpan
kullanarak kelimeleri kısaltmalardan koruyabilirsiniz.
Örneğin, aşağıdaki dize kaynağı satır sonu içermez ve "Pixel 8 Pro" metninin istenmeyen bir yerde kesildiği şekilde oluşturulur:
<resources>
<string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>
Buna karşılık bu dize kaynağı, "Pixel 8 Pro" ifadesini sarmalayan ve satır aralarını önleyen <nobreak>
etiketini içerir:
<resources>
<string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>
Bu dizelerin oluşturulma biçimleri arasındaki fark aşağıdaki resimlerde gösterilmektedir:

<nobreak>
etiketi kullanılarak sarmalandığı bir metin satırı için düzen.
<nobreak>
etiketi kullanılarak sarıldığı aynı metin satırının düzeni.Uygulama arşivleme
Android and Google Play announced support for app archiving last year, allowing users to free up space by partially removing infrequently used apps from the device that were published using Android App Bundle on Google Play. Android 15 includes OS level support for app archiving and unarchiving, making it easier for all app stores to implement it.
Apps with the REQUEST_DELETE_PACKAGES
permission can call the
PackageInstaller
requestArchive
method to request archiving an
installed app package, which removes the APK and any cached files, but persists
user data. Archived apps are returned as displayable apps through the
LauncherApps
APIs; users will see a UI treatment to highlight that those
apps are archived. If a user taps on an archived app, the responsible installer
will get a request to unarchive it, and the restoration process can be
monitored by the ACTION_PACKAGE_ADDED
broadcast.
Geliştirici seçeneklerini kullanarak bir cihazda 16 KB modunu etkinleştirme

Cihazı 16 KB modunda başlatmak için 16 KB sayfa boyutuyla başlat geliştirici seçeneğini etkinleştirin.
Android 15 QPR1'den itibaren, cihazı 16 KB modunda başlatmak ve cihaz üzerinde test yapmak için belirli cihazlarda bulunan geliştirici seçeneğini kullanabilirsiniz. Geliştirici seçeneğini kullanmadan önce Ayarlar > Sistem > Yazılım güncellemeleri'ne gidip varsa güncellemeleri uygulayın.
Bu geliştirici seçeneği aşağıdaki cihazlarda kullanılabilir:
Pixel 8 ve 8 Pro (Android 15 QPR1 veya sonraki sürümler)
Pixel 8a (Android 15 QPR1 veya sonraki sürümler)
Pixel 9, 9 Pro ve 9 Pro XL (Android 15 QPR2 Beta 2 veya sonraki sürümlerle)
Grafik
Android 15, ANGLE ve Canvas grafik sistemine eklemeler de dahil olmak üzere en yeni grafik iyileştirmelerini sunar.
Android'in GPU erişimini modernleştirme
Android donanımı, çekirdek işletim sisteminin tek bir CPU'da çalıştığı ve GPU'lara sabit işlevli ardışık düzenlere dayalı API'ler kullanılarak erişildiği ilk günlerden bu yana oldukça gelişti. Vulkan® grafik API'si, Android 7.0 (API seviyesi 24) sürümünden beri NDK'da mevcuttur. Modern GPU donanımlarını daha iyi yansıtan, birden fazla CPU çekirdeğini desteklemek için daha iyi ölçeklendirilen ve CPU sürücüsünün ek yükünü azaltan bu API, uygulama performansını iyileştirir. Vulkan, tüm modern oyun motorları tarafından desteklenir.
Vulkan, Android'in GPU için tercih ettiği arayüzdür. Bu nedenle Android 15, Vulkan'ın üzerinde OpenGL® ES çalıştırmak için isteğe bağlı bir katman olarak ANGLE'ı içerir. ANGLE'a geçiş, Android OpenGL uygulamasını standartlaştırarak daha iyi uyumluluk ve bazı durumlarda daha iyi performans sağlar. Android 15'te Ayarlar -> Sistem -> Geliştirici Seçenekleri -> Deneysel: ANGLE'ı etkinleştir geliştirici seçeneğini etkinleştirerek OpenGL ES uygulamanızın kararlılığını ve performansını ANGLE ile test edebilirsiniz.
Vulkan'da Android ANGLE yol haritası

GPU yığınımızı basitleştirme kapsamında, bundan sonra daha fazla yeni cihazda GL sistem sürücüsü olarak ANGLE'ı kullanıma sunacağız. OpenGL/ES'in gelecekte yalnızca ANGLE üzerinden kullanılmasını bekliyoruz. Bununla birlikte, tüm cihazlarda OpenGL ES desteğini sürdürmeyi 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'ta yapılan iyileştirmeler
Android 15 continues our modernization of Android's Canvas graphics system with additional capabilities:
Matrix44
provides a 4x4 matrix for transforming coordinates that should be used when you want to manipulate the canvas in 3D.clipShader
intersects the current clip with the specified shader, whileclipOutShader
sets the clip to the difference of the current clip and the shader, each treating the shader as an alpha mask. This supports the drawing of complex shapes efficiently.
Performans ve pil
Android, uygulamalarınızın performansını ve kalitesini artırmanıza yardımcı olmaya odaklanmaya devam ediyor. Android 15, uygulamanızdaki görevlerin daha verimli bir şekilde yürütülmesine, uygulama performansının optimize edilmesine ve uygulamalarınızla ilgili analizler toplanmasına yardımcı olan API'ler sunar.
Pili verimli kullanmaya yönelik en iyi uygulamalar, ağ ve güç kullanımında hata ayıklama ve Android 15 ile Android'in son sürümlerinde arka planda yapılan işlerin pil verimliliğini nasıl artırdığımız hakkında ayrıntılı bilgi için Google I/O'daki Android'de arka planda yapılan işlerin pil verimliliğini artırma konuşmasına göz atın.
ApplicationStartInfo API
In previous versions of Android, app startup has been a bit of a mystery. It was
challenging to determine within your app whether it started from a cold, warm,
or hot state. It was also difficult to know how long your app spent during the
various launch phases: forking the process, calling onCreate
, drawing the
first frame, and more. When your Application
class was instantiated, you had no
way of knowing whether the app started from a broadcast, a content provider, a
job, a backup, boot complete, an alarm, or an Activity
.
The ApplicationStartInfo
API on Android 15 provides
all of this and more. You can even choose to add your own timestamps into the
flow to help collect timing data in one place. In addition to collecting
metrics, you can use ApplicationStartInfo
to help directly optimize app
startup; for example, you can eliminate the costly instantiation of UI-related
libraries within your Application
class when your app is starting up due to a
broadcast.
Ayrıntılı uygulama boyutu bilgileri
Since Android 8.0 (API level 26), Android has included the
StorageStats.getAppBytes
API that summarizes the installed
size of an app as a single number of bytes, which is a sum of the APK size, the
size of files extracted from the APK, and files that were generated on the
device such as ahead-of-time (AOT) compiled code. This number is not very
insightful in terms of how your app is using storage.
Android 15 adds the
StorageStats.getAppBytesByDataType([type])
API, which lets
you get insight into how your app is using up all that space, including APK file
splits, AOT and speedup related code, dex metadata, libraries, and guided
profiles.
Uygulama tarafından yönetilen profilleme
Android 15 includes the ProfilingManager
class,
which lets you collect profiling information from within your app such as heap
dumps, heap profiles, stack sampling, and more. It provides a callback to your
app with a supplied tag to identify the output file, which is delivered to your
app's files directory. The API does rate limiting to minimize the performance
impact.
To simplify constructing profiling requests in your app, we recommend using the
corresponding Profiling
AndroidX API, available
in Core 1.15.0-rc01 or higher.
SQLite veritabanı iyileştirmeleri
Android 15 introduces SQLite APIs that expose advanced features from the underlying SQLite engine that target specific performance issues that can manifest in apps. These APIs are included with the update of SQLite to version 3.44.3.
Developers should consult best practices for SQLite performance to get the most out of their SQLite database, especially when working with large databases or when running latency-sensitive queries.
- Read-only deferred transactions: when issuing transactions that are
read-only (don't include write statements), use
beginTransactionReadOnly()
andbeginTransactionWithListenerReadOnly(SQLiteTransactionListener)
to issue read-onlyDEFERRED
transactions. Such transactions can run concurrently with each other, and if the database is in WAL mode, they can run concurrently withIMMEDIATE
orEXCLUSIVE
transactions. - Row counts and IDs: APIs were added to retrieve the count of changed
rows or the last inserted row ID without issuing an additional query.
getLastChangedRowCount()
returns the number of rows that were inserted, updated, or deleted by the most recent SQL statement within the current transaction, whilegetTotalChangedRowCount()
returns the count on the current connection.getLastInsertRowId()
returns therowid
of the last row to be inserted on the current connection. - Raw statements: issue a raw SQlite statement, bypassing convenience wrappers and any additional processing overhead that they may incur.
Android Dinamik Performans Çerçevesi güncellemeleri
Android 15 continues our investment in the Android Dynamic Performance Framework (ADPF), a set of APIs that allow games and performance intensive apps to interact more directly with power and thermal systems of Android devices. On supported devices, Android 15 adds ADPF capabilities:
- A power-efficiency mode for hint sessions to indicate that their associated threads should prefer power saving over performance, great for long-running background workloads.
- GPU and CPU work durations can both be reported in hint sessions, allowing the system to adjust CPU and GPU frequencies together to best meet workload demands.
- Thermal headroom thresholds to interpret possible thermal throttling status based on headroom prediction.
To learn more about how to use ADPF in your apps and games, head over to the documentation.
Gizlilik
Android 15, uygulama geliştiricilerin kullanıcı gizliliğini korumasına yardımcı olan çeşitli özellikler içerir.
Ekran kaydı algılama
Android 15, bunları algılamak için uygulamalar için destek sunmaya başladı. kaydedilmektedir. Uygulama geçişinde her zaman geri çağırma çağrılır arasında bir ekran kaydında görünür veya görünmez olma arasındaki farka bağlıdır. Kayıt işleminin UID'sine ait etkinlikler kaydediliyorsa uygulama görünür olarak kabul edilir. Bu sayede, uygulamanız hassas bir işlem gerçekleştiriyorsa kullanıcıyı kaydedildiğini bildirebilirsiniz.
val mCallback = Consumer<Int> { state ->
if (state == SCREEN_RECORDING_STATE_VISIBLE) {
// We're being recorded
} else {
// We're not being recorded
}
}
override fun onStart() {
super.onStart()
val initialState =
windowManager.addScreenRecordingCallback(mainExecutor, mCallback)
mCallback.accept(initialState)
}
override fun onStop() {
super.onStop()
windowManager.removeScreenRecordingCallback(mCallback)
}
Genişletilmiş IntentFilter özellikleri
Android 15, URL sorgu parametreleri, URL parçaları ve engelleme veya hariç tutma kuralları dahil olmak üzere her biri karşılanması gereken bir Intent
eşleme kuralı grubu oluşturan bir UriRelativeFilter
nesnesi grubu içeren UriRelativeFilterGroup
aracılığıyla daha hassas Intent
çözümü destekler.
Bu kurallar, AndroidManifest
XML dosyasında <uri-relative-filter-group>
etiketiyle tanımlanabilir. Bu etiket isteğe bağlı olarak android:allow
etiketi içerebilir. Bu etiketler, mevcut veri etiketi özelliklerinin yanı sıra android:query
ve android:fragment
özelliklerini kullanan <data>
etiketleri içerebilir.
AndroidManifest
söz dizimi örneğini aşağıda bulabilirsiniz:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:domain="astore.com" />
<uri-relative-filter-group>
<data android:pathPrefix="/auth" />
<data android:query="region=na" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:query="mobileoptout=true" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:fragmentPrefix="faq" />
</uri-relative-filter-group>
</intent-filter>
Özel alan
借助私密空间,用户可以在设备上创建一个单独的空间,在额外的身份验证层保护下,防止敏感应用遭到窥探。私密空间使用单独的用户个人资料。用户可以选择使用设备锁定方式或为私密空间使用单独的锁定方式。
私密空间中的应用会显示在启动器的单独容器中,并且当私密空间处于锁定状态时,这些应用不会显示在“最近用过”视图、通知、“设置”和其他应用中。用户生成的内容和下载的内容(例如媒体内容或文件)以及账号在私密空间和主空间之间是分开的。在私密空间处于解锁状态时,您可以使用系统 Sharesheet 和照片选择器向应用授予对各个空间中内容的访问权限。
用户无法将现有应用及其数据移至私密空间。相反,用户可以在私密空间中选择安装选项,以便使用他们偏好的任意应用商店安装应用。私密空间中的应用会作为主空间中任何应用的单独副本进行安装(同一应用的新副本)。
当用户锁定私密空间时,系统会停止该个人资料。在个人资料停止运行时,私密空间中的应用将不再处于活动状态,无法执行前台或后台活动,包括显示通知。
我们建议您使用私密空间测试应用,以确保应用能按预期运行,尤其是当您的应用属于以下某一类别时:
- 具有工作资料逻辑的应用:假定其应用的任何已安装副本(不在主资料中)均位于工作资料中。
- 医疗应用
- 启动器应用
- 应用商店应用
Seçili Fotoğraflara Erişim için en son kullanıcı seçimini sorgulama
Apps can now highlight only the most-recently-selected photos and videos when
partial access to media permissions is granted. This feature can improve
the user experience for apps that frequently request access to photos and
videos. To use this feature in your app, enable the
QUERY_ARG_LATEST_SELECTION_ONLY
argument when querying MediaStore
through ContentResolver
.
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 teknolojiler geliştirme çalışmalarımızın bir parçasıdır. Başlamanıza yardımcı olmak için Android geliştirici önizlemesi ve beta programlarındaki Özel Korumalı Alan hakkında daha fazla bilgiyi Özel Korumalı Alan sayfamızda bulabilirsiniz.
ve geri yükleme
Android 15 集成了与 Health Connect by Android 相关的最新扩展程序。Health Connect by Android 是一个安全的集中式平台,可用于管理和共享应用收集的健康与健身数据。此次更新 增加了对健身、 营养、体表温度、训练计划等。
体表温度追踪功能让用户可以更精确地存储和分享体表温度 来自穿戴式设备或其他跟踪设备的体温数据。
训练计划是一种结构化的锻炼计划,可帮助用户实现健身目标。训练计划支持各种完成和表现目标:
如需详细了解 Android 中 Health Connect 的最新更新,请参阅 利用 Android 打造自适应体验 健康演讲。
Uygulama ekran paylaşımı
Android 15 supports app screen sharing so users can share or record just an
app window rather than the entire device screen. This feature, first enabled in
Android 14 QPR2, includes
MediaProjection
callbacks that allow your app
to customize the app screen sharing experience. Note that for apps targeting
Android 14 (API level 34) or higher,
user consent is required for each
MediaProjection
capture session.
Kullanıcı deneyimi ve sistem kullanıcı arayüzü
Android 15, uygulama geliştiricilere ve kullanıcılara cihazlarını ihtiyaçlarına göre yapılandırma konusunda daha fazla kontrol ve esneklik sunar.
Android 15'teki en son iyileştirmeleri kullanarak uygulamanızın kullanıcı deneyimini nasıl iyileştireceğiniz hakkında daha fazla bilgi edinmek için Google I/O'daki Android uygulamanızın kullanıcı deneyimini iyileştirme başlıklı konuşmayı izleyin.
Generated Previews API ile daha zengin widget önizlemeleri
Before Android 15, the only way to provide widget picker previews was to specify a static image or layout resource. These previews often differ significantly from the look of the actual widget when it is placed on the home screen. Also, static resources can't be created with Jetpack Glance, so a Glance developer had to screenshot their widget or create an XML layout to have a widget preview.
Android 15 adds support for generated previews. This means that app widget
providers can generate RemoteViews
to use as the picker preview, instead
of a static resource.

Push API
Apps can provide generated previews through a push API. Apps can provide
previews at any point in their lifecycle, and don't receive an explicit request
from the host to provide previews. Previews are persisted in AppWidgetService
,
and hosts can request them on-demand. The following example loads an XML widget
layout resource and sets it as the preview:
AppWidgetManager.getInstance(appContext).setWidgetPreview(
ComponentName(
appContext,
SociaLiteAppWidgetReceiver::class.java
),
AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN,
RemoteViews("com.example", R.layout.widget_preview)
)
The expected flow is:
- At any time, the widget provider calls
setWidgetPreview
. The provided previews are persisted inAppWidgetService
with other provider info. setWidgetPreview
notifies hosts of an updated preview through theAppWidgetHost.onProvidersChanged
callback. In response, the widget host reloads all of its provider information.- When displaying a widget preview, the host checks
AppWidgetProviderInfo.generatedPreviewCategories
, and if the chosen category is available, callsAppWidgetManager.getWidgetPreview
to return the saved preview for this provider.
When to call setWidgetPreview
Because there is no callback to provide previews, apps can choose to send previews at any point when they are running. How often to update the preview depends on the widget's use case.
The following list describes the two main categories of preview use cases:
- Providers that show real data in their widget previews, such as personalized or recent information. These providers can set the preview once the user has signed in or has done initial configuration in their app. After this, they can set up a periodic task to update the previews at their chosen cadence. Examples of this type of widget could be a photo, calendar, weather or news widget.
- Providers that show static information in previews or quick-action widgets that don't display any data. These providers can set previews once, when the app first launches. Examples of this type of widget include a drive quick actions widget or chrome shortcuts widget.
Some providers might show static previews on the hub mode picker, but real information on the homescreen picker. These providers should follow the guidance for both of these use cases to set previews.
Pencere İçinde Pencere
Android 15'te Pencere İçinde Pencere (PiP) değişiklikleriyle birlikte PiP moduna girerken daha yumuşak geçiş sağlanır. Bu özellik, ana kullanıcı arayüzlerinin üzerine yer paylaşımlı olarak yerleştirilmiş kullanıcı arayüzü öğelerine sahip uygulamalar için faydalı olacaktır.
Geliştiriciler, üste binen kullanıcı arayüzü öğelerinin görünürlüğünü değiştiren mantığı tanımlamak için onPictureInPictureModeChanged
geri çağırma işlevini kullanır. Bu geri çağırma, PiP giriş veya çıkış animasyonu tamamlandığında tetiklenir. Android 15'ten itibaren PictureInPictureUiState
sınıfı başka bir durum içerir.
Bu kullanıcı arayüzü durumunda, Android 15'i (API düzeyi 35) hedefleyen uygulamalar, PIP animasyonu başlar başlamaz Activity#onPictureInPictureUiStateChanged
geri çağırma işlevinin isTransitioningToPip()
ile çağrıldığını gözlemler. PiP modundayken uygulamayla alakalı olmayan birçok kullanıcı arayüzü öğesi vardır. Örneğin, öneriler, yaklaşan video, derecelendirmeler ve başlıklar gibi bilgileri içeren görünümler veya düzenler. Uygulama PiP moduna geçtiğinde bu kullanıcı arayüzü öğelerini gizlemek için onPictureInPictureUiStateChanged
geri çağırma işlevini kullanın. Uygulama, PiP penceresinden tam ekran moduna geçtiğinde aşağıdaki örneklerde gösterildiği gibi bu öğeleri göstermek için onPictureInPictureModeChanged
geri çağırma işlevini kullanın:
override fun onPictureInPictureUiStateChanged(pipState: PictureInPictureUiState) {
if (pipState.isTransitioningToPip()) {
// Hide UI elements
}
}
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) {
if (isInPictureInPictureMode) {
// Unhide UI elements
}
}
Alakasız kullanıcı arayüzü öğelerinin (PiP penceresi için) bu hızlı görünürlük açma/kapatma özelliği, PiP giriş animasyonunun daha akıcı ve titreşimsiz olmasını sağlar.
İyileştirilmiş Rahatsız Etmeyin kuralları
AutomaticZenRule
, uygulamaların Dikkat'i özelleştirmesine olanak tanır
Yönetim (Rahatsız Etmeyin) kuralları ve ne zaman etkinleştirileceğine veya devre dışı bırakılacağına karar verme
oluşturabilirsiniz. Android 15,
en iyi uygulamaları paylaşacağız. Aşağıdaki iyileştirmeler dahildir:
AutomaticZenRule
öğesine türler ekleniyor ve sistemin özel uygulama yapmasına olanak tanıyor bazı kurallara uyması gerekir.AutomaticZenRule
uygulamasına simge eklenerek modların daha kullanışlı hale getirilmesine yardımcı olun fark edebilirsiniz.AutomaticZenRule
öğesine aşağıdakileri açıklayan birtriggerDescription
dizesi ekleniyor kuralın kullanıcı için etkin olması gereken koşullar.- Eklenme zamanı
ZenDeviceEffects
AutomaticZenRule
değerine ayarlayarak kuralların gri tonlama gibi öğeleri tetiklemesine izin verir gece moduna girebilir veya duvar kağıdını karartabilirsiniz.
Bildirim kanalları için VibrationEffect ayarlama
Android 15 supports setting rich vibrations for incoming notifications by
channel using NotificationChannel.setVibrationEffect
, so
your users can distinguish between different types of notifications without
having to look at their device.
Medya projeksiyonu durum çubuğu çipi ve otomatik durdurma
媒体投放可能会泄露用户的私密信息。一个醒目的新状态栏条状标签可让用户了解任何正在进行的屏幕投影。用户可以点按该条状标签停止投屏、共享或录制屏幕。此外,为了提供更直观的用户体验,当设备屏幕锁定后,所有正在进行的屏幕投影都会自动停止。

Büyük ekranlar ve form faktörleri
Android 15, uygulamalarınızın büyük ekranlar, çevrilebilir ve katlanabilir cihazlar gibi Android'in form faktörlerinden en iyi şekilde yararlanmasını sağlar.
Büyük ekranda çoklu görev deneyimi artık daha iyi
Android 15 gives users better ways to multitask on large screen devices. For example, users can save their favorite split-screen app combinations for quick access and pin the taskbar on screen to quickly switch between apps. This means that making sure your app is adaptive is more important than ever.
Google I/O has sessions on Building adaptive Android apps and Building UI with the Material 3 adaptive library that can help, and our documentation has more to help you Design for large screens.
Kapak ekranı desteği
您的应用可以声明一个属性,Android 15 会使用该属性来允许您的 Application
或 Activity
显示在受支持的可翻转设备的小封面屏幕上。这些屏幕太小,无法被视为适合运行 Android 应用的兼容目标平台,但您的应用可以选择支持它们,从而让您的应用在更多平台上可用。
Bağlantı
Android 15, platformu güncelleyerek uygulamanızın iletişim ve kablosuz teknolojilerdeki en son gelişmelere erişmesini sağlar.
Uydu desteği
Android 15 continues to extend platform support for satellite connectivity and includes some UI elements to ensure a consistent user experience across the satellite connectivity landscape.
Apps can use ServiceState.isUsingNonTerrestrialNetwork()
to
detect when a device is connected to a satellite, giving them more awareness of
why full network services might be unavailable. Additionally, Android 15
provides support for SMS and MMS apps as well as preloaded RCS apps to use
satellite connectivity for sending and receiving messages.

Daha sorunsuz NFC deneyimleri
Android 15, Android'in güçlü NFC uygulama ekosistemini desteklemeye devam ederken temassız ödeme deneyimini daha akıcı ve güvenilir hale getirmek için çalışıyor. Desteklenen cihazlarda uygulamalar, NfcAdapter
'den gözlem moduna girmesini isteyebilir. Bu modda cihaz, NFC okuyucuları dinler ancak yanıt vermez. Uygulamanın NFC hizmeti, işleme alınacak PollingFrame
nesneleri gönderir. PollingFrame
nesneleri, NFC okuyucuyla ilk iletişimden önce kimlik doğrulama yapmak için kullanılabilir. Bu sayede, birçok durumda tek dokunuşla işlem yapılabilir.
Ayrıca uygulamalar, desteklenen cihazlarda bir filtre kaydedebilir. Böylece, anket döngüsü etkinliği hakkında bildirim alabilir ve NFC'den haberdar olan birden fazla uygulamayla sorunsuz şekilde çalışabilir.
Cüzdan rolü
Android 15, kullanıcının tercih ettiği cüzdan uygulamasıyla daha sıkı entegrasyon sağlayan bir Cüzdan rolü sunar. Bu rol, NFC'nin 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 kategorisine kayıtlı AID'ler için NFC dokunma işlemlerini yönlendirirken kullanılır. Aynı AID için kayıtlı başka bir uygulama ön planda çalışmıyorsa dokunma işlemleri her zaman Cüzdan rol sahibine gider.
Bu rol, Cüzdan Hızlı Erişim kartının etkinleştirildiğinde nereye yerleştirileceğini belirlemek için de kullanılır. Rol "Yok" olarak ayarlandığında Hızlı Erişim kutusu kullanılamaz ve ödeme kategorisi NFC dokunuşları yalnızca ön plan uygulamasına gönderilir.
Güvenlik
Android 15, uygulamanızın güvenliğini artırmanıza, uygulamanızın verilerini korumanıza ve kullanıcılara verileri üzerinde daha fazla şeffaflık ve kontrol imkanı sunmanıza yardımcı olur. Kullanıcı güvenliğini artırmak ve uygulamanızı yeni tehditlere karşı korumak için neler yaptığımız hakkında daha fazla bilgi edinmek isterseniz Google I/O'daki Android'de kullanıcı güvenliğini sağlama konuşmasına göz atın.
Kimlik Bilgisi Yöneticisi'ni otomatik doldurma özelliğiyle entegre etme
Android 15'ten itibaren geliştiriciler kullanıcı adı veya şifre alanları gibi belirli görünümleri Kimlik Bilgisi Yöneticisi istekleriyle bağlayabilir. Bu sayede, oturum açma işlemi sırasında özelleştirilmiş bir kullanıcı deneyimi sunmak daha kolay hale gelir. Kullanıcı bu görünümlerden birine odaklandığında Kimlik Bilgisi Yöneticisi'ne ilgili bir istek gönderilir. Elde edilen kimlik bilgileri sağlayıcılar arasında toplanır ve satır içi öneriler veya açılır liste önerileri gibi otomatik doldurma yedek kullanıcı arayüzlerinde gösterilir. Jetpack androidx.credentials kitaplığı, geliştiricilerin tercih ettiği uç noktadır ve yakında Android 15 ve sonraki sürümlerde bu özelliği daha da geliştirmek için kullanıma sunulacaktır.
Tek dokunuşla kaydolma ve oturum açma özelliğini biyometrik istemlerle entegre edin
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
We are introducing the E2eeContactKeysManager
in Android 15, which
facilitates end-to-end encryption (E2EE) in your Android apps by providing an
OS-level API for the storage of cryptographic public keys.
The E2eeContactKeysManager
is designed to integrate with the platform
contacts app to give users a centralized way to manage and verify their
contacts' public keys.
İçerik URI'lerinde izin denetimleri
Android 15, içerik URI'lerinde izin kontrolleri gerçekleştiren bir dizi API'yi kullanıma sunar:
Context.checkContentUriPermissionFull
: Bu seçenek, içerik URI'lerinde tam izin kontrolü gerçekleştirir.Activity
manifest özelliğirequireContentUriPermissionFromCaller
: Bu özellik, etkinlik başlatıldığında sağlanan içerik URI'lerinde belirtilen izinleri zorunlu kılar.Activity
çağırıcıları içinComponentCaller
sınıfı: Bu, etkinliği başlatan uygulamayı temsil eder.
Erişilebilirlik
Android 15, kullanıcılar için erişilebilirliği artıran özellikler ekler.
Daha iyi Braille
In Android 15, we've made it possible for TalkBack to support Braille displays that are using the HID standard over both USB and secure Bluetooth.
This standard, much like the one used by mice and keyboards, will help Android support a wider range of Braille displays over time.
Uluslararası hale getirme
Android 15, cihaz farklı dillerde kullanılırken kullanıcı deneyimini tamamlayan özellikler ve işlevler ekler.
CJK değişken yazı tipi
Starting with Android 15, the font file for Chinese, Japanese, and Korean (CJK) languages, NotoSansCJK, is now a variable font. Variable fonts open up possibilities for creative typography in CJK languages. Designers can explore a broader range of styles and create visually striking layouts that were previously difficult or impossible to achieve.

Karakterler arası gerekçe
Android 15'ten itibaren metin, harf aralığı kullanılarak ikiye yaslanabilir ve
JUSTIFICATION_MODE_INTER_CHARACTER
kullanılıyor. Kelimeler arası iki yana yaslama (önceki değeri)
İlk olarak Android 8.0'da (API düzeyi 26) kullanıma sunulduktan sonra
iki yana yaslama,
Segmentasyon için bir boşluk karakteri (ör. Çince, Japonca vb.).

JUSTIFICATION_MODE_NONE
kullanılarak Japonca metin düzeni.
JUSTIFICATION_MODE_NONE
kullanılarak İngilizce metin düzeni.
JUSTIFICATION_MODE_INTER_WORD
kullanan Japonca metin için düzen.
JUSTIFICATION_MODE_INTER_WORD
kullanılarak İngilizce metin düzeni.
JUSTIFICATION_MODE_INTER_CHARACTER
kullanılarak Japonca metin düzeni.
JUSTIFICATION_MODE_INTER_CHARACTER
kullanılarak oluşturulan İngilizce metin için düzen.Otomatik satır sonu yapılandırması
Android started supporting phrase-based line breaks for Japanese and Korean in
Android 13 (API level 33). However, while phrase-based line breaks improve the
readability of short lines of text, they don't work well for long lines of text.
In Android 15, apps can apply phrase-based line breaks only for short lines
of text, using the LINE_BREAK_WORD_STYLE_AUTO
option. This option selects the best word style option for the text.
For short lines of text, phrase-based line breaks are used, functioning the same
as LINE_BREAK_WORD_STYLE_PHRASE
, as shown in the
following image:

LINE_BREAK_WORD_STYLE_AUTO
applies phrase-based line breaks to improve the readability of the text.
This is the same as applying
LINE_BREAK_WORD_STYLE_PHRASE
.For longer lines of text, LINE_BREAK_WORD_STYLE_AUTO
uses a no
line-break word style, functioning the same as
LINE_BREAK_WORD_STYLE_NONE
, as shown in the
following image:

LINE_BREAK_WORD_STYLE_AUTO
applies no line-break word style to improve the readability of the text.
This is the same as applying
LINE_BREAK_WORD_STYLE_NONE
.Ek Japonca Hentaigana Yazı Tipi
在 Android 15 中,旧版日语平假名(也称为 Hentaigana)字体文件 捆绑在一起半形人物的独特形状可以增加 风格或设计独特的风格 传播和理解古代日本文件的能力。

VideoLAN cone Copyright (c) 1996-2010 VideoLAN. Bu logo veya değiştirilmiş bir sürümü, VideoLAN projesine ya da VideoLAN ekibi tarafından geliştirilen herhangi bir ürüne atıfta bulunmak için herkes tarafından kullanılabilir veya değiştirilebilir ancak proje tarafından onaylandığını göstermez.
Vulkan ve Vulkan logosu, Khronos Group Inc. şirketinin tescilli ticari markalarıdır.
OpenGL, tescilli bir ticari markadır ve OpenGL ES logosu, Khronos'un izniyle kullanılan Hewlett Packard Enterprise'ın ticari markasıdır.