يقدّم Android 15 ميزات وواجهات برمجة تطبيقات رائعة للمطوّرين. توضّح الأقسام التالية هذه الميزات لمساعدتك على البدء في استخدام واجهات برمجة التطبيقات ذات الصلة.
للحصول على قائمة مفصّلة بواجهات برمجة التطبيقات التي تمت إضافتها وتعديلها وإزالتها، يُرجى قراءة تقرير الاختلافات في واجهات برمجة التطبيقات. للحصول على تفاصيل حول واجهات برمجة التطبيقات المضافة، يُرجى الانتقال إلى مرجع واجهة برمجة تطبيقات Android. بالنسبة إلى Android 15، ابحث عن واجهات برمجة التطبيقات التي تمت إضافتها في المستوى 35 لواجهة برمجة التطبيقات. للتعرّف على المجالات التي قد تؤثّر فيها تغييرات النظام الأساسي في تطبيقاتك، احرص على الاطّلاع على التغييرات في سلوك Android 15 للتطبيقات التي تستهدف Android 15 ولجميع التطبيقات.
الكاميرا والوسائط
يتضمّن Android 15 مجموعة متنوعة من الميزات التي تحسّن تجربة استخدام الكاميرا والوسائط، وتتيح لك الوصول إلى الأدوات والأجهزة التي تساعد صنّاع المحتوى في تنفيذ أفكارهم الإبداعية على Android.
لمزيد من المعلومات حول أحدث الميزات والحلول المتاحة للمطوّرين في ما يخص الوسائط والكاميرا على Android، يمكنك مشاهدة جلسة إنشاء تجارب حديثة في ما يخص الوسائط والكاميرا على Android من مؤتمر Google I/O.
تحسين الإضاءة المنخفضة
Android 15 引入了弱光增强功能,这是一种自动曝光模式,适用于 Camera 2 和夜间模式相机扩展。“弱光增强”功能可在光线昏暗的环境下调整预览画面的曝光度。这与夜间模式相机扩展程序创建静态图片的方式不同,因为夜间模式会将一系列照片组合起来,以创建一张经过增强的单张图片。虽然夜间模式非常适合拍摄静态图片,但无法创建连续的帧流,而“低光增强”功能可以。因此,弱光增强功能可启用相机功能,例如:
- 提供增强型图片预览,以便用户更好地取景拍摄低光照片
- 在光线不足的情况下扫描二维码
如果您启用“弱光增强”功能,该功能会在光线较弱时自动开启,在光线较强时关闭。
应用可以在光线昏暗的环境下录制预览画面,以保存经过亮度提升的视频。
如需了解详情,请参阅弱光增强。
عناصر التحكّم في الكاميرا داخل التطبيق
Android 15 adds an extension for more control over the camera hardware and its algorithms on supported devices:
- Advanced flash strength adjustments enabling precise control of flash
intensity in both
SINGLE
andTORCH
modes while capturing images.
التحكّم في مساحة HDR
Android 15 chooses HDR headroom that is appropriate for the underlying device
capabilities and bit-depth of the panel. For pages that have lots of SDR
content, such as a messaging app displaying a single HDR thumbnail, this
behavior can end up adversely influencing the perceived brightness of the SDR
content. Android 15 lets you control the HDR headroom with
setDesiredHdrHeadroom
to strike a balance between SDR
and HDR content.

التحكّم في مستوى الصوت
يتيح نظام التشغيل Android 15 معيار CTA-2075 لمساعدتك في معرفة تجنب تناقضات ارتفاع الصوت والتأكد من عدم اضطرار المستخدمين إلى ضبط مستوى الصوت عند التبديل بين المحتوى. يستفيد النظام من البيانات خصائص أجهزة الإخراج (سماعات الرأس ومكبرات الصوت) إلى جانب البيانات الوصفية لارتفاع الصوت المتوفرة في محتوى الصوت بتنسيق AAC لضبط ارتفاع الصوت ومستويات ضغط النطاق الديناميكي
لتفعيل هذه الميزة، عليك التأكّد من توفّر البيانات الوصفية لمستوى الصوت في
محتوى AAC وتفعيل ميزة النظام الأساسي في تطبيقك. ولإجراء ذلك، عليك
إنشاء عنصر LoudnessCodecController
من خلال
استدعاء طريقة المصنع create مع معرّف جلسة المحتوى الصوتي من AudioTrack
المرتبط، ما يؤدي بدوره إلى
بدء تطبيق تعديلات الصوت تلقائيًا. يمكنك تمرير
OnLoudnessCodecUpdateListener
لتعديله أو فلترته
معاملات ارتفاع الصوت قبل تطبيقها
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 لاستخدام
واجهات برمجة تطبيقات LoudnessCodecController
من أجل دمج سلس للتطبيقات
أجهزة MIDI 2.0 الافتراضية
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.
فك ترميز برامج AV1 بشكل أكثر فعالية
dav1d 是 VideoLAN 推出的热门 AV1 软件解码器,适用于不支持硬件 AV1 解码的 Android 设备。与旧版 AV1 软件解码器相比,dav1d 的性能最高可提升 3 倍,让更多用户(包括一些低端和中端设备)能够播放高清 AV1 视频。
您的应用需要选择启用 dav1d,方法是通过名称 "c2.android.av1-dav1d.decoder"
调用它。在后续更新中,dav1d 将成为默认的 AV1 软件解码器。此支持已标准化,并向后移植到收到 Google Play 系统更新的 Android 11 设备。
إنتاجية المطوّرين وأدواتهم
مع أنّ معظم جهودنا لتحسين إنتاجيتك تركّز على أدوات مثل استوديو Android وJetpack Compose ومكتبات Android Jetpack، نسعى دائمًا إلى إيجاد طرق في المنصة لمساعدتك في تحقيق أهدافك بسهولة أكبر.
تعديلات OpenJDK 17
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
Android 15 includes substantial improvements to the PdfRenderer
APIs. Apps can incorporate advanced features such as rendering
password-protected files, annotations, form editing,
searching, and selection with copy. Linearized PDF
optimizations are supported to speed local PDF viewing and reduce resource use.
The Jetpack PDF library uses these APIs to simplify adding PDF
viewing capabilities to your app.

The PdfRenderer
has been moved to a module that can be updated using Google
Play system updates independent of the platform release, and we're supporting
these changes back to Android 11 (API level 30) by creating a compatible
pre-Android 15 version of the API surface, called
PdfRendererPreV
.
تحسينات على التبديل التلقائي للغات
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.
تحسين واجهة برمجة التطبيقات للخطوط المتغيّرة OpenType
Android 15 improves the usability of the OpenType variable font. You can create
a FontFamily
instance from a variable font without specifying weight axes
with the buildVariableFamily
API. The text renderer overrides the value
of wght
axis to match the displaying text.
Using the API simplifies the code for creating a Typeface
considerably:
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();
Previously, to create the same Typeface
, you would need much more code:
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();
Here's an example of how a Typeface
created with both the old and new APIs
renders:
In this example, the Typeface
created with the old API doesn't have the
capability to create accurate font weights for the 350, 450, 550 and 650
Font
instances, so the renderer falls back to the closest weight. So in
this case, 300 is rendered instead of 350, 400 is rendered instead of 450, and
so on. By contrast, the Typeface
created with the new APIs dynamically creates
a Font
instance for a given weight, so accurate weights are rendered for 350,
450, 550, and 650 as well.
عناصر التحكّم الدقيقة في فواصل الأسطر
بدءًا من Android 15، يمكن لرمز TextView
وفاصل السطر الأساسي
الحفاظ على الجزء المحدّد من النص في السطر نفسه لتحسين قراءة النص. يمكنك الاستفادة من هذا التخصيص لفاصل السطر باستخدام علامة
<nobreak>
في موارد السلاسل أو
createNoBreakSpan
. بالمثل، يمكنك منع الواصلة بين الكلمات باستخدام العلامة <nohyphen>
أو العلامة createNoHyphenationSpan
.
على سبيل المثال، لا يتضمّن مورد السلسلة التالي فاصل سطر، ويؤدي إلى عرض النص "Pixel 8 Pro" مقطوعًا في مكان غير مرغوب فيه:
<resources>
<string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>
في المقابل، يتضمّن مورد السلسلة هذا العلامة <nobreak>
التي تلتف حول العبارة "Pixel 8 Pro" وتمنع استخدام فواصل الأسطر:
<resources>
<string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>
يظهر الفرق في طريقة عرض هذه السلاسل في الصور التالية:

<nobreak>

<nobreak>
أرشفة التطبيقات
تم الإعلان عن إتاحة أرشفة التطبيقات في Android وGoogle Play أخيرًا عام، ما يتيح للمستخدمين إخلاء بعض المساحة من خلال إزالة التطبيقات المستخدمة بشكل غير متكرر من الجهاز الذي تم نشره باستخدام تطبيق Android حزمة على Google Play. يتضمّن نظام التشغيل Android 15 ميزة أرشفة التطبيقات وإلغاء أرشفتها على مستوى نظام التشغيل، ما يسهّل على جميع متاجر التطبيقات تنفيذ هذه الميزة.
يمكن للتطبيقات التي لديها إذن REQUEST_DELETE_PACKAGES
طلب البيانات من
PackageInstaller
requestArchive
لطلب أرشفة
حزمة تطبيق مثبَّتة تؤدي إلى إزالة حزمة APK وأي ملفات مخزَّنة مؤقتًا ولكنها تظل قائمة
بيانات المستخدمين. يتم عرض التطبيقات المؤرشفة كتطبيقات قابلة للعرض من خلال واجهات برمجة التطبيقات
LauncherApps
، وسيظهر للمستخدمين تنسيق واجهة مستخدم يُبرز أنّه تم أرشفة
هذه التطبيقات. إذا نقر أحد المستخدمين على تطبيق مؤرشَف، يكون أداة التثبيت المسؤولة
طلبًا لـ إخراجه من الأرشيف، ويمكن إكمال عملية استعادته
المراقبة بواسطة بث ACTION_PACKAGE_ADDED
.
تفعيل الوضع 16 كيلوبايت على جهاز باستخدام خيارات المطوّرين

فعِّل خيار المطوّر التشغيل مع صفحات حجمها 16 كيلوبايت لتشغيل الجهاز في الوضع الذي يستخدم صفحات بحجم 16 كيلوبايت.
بدءًا من الإصدار 1 من حزمة الإصدارات التجريبية العامة (QPR1) لنظام التشغيل Android 15، يمكنك استخدام خيار المطوّرين المتاح على أجهزة معيّنة لتشغيل الجهاز في وضع 16 كيلوبايت وإجراء اختبار على الجهاز. قبل استخدام خيار المطوّرين، انتقِل إلى الإعدادات > النظام > تحديثات البرامج وطبِّق أي تحديثات متوفّرة.
يتوفّر خيار المطوّر هذا على الأجهزة التالية:
Pixel 8 وPixel 8 Pro (مع الإصدار 1 من حزمة إصلاح الأخطاء QPR لنظام التشغيل Android 15 أو إصدار أحدث)
Pixel 8a (مع الإصدار 1 من حزمة الإصدارات ربع السنوية لنظام Android 15 أو إصدار أحدث)
Pixel 9 وPixel 9 Pro وPixel 9 Pro XL (مع الإصدار التجريبي 2 من حزمة QPR2 لنظام التشغيل Android 15 أو إصدار أحدث)
الرسومات
يوفّر Android 15 أحدث التحسينات على الرسومات، بما في ذلك ANGLE وإضافات إلى نظام رسومات Canvas.
تحديث طريقة وصول Android إلى وحدة معالجة الرسومات
与早期相比,Android 硬件已经有了很大的进步。早期,核心操作系统在单个 CPU 上运行,并且使用基于固定功能流水线的 API 访问 GPU。从 Android 7.0(API 级别 24)开始,NDK 中就提供了 Vulkan® 图形 API,其较低级别的抽象更好地反映了现代 GPU 硬件,可更好地扩缩以支持多个 CPU 核心,并可降低 CPU 驱动程序开销,从而提升应用性能。所有现代游戏引擎都支持 Vulkan。
Vulkan 是 Android 与 GPU 的首选接口。因此,Android 15 包含 ANGLE 作为可选层,用于在 Vulkan 基础上运行 OpenGL® ES。改用 ANGLE 将标准化 Android OpenGL 实现,提高兼容性,在某些情况下还有助于提升性能。在 Android 15 中,您可以依次前往设置 -> 系统 -> 开发者选项 -> 实验性功能:启用 ANGLE,启用开发者选项,以便通过 ANGLE 测试 OpenGL ES 应用的稳定性和性能。
Android ANGLE on Vulkan 路线图

为了简化 GPU 堆栈,我们今后将在更多新设备上将 ANGLE 作为 GL 系统驱动程序提供,未来 OpenGL/ES 将只能通过 ANGLE 获得支持。尽管如此,我们计划继续在所有设备上支持 OpenGL ES。
建议的后续措施
使用开发者选项为 OpenGL ES 选择 ANGLE 驱动程序,然后测试您的应用。对于新项目,我们强烈建议您为 C/C++ 使用 Vulkan。
تحسينات على Canvas
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.
الأداء والبطارية
يواصل نظام التشغيل Android التركيز على مساعدتك في تحسين أداء تطبيقاتك وجودتها. يقدِّم نظام التشغيل Android 15 واجهات برمجة تطبيقات تساعد في تنفيذ المهام في تطبيقك بكفاءة أكبر، وتحسين أداء التطبيق، وجمع إحصاءات حول تطبيقاتك.
للاطّلاع على أفضل الممارسات التي تساهم في الحفاظ على البطارية وتصحيح أخطاء استخدام الشبكة والطاقة والحصول على تفاصيل حول كيفية تحسين كفاءة البطارية عند تنفيذ العمل في الخلفية في نظام التشغيل Android 15 والإصدارات الحديثة من Android، يمكنك مشاهدة جلسة تحسين كفاءة البطارية عند تنفيذ العمل في الخلفية على Android من مؤتمر Google I/O.
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.
معلومات مفصّلة عن حجم التطبيق
منذ الإصدار 8.0 من Android (المستوى 26 لواجهة برمجة التطبيقات)، يتضمّن Android واجهة برمجة التطبيقات
StorageStats.getAppBytes
التي تلخّص حجم التطبيق المثبَّت كعدد واحد من البايتات، وهو مجموع حجم حزمة APK وحجم الملفات المستخرَجة من حزمة APK والملفات التي تم إنشاؤها على
الجهاز، مثل الرموز البرمجية المجمَّعة مسبقًا (AOT). لا يقدّم هذا الرقم معلومات مفيدة بشأن كيفية استخدام تطبيقك لمساحة التخزين.
يضيف نظام التشغيل Android 15 واجهة برمجة التطبيقات
StorageStats.getAppBytesByDataType([type])
، التي تتيح
لك الحصول على إحصاءات عن كيفية استخدام تطبيقك لكل هذه المساحة، بما في ذلك عمليات تقسيم ملف APK، والرموز البرمجية ذات الصلة بميزة AOT والتسريع، والبيانات الوصفية لملف dex، والمكتبات، والملفات الشخصية الإرشادية.
تحديد المواصفات الشخصية لصاحب البيانات من خلال التطبيق
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
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
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.
الخصوصية
يتضمّن Android 15 مجموعة متنوّعة من الميزات التي تساعد مطوّري التطبيقات في حماية خصوصية المستخدمين.
رصد تسجيل الشاشة
Android 15 增加了对应用的支持,以检测 正在录制。每当应用转换时,系统都会调用回调 在屏幕录制内容中处于可见与隐藏状态之间。如果正在记录注册进程的 UID 拥有的 activity,则系统会将应用视为可见。这样一来,如果您的应用执行敏感操作,您就可以告知用户正在录制他们的操作。
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)
}
إمكانيات IntentFilter الموسّعة
Android 15 builds in support for more precise Intent
resolution through
UriRelativeFilterGroup
, which contains a set of
UriRelativeFilter
objects that form a set of Intent
matching rules that must each be satisfied, including URL query parameters, URL
fragments, and blocking or exclusion rules.
These rules can be defined in the AndroidManifest
XML file with the
<uri-relative-filter-group>
tag, which can optionally include an
android:allow
tag. These tags can contain <data>
tags that use existing data
tag attributes as well as the android:query
and android:fragment
attributes.
Here's an example of the AndroidManifest
syntax:
<intent-filter android:autoVerify="true">
<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:host="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>
المساحة الخاصة
借助私密空间,用户可以在设备上创建一个单独的空间,在额外的身份验证层保护下,防止敏感应用遭到窥探。私密空间使用单独的用户个人资料。用户可以选择使用设备锁定方式或为私密空间使用单独的锁定方式。
私密空间中的应用会显示在启动器的单独容器中,并且当私密空间处于锁定状态时,这些应用不会显示在“最近用过”视图、通知、“设置”和其他应用中。用户生成的内容和下载的内容(例如媒体内容或文件)以及账号在私密空间和主空间之间是分开的。在私密空间处于解锁状态时,您可以使用系统 Sharesheet 和照片选择器向应用授予对各个空间中内容的访问权限。
用户无法将现有应用及其数据移至私密空间。相反,用户可以在私密空间中选择安装选项,以便使用他们偏好的任意应用商店安装应用。私密空间中的应用会作为主空间中任何应用的单独副本进行安装(同一应用的新副本)。
当用户锁定私密空间时,系统会停止该个人资料。在个人资料停止运行时,私密空间中的应用将不再处于活动状态,无法执行前台或后台活动,包括显示通知。
我们建议您使用私密空间测试应用,以确保应用能按预期运行,尤其是当您的应用属于以下某一类别时:
- 具有工作资料逻辑的应用:假定其应用的任何已安装副本(不在主资料中)均位于工作资料中。
- 医疗应用
- 启动器应用
- 应用商店应用
طلب آخر اختيار للمستخدم في ما يخصّ إذن الوصول إلى "الصور المحدّدة"
现在,如果应用获得了部分访问权限,则只能突出显示最近选择的照片和视频。此功能可以改善频繁请求访问照片和视频的应用的用户体验。如需在应用中使用此功能,请在通过 ContentResolver
查询 MediaStore
时启用 QUERY_ARG_LATEST_SELECTION_ONLY
参数。
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
Android 15 includes the latest Android Ad Services extensions, incorporating the latest version of the Privacy Sandbox on Android. This addition is part of our work to develop technologies that improve user privacy and enable effective, personalized advertising experiences for mobile apps. Our privacy sandbox page has more information about the Privacy Sandbox on Android developer preview and beta programs to help you get started.
Health Connect
Android 15 集成了与 Health Connect by Android 相关的最新扩展程序。Health Connect by Android 是一个安全的集中式平台,可用于管理和共享应用收集的健康与健身数据。此次更新 增加了对健身、 营养、体表温度、训练计划等。
体表温度追踪功能让用户可以更精确地存储和分享体表温度 来自穿戴式设备或其他跟踪设备的体温数据。
训练计划是一种结构化的锻炼计划,可帮助用户实现健身目标。训练计划支持各种完成和表现目标:
如需详细了解 Android 中 Health Connect 的最新更新,请参阅 利用 Android 打造自适应体验 健康演讲。
مشاركة شاشة التطبيق
يتيح نظام التشغيل Android 15 مشاركة شاشة التطبيق كي يتمكّن المستخدمون من مشاركة أو تسجيل
نافذة التطبيق فقط بدلاً من شاشة الجهاز بالكامل. تم تفعيل هذه الميزة لأول مرة في ملف APK لنظام التشغيل
Android 14 QPR2، وتشمل MediaProjection
طلبات إعادة الاتصال التي تسمح لتطبيقك
بتخصيص تجربة مشاركة شاشة التطبيق. يُرجى العلم أنّه بالنسبة إلى التطبيقات التي تستهدف الإصدار 14 من Android (المستوى 34 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث، يجب الحصول على موافقة المستخدم لكل جلسة رصد MediaProjection
.
تجربة المستخدم وواجهة مستخدم النظام
يمنح نظام التشغيل Android 15 مطوّري التطبيقات والمستخدمين المزيد من التحكّم والمرونة في إعداد أجهزتهم بما يتناسب مع احتياجاتهم.
لمزيد من المعلومات حول كيفية استخدام أحدث التحسينات في Android 15 لتحسين تجربة المستخدم في تطبيقك، يمكنك الاطّلاع على جلسة تحسين تجربة المستخدم في تطبيق Android من مؤتمر Google I/O.
معاينات تطبيقات مصغّرة أكثر تفصيلاً باستخدام Generated Previews API
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.
نافذة ضمن النافذة
Android 15 引入了画中画 (PiP) 方面的变更,确保实现 更流畅的过渡效果。对于在主界面上叠加界面元素的应用,这将非常有用,因为这些界面元素会进入 PiP。
开发者使用 onPictureInPictureModeChanged
回调来定义逻辑
用于切换叠加界面元素的可见性。此回调是
在画中画进入或退出动画播放完毕时触发。距离开始还有
Android 15 中,PictureInPictureUiState
类包含另一种状态。
在此界面状态下,以 Android 15(API 级别 35)为目标平台的应用将遵守
使用以下参数调用 Activity#onPictureInPictureUiStateChanged
回调:
isTransitioningToPip()
。还有
在画中画模式下,有很多与应用无关的界面元素,
包含建议、
评分和标题当应用进入画中画模式时,请使用
onPictureInPictureUiStateChanged
回调以隐藏这些界面元素。当
应用从画中画窗口进入全屏模式,使用
onPictureInPictureModeChanged
回调以取消隐藏这些元素,如
请参阅以下示例:
override fun onPictureInPictureUiStateChanged(pipState: PictureInPictureUiState) {
if (pipState.isTransitioningToPip()) {
// Hide UI elements
}
}
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) {
if (isInPictureInPictureMode) {
// Unhide UI elements
}
}
不相关界面元素的快速可见性切换(适用于画中画窗口)有助于 确保画中画播放动画更流畅、无闪烁。
قواعد محسّنة لميزة "عدم الإزعاج"
AutomaticZenRule
يسمح للتطبيقات بتخصيص "الانتباه"
قواعد الإدارة (عدم الإزعاج) وتحديد وقت التفعيل أو الإيقاف
معهم. ويقدم Android 15 تحسينات كبيرة على هذه القواعد بهدف تحسين
تجربة المستخدم. تم تضمين التحسينات التالية:
- إضافة أنواع إلى
AutomaticZenRule
، ما يسمح للنظام بتطبيق إجراءات خاصة التعامل مع بعض القواعد. - إضافة رمز إلى
AutomaticZenRule
، ما يساعد في تمييز الأوضاع بشكلٍ أفضل - إضافة سلسلة
triggerDescription
إلىAutomaticZenRule
تصف الشروط التي يجب أن تصبح فيها القاعدة نشطة للمستخدم - تمت الإضافة
ZenDeviceEffects
علىAutomaticZenRule
، ما يسمح للقواعد بتشغيل أشياء مثل التدرج الرمادي العرض أو الوضع الليلي أو تعتيم الخلفية.
ضبط VibrationEffect لقنوات الإشعارات
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.
شريحة شريط الحالة لعرض الوسائط والإيقاف التلقائي
Media projection can expose private user information. A new, prominent status bar chip makes users aware of any ongoing screen projection. Users can tap the chip to stop screen casting, sharing, or recording. Also, for a more intuitive user experience, any in‑progress screen projection now automatically stops when the device screen is locked.

الشاشات الكبيرة وأشكال الأجهزة
يوفّر نظام التشغيل Android 15 لتطبيقاتك إمكانية الاستفادة إلى أقصى حدّ من أشكال أجهزة Android، بما في ذلك الشاشات الكبيرة والأجهزة القابلة للطي والقلب.
تحسين تعدُّد المهام على الشاشات الكبيرة
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.
إمكانية استخدام الشاشة الخارجية
يمكن لتطبيقك تعريف خاصية يستخدمها نظام التشغيل Android 15 لسماحApplication
أو Activity
بعرض المحتوى على الشاشات الصغيرة المخصّصة للغلاف في الأجهزة القابلة للطي المتوافقة. هذه الشاشات صغيرة جدًا لكي يتم
اعتبارها استهدافات متوافقة لتشغيل تطبيقات Android عليها، ولكن يمكن لتطبيقك
تفعيل توافقها، ما يجعل تطبيقك متاحًا في المزيد من الأماكن.
إمكانية الاتصال
يعدّل Android 15 النظام الأساسي لمنح تطبيقك إمكانية الوصول إلى أحدث التطورات في تكنولوجيات الاتصال والشبكات اللاسلكية.
التوافق مع الأقمار الصناعية
يواصل نظام Android 15 توسيع نطاق توفّر المنصة للاتصال عبر الأقمار الصناعية ويضمّ بعض عناصر واجهة المستخدم لضمان تجربة مستخدم متّسقة على مستوى منظومة الاتصال عبر الأقمار الصناعية.
يمكن للتطبيقات استخدام ServiceState.isUsingNonTerrestrialNetwork()
لرصد الحالات التي يكون فيها الجهاز متصلاً بأحد الأقمار الصناعية، ما يمنح التطبيقات المزيد من المعلومات عن سبب عدم توفّر خدمات الشبكة الكاملة. بالإضافة إلى ذلك، يقدّم الإصدار 15 من Android
توافقًا مع تطبيقات الرسائل القصيرة ورسائل الوسائط المتعددة، بالإضافة إلى تطبيقات RCS المحمَّلة مسبقًا لاستخدام
الاتصال عبر الأقمار الصناعية لإرسال الرسائل واستلامها.

تجارب أكثر سلاسة باستخدام تقنية NFC
Android 15 is working to make the tap to pay experience more seamless and
reliable while continuing to support Android's robust NFC app ecosystem. On
supported devices, apps can request the NfcAdapter
to enter
observe mode, where the device listens but doesn't respond to NFC
readers, sending the app's NFC service PollingFrame
objects to process. The PollingFrame
objects can be used to auth
ahead of the first communication to the NFC reader, allowing for a one tap
transaction in many cases.
In addition, apps can register a filter on supported devices so they can be notified of polling loop activity, which allows for smooth operation with multiple NFC-aware applications.
دور المحفظة
Android 15 introduces a Wallet role that allows tighter integration with the user's preferred wallet app. This role replaces the NFC default contactless payment setting. Users can manage the Wallet role holder by navigating to Settings > Apps > Default Apps.
The Wallet role is used when routing NFC taps for AIDs registered in the payment category. Taps always go to the Wallet role holder unless another app that is registered for the same AID is running in the foreground.
This role is also used to determine where the Wallet Quick Access tile should go when activated. When the role is set to "None", the Quick Access tile isn't available and payment category NFC taps are only delivered to the foreground app.
الأمان
يساعدك نظام التشغيل Android 15 في تعزيز أمان تطبيقك وحماية بياناته، كما يتيح للمستخدمين المزيد من الشفافية والتحكّم في بياناتهم. يمكنك مشاهدة جلسة الحفاظ على أمان المستخدمين على Android من مؤتمر Google I/O للتعرّف على المزيد من الإجراءات التي نتّخذها لتحسين وسائل حماية المستخدمين وحماية تطبيقك من التهديدات الجديدة.
دمج Credential Manager مع ميزة "الملء التلقائي"
بدءًا من الإصدار 15 من نظام التشغيل Android، يمكن للمطوّرين ربط طرق عرض معيّنة، مثل حقل اسم المستخدم أو حقل كلمة المرور بطلبات "مدير بيانات الاعتماد"، ما يسهّل تقديم تجربة مخصّصة للمستخدم أثناء عملية تسجيل الدخول. عندما يركز المستخدم على أحد هذه العروض، يتم إرسال طلب مقابل إلى مدير بيانات الاعتماد. يتم تجميع بيانات الاعتماد الناتجة على مستوى جميع مقدّمي الخدمات وعرضها في واجهات مستخدم النسخ الاحتياطي لملء البيانات تلقائيًا، مثل الاقتراحات المضمّنة أو الاقتراحات في القوائم المنسدلة. مكتبة Jetpack androidx.credentials هي نقطة النهاية المفضّلة للمطوّرين لاستخدامها، وستتوفّر قريبًا لتحسين هذه الميزة بشكلٍ أكبر في Android 15 والإصدارات الأحدث.
دمج ميزة "نقرة واحدة لتسجيل الدخول أو إنشاء حساب" مع طلبات المقاييس الحيوية
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.
إدارة المفاتيح للتشفير التام بين الأطراف
نقدّم E2eeContactKeysManager
في Android 15، وهو تنسيق ملف يسهّل التشفير التام بين الأطراف (E2EE) في تطبيقات Android من خلال توفير واجهة برمجة تطبيقات على مستوى نظام التشغيل لتخزين المفاتيح العامة للتشفير.
تم تصميم E2eeContactKeysManager
للدمج مع تطبيق
جهات الاتصال في النظام الأساسي لمنح المستخدمين طريقة مركزية لإدارة مفاتيحهم المفتوحة
لجهات الاتصال وإثبات ملكيتها.
عمليات التحقّق من الأذونات على معرّفات الموارد المنتظمة للمحتوى
Android 15 引入了一组用于对内容 URI 执行权限检查的 API:
Context.checkContentUriPermissionFull
:此选项会对内容 URI 执行完整权限检查。Activity
清单属性requireContentUriPermissionFromCaller
:此属性会在 activity 启动时对提供的内容 URI 强制执行指定权限。Activity
调用方的ComponentCaller
类:此类表示启动 activity 的应用。
تسهيل الاستخدام
يضيف Android 15 ميزات تعمل على تحسين إمكانية الوصول للمستخدمين.
تحسينات على لغة برايل
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.
التوافق مع أسواق عالمية
يضيف Android 15 ميزات وإمكانات تكمل تجربة المستخدم عند استخدام الجهاز بلغات مختلفة.
خط CJK متغيّر
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.

ضبط المسافات بين الأحرف
Starting with Android 15, text can be justified utilizing letter spacing by
using JUSTIFICATION_MODE_INTER_CHARACTER
. Inter-word justification was
first introduced in Android 8.0 (API level 26), and inter-character
justification provides similar capabilities for languages that use the
whitespace character for segmentation, such as Chinese, Japanese, and others.

JUSTIFICATION_MODE_NONE
.
JUSTIFICATION_MODE_NONE
.
JUSTIFICATION_MODE_INTER_WORD
.
JUSTIFICATION_MODE_INTER_WORD
.
JUSTIFICATION_MODE_INTER_CHARACTER
.
JUSTIFICATION_MODE_INTER_CHARACTER
.إعدادات الفواصل التلقائية بين الأسطر
بدأ Android في إتاحة فواصل الأسطر المستندة إلى العبارة باللغتين اليابانية والكورية
Android 13 (المستوى 33) ومع ذلك، وبينما تعمل فواصل الأسطر المستندة إلى عبارة على تحسين
لسهولة قراءة السطور القصيرة من النص، فإنها لا تعمل بشكل جيد مع الأسطر الطويلة من النص.
في Android 15، يمكن للتطبيقات تطبيق فواصل الأسطر المستندة إلى العبارة على الأسطر القصيرة فقط.
من النص، باستخدام LINE_BREAK_WORD_STYLE_AUTO
. يحدد هذا الخيار أفضل خيار نمط كلمة للنص.
بالنسبة إلى الأسطر القصيرة من النص، يتم استخدام فواصل الأسطر المستندة إلى العبارة، وتعمل بالطريقة نفسها
كـ LINE_BREAK_WORD_STYLE_PHRASE
، كما هو موضح في
الصورة التالية:

LINE_BREAK_WORD_STYLE_AUTO
يطبق فواصل الأسطر المستندة إلى العبارة لتحسين سهولة قراءة النص.
هذا مماثل لتطبيق
LINE_BREAK_WORD_STYLE_PHRASE
.بالنسبة إلى أسطر النص الأطول، يستخدم LINE_BREAK_WORD_STYLE_AUTO
نمط كلمات بدون
فاصل سطر، ويعمل بالطريقة نفسها التي يعمل بها
LINE_BREAK_WORD_STYLE_NONE
، كما هو موضّح في
الصورة التالية:

LINE_BREAK_WORD_STYLE_AUTO
عدم تطبيق أي نمط من أنماط الكلمات بفواصل أسطر لتحسين إمكانية قراءة النص.
هذا مماثل لتطبيق
LINE_BREAK_WORD_STYLE_NONE
.خط إضافي للغة اليابانية Hentaigana
在 Android 15 中,旧版日语平假名(也称为 Hentaigana)字体文件 捆绑在一起半形人物的独特形状可以增加 风格或设计独特的风格 传播和理解古代日本文件的能力。

VideoLAN cone Copyright (c) 1996-2010 VideoLAN. This logo or a modified version may be used or modified by anyone to refer to the VideoLAN project or any product developed by the VideoLAN team, but does not indicate endorsement by the project.
Vulkan and the Vulkan logo are registered trademarks of the Khronos Group Inc.
OpenGL is a registered trademark and the OpenGL ES logo is a trademark of Hewlett Packard Enterprise used by permission by Khronos.