يقدّم Android 15 ميزات وواجهات برمجة تطبيقات جديدة رائعة للمطوّرين. تلخص الأقسام التالية هذه الميزات لمساعدتك في بدء استخدام واجهات برمجة التطبيقات ذات الصلة.
للحصول على قائمة مفصّلة بواجهات برمجة التطبيقات الجديدة والمعدّلة والمُزالة، يمكنك الاطّلاع على تقرير الاختلافات في واجهة برمجة التطبيقات. للحصول على تفاصيل حول واجهات برمجة التطبيقات الجديدة، يُرجى الانتقال إلى مرجع واجهة برمجة تطبيقات Android، حيث يتم تمييز واجهات برمجة التطبيقات الجديدة لمستوى الرؤية. للتعرّف أيضًا على الجوانب التي قد تؤثر فيها تغييرات النظام الأساسي في تطبيقاتك، احرص على مراجعة تغييرات السلوك في الإصدار 15 من نظام التشغيل Android والتي تؤثر في التطبيقات عند استهدافها بالإصدار 15 من نظام التشغيل Android وتغييرات السلوك التي تؤثر في جميع التطبيقات بغض النظر عنtargetSdkVersion
.
الكاميرا والوسائط
يشتمل Android 15 على مجموعة متنوعة من الميزات التي تحسّن تجربة الكاميرا والوسائط، وتتيح لك الوصول إلى أدوات وأجهزة لمساعدة صنّاع المحتوى على تحويل رؤيتهم إلى الواقع على Android.
للحصول على مزيد من المعلومات حول أحدث الميزات وحلول المطوّرين لوسائط وكاميرا Android، يمكنك الاطّلاع على المقالة إنشاء تجارب وسائط وكاميرات Android الحديثة من مؤتمر Google I/O.
تعزيز الإضاءة المنخفضة
يقدّم Android 15 ميزة تعزيز الإضاءة المنخفضة، وهو وضع جديد للإضاءة التلقائية يتوفّر لكل من الكاميرا 2 وإضافة الكاميرا في الوضع الليلي. تعمل ميزة "تعزيز الإضاءة المنخفضة" على ضبط مستوى تعرض بث معاينة البث في ظروف الإضاءة المنخفضة. ويختلف ذلك عن الطريقة التي تنشئ بها إضافة الكاميرا في الوضع الليلي الصور الثابتة، لأن الوضع الليلي يدمج مجموعة من الصور لإنشاء صورة واحدة محسَّنة. عندما يعمل الوضع الليلي بشكل جيد للغاية لإنشاء صورة ثابتة، لا يمكنه إنشاء بث مستمر للإطارات، ولكن يمكن لميزة "تعزيز الإضاءة المنخفضة" إجراء ذلك. وبالتالي، تتيح ميزة "تعزيز الإضاءة المنخفضة" إمكانات جديدة للكاميرا، مثل:
- توفير معاينة محسّنة للصور، ليتمكّن المستخدمون من تأطير الصور ذات الإضاءة المنخفضة بشكل أفضل
- جارٍ مسح رموز الاستجابة السريعة ضوئيًا في الإضاءة المنخفضة
إذا فعّلت ميزة "تعزيز الإضاءة المنخفضة"، يتم تشغيلها تلقائيًا عند انخفاض مستوى الإضاءة، ويتم إيقافها عند ارتفاع مستوى الإضاءة.
يمكن للتطبيقات تسجيل فيديو من بث المعاينة في ظروف الإضاءة المنخفضة لحفظ فيديو سطوع.
لمزيد من المعلومات، يمكنك الاطّلاع على تعزيز الإضاءة المنخفضة.
عناصر التحكّم في الكاميرا داخل التطبيقات
يُضيف Android 15 إضافة جديدة لمزيد من التحكّم في أجهزة الكاميرا وخوارزمياته على الأجهزة المتوافقة:
- تعديلات متقدّمة على قوة الفلاش، ما يتيح التحكّم الدقيق في شدة الفلاش
في وضعَي
SINGLE
وTORCH
أثناء التقاط الصور.
التحكّم في هامش النمو ضمن النطاق العالي الديناميكية
يختار نظام التشغيل Android 15 هامش HDR المناسب لإمكانات الجهاز الأساسية وعمق البت في اللوحة. بالنسبة إلى الصفحات التي تحتوي على الكثير من المحتوى بنطاق SDR، مثل تطبيق مراسلة يعرض صورة مصغّرة واحدة بنطاق عالي الديناميكية، يمكن أن يؤثر هذا السلوك سلبًا في السطوع الملحوظ لمحتوى SDR. يتيح لك نظام التشغيل Android 15 التحكّم في هامش HDR من خلال setDesiredHdrHeadroom
لتحقيق التوازن بين المحتوى العادي بنطاق عالي الديناميكية (SDR) والمحتوى العالي الديناميكية (HDR).
![](https://developer.android.com/static/about/versions/15/images/hdr-headroom.png?authuser=5&hl=ar)
التحكّم في مستوى ارتفاع الصوت
يتوافق نظام التشغيل Android 15 مع معيار CTA-2075 لصوت ارتفاع الصوت لمساعدتك في تجنُّب تناقضات ارتفاع الصوت وضمان عدم اضطرار المستخدمين إلى ضبط مستوى الصوت باستمرار عند التبديل بين المحتوى. ويستفيد النظام من الخصائص المعروفة لأجهزة الإخراج (سماعات الرأس ومكبّر الصوت) مع البيانات الوصفية لمستوى الصوت المتوفرة في محتوى الصوت AAC لضبط ارتفاع الصوت ومستويات ضغط النطاق الديناميكي بذكاء.
لتفعيل هذه الميزة، عليك التأكّد من توفّر البيانات الوصفية لارتفاع الصوت في محتوى AAC وتفعيل ميزة النظام الأساسي في تطبيقك. لإجراء ذلك، يمكنك إعداد عنصر LoudnessCodecController
من خلال استدعاء طريقة الإنشاء على الإعدادات الأصلية باستخدام معرّف الجلسة الصوتية من 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 إمكانية الاتصال بأجهزة MIDI 2.0 باستخدام USB التي تتواصل باستخدام حِزم MIDI الشاملة (UMP). يعمل Android 15 على توسيع نطاق دعم UMP ليشمل تطبيقات MIDI الافتراضية، ما يتيح لتطبيقات إنشاء المحتوى إمكانية التحكّم في تطبيقات جهاز التجميع كجهاز MIDI 2.0 افتراضي، تمامًا كما هو الحال مع جهاز USB MIDI 2.0.
فك ترميز برامج AV1 بشكل أكثر فعالية
إنّ برنامج dav1d، وهو برنامج فك ترميز برامج AV1 الشهير من VideoLAN، أصبح متاحًا الآن للأجهزة التي تعمل بنظام التشغيل Android التي لا تتيح فك ترميز AV1 في الأجهزة. ويزيد أداء dav1d بمقدار 3 مرات مقارنةً ببرنامج فك ترميز برامج AV1 القديم، ما يتيح تشغيل محتوى عالي الدقة AV1 للمزيد من المستخدمين، بما في ذلك بعض الأجهزة المنخفضة والمتوسطة.
في الوقت الحالي، يحتاج تطبيقك إلى الموافقة على استخدام dav1d من خلال استدعائه حسب الاسم
"c2.android.av1-dav1d.decoder"
. dav1d هو برنامج فك ترميز برنامج AV1 التلقائي في تحديث لاحق. تم توحيد هذا الدعم وتوفيره على أجهزة
Android 11 التي تتلقّى تحديثات نظام Google Play.
أدوات وإنتاجية المطوّرين
نحن نبذل جهودًا كبيرة لتحسين إنتاجيتك تتمحور حول أدوات مثل Android Studio وJetpack Compose ومكتبات Android Jetpack، فنحن نبحث دائمًا عن طرق في النظام الأساسي لمساعدتك على تحقيق رؤيتك بسهولة أكبر.
تحديثات OpenJDK 17
يواصل نظام Android 15 العمل على تحديث مكتبات Android الأساسية للتوافق مع الميزات المتوفّرة في أحدث إصدارات OpenJDK LTS.
ويتم تضمين الميزات والتحسينات الرئيسية التالية:
- التحسينات في جودة الحياة حول الموارد الاحتياطية لثاني أكسيد الكربون
- ساحات المشاركات
- طُرق
math
وstrictmath
إضافية - تحديثات حزمة
util
، بما في ذلك البيانات المتسلسلةcollection
وmap
وset
- دعم
ByteBuffer
فيDeflater
- تحديثات الأمان مثل
X500PrivateCredential
وتحديثات مفتاح الأمان
يتم تحديث واجهات برمجة التطبيقات هذه على أكثر من مليار جهاز يعمل بنظام التشغيل Android 12 (المستوى 31 من واجهة برمجة التطبيقات) والإصدارات الأحدث من خلال تحديثات نظام Google Play، ما يتيح لك استهداف أحدث ميزات البرمجة.
تحسينات على ملف PDF
يتضمن Android 15 تحسينات مهمة على واجهات برمجة التطبيقات في PdfRenderer
. يمكن أن تتضمن التطبيقات ميزات متقدّمة، مثل عرض الملفات المحمية بكلمة مرور والتعليقات التوضيحية وتعديل النماذج والبحث والاختيار بنسخة منها. تتم إتاحة تحسينات ملفات PDF
الخطية لتسريع عرض ملفات PDF المحلية وتقليل استخدام الموارد.
![](https://developer.android.com/static/about/versions/15/images/pdf-rendering.png?authuser=5&hl=ar)
لقد تم نقل PdfRenderer
إلى وحدة يمكن تحديثها باستخدام تحديثات نظام Google Play بشكل مستقل عن إصدار النظام الأساسي، ونحن نتيح
هذه التغييرات مرة أخرى على Android 11 (المستوى 30 لواجهة برمجة التطبيقات) من خلال إنشاء إصدار متوافق من واجهة برمجة التطبيقات لمرحلة ما قبل Android 15،
ويُطلق عليه اسم
PdfRendererPreV
.
نقدِّر ملاحظاتك بشأن التحسينات التي أجريناها على واجهة PdfRenderer
API، ونخطط لتسهيل دمج واجهات برمجة التطبيقات هذه في تطبيقك مع مكتبة Android Jetpack القادمة.
تحسينات التبديل التلقائي بين اللغات
أضاف نظام التشغيل Android 14 ميزة التعرّف على اللغات المتعددة على الجهاز فقط مع إمكانية
التبديل التلقائي بين اللغات، ولكن قد يؤدي ذلك إلى إسقاط الكلمات،
خاصةً عندما تبدِّل اللغات مع نسبة أقل من التوقف المؤقت بين الكلمتَين. يضيف نظام Android 15 عناصر تحكّم إضافية لمساعدة التطبيقات في ضبط هذا التبديل
حسب حالة الاستخدام الخاصة بها.
EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS
تحصر إمكانية التبديل التلقائي في بداية الجلسة الصوتية، في حين أنّ
EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES
توقِف تبديل اللغة بعد عدد محدّد من عمليات التبديل. هذه الخيارات مفيدة بشكل خاص إذا كنت تتوقع أن تكون هناك لغة واحدة منطوقة أثناء الجلسة ينبغي أن يتم التعرف عليها تلقائيًا.
واجهة برمجة تطبيقات محسّنة لـ OpenType Variable Font
يحسّن نظام التشغيل Android 15 من سهولة استخدام الخط المتغير OpenType. يمكنك الآن
إنشاء مثيل FontFamily
من خط متغيّر بدون تحديد
محور الوزن باستخدام واجهة برمجة التطبيقات buildVariableFamily
. يلغي عارض النص قيمة المحور wght
لمطابقة النص المعروض.
وباستخدام واجهة برمجة التطبيقات الجديدة، يؤدي ذلك إلى تبسيط الرمز لإنشاء Typeface
بشكل كبير:
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();
في السابق، كنت تحتاج إلى المزيد من الرموز البرمجية لإنشاء Typeface
نفسه:
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();
في ما يلي مثال على طريقة عرض Typeface
باستخدام كل من واجهات برمجة التطبيقات القديمة والجديدة:
في هذا المثال، لا تتيح واجهة برمجة التطبيقات Typeface
التي تم إنشاؤها باستخدام واجهة برمجة التطبيقات القديمة
إنشاء قيم وزن خط دقيقة للمثيلات 350 و450 و550 و650
Font
، لذلك يعود العارض إلى أقرب عرض ممكن. لذلك في هذه الحالة، يتم عرض 300 بدلاً من 350، ويتم عرض 400 بدلاً من 450، وهكذا. وعلى النقيض من ذلك، تُنشئ دالة Typeface
التي تم إنشاؤها باستخدام واجهات برمجة التطبيقات الجديدة بشكلٍ ديناميكي مثيل Font
لوزن معيّن، لذلك يتم عرض قيم الترجيح الدقيقة لـ 350 و450 و550 و650 أيضًا.
عناصر تحكّم دقيقة في فواصل الأسطر
بدءًا من نظام التشغيل 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>
يظهر الفرق في كيفية عرض هذه السلاسل في الصور التالية:
![](https://developer.android.com/static/about/versions/15/images/line-breaks-none.png?authuser=5&hl=ar)
<nobreak>
![](https://developer.android.com/static/about/versions/15/images/line-breaks-included.png?authuser=5&hl=ar)
<nobreak>
أرشفة التطبيقات
أعلن فريقا Android وGoogle Play عن دعمهما لأرشفة التطبيقات في العام الماضي، ما سمح للمستخدمين بإخلاء بعض المساحة عن طريق إزالة التطبيقات التي نادرًا ما يتم استخدامها من الجهاز والتي تم نشرها باستخدام "مجموعة حزمات تطبيق Android" على Google Play. يشمل Android 15 الآن دعمًا على مستوى نظام التشغيل لأرشفة التطبيقات وإخراجها من الأرشيف، ما يسهّل على جميع متاجر التطبيقات تنفيذ هذا الإجراء.
يمكن للتطبيقات التي لديها إذن REQUEST_DELETE_PACKAGES
استدعاء طريقة
PackageInstaller
requestArchive
لطلب أرشفة
حزمة تطبيق مثبّتة، ما يؤدي إلى إزالة حزمة APK وأي ملفات مخزَّنة مؤقتًا ولكن مع الاحتفاظ
ببيانات المستخدم. يتم عرض التطبيقات المؤرشفة كتطبيقات قابلة للعرض من خلال واجهات برمجة تطبيقات LauncherApps
، وسيرى المستخدمون معالجة واجهة المستخدم لتمييز أن هذه التطبيقات تمت أرشفتها. إذا نقر المستخدم على تطبيق من الأرشيف، سيتلقى المثبِّت المسؤول
طلبًا لإخراجه من الأرشيف، ويمكن مراقبة عملية الاستعادة
من خلال بث ACTION_PACKAGE_ADDED
.
الرسومات
يوفّر Android 15 أحدث التحسينات في الرسومات، بما في ذلك محرِّك ANGLE والإضافات إلى نظام رسومات "لوحة الرسم".
تحديث إمكانية الوصول إلى وحدة معالجة الرسومات في Android
تطورت أجهزة Android إلى حد كبير منذ بدايتها حيث كان يتم تشغيل نظام التشغيل الأساسي على وحدة معالجة مركزية واحدة، كما تم الوصول إلى وحدات معالجة الرسومات باستخدام واجهات برمجة التطبيقات استنادًا إلى المخططات ذات الوظائف الثابتة. كانت واجهة برمجة التطبيقات Vulkan® للرسومات متاحة في NDK منذ نظام Android 7.0 (المستوى 24 لواجهة برمجة التطبيقات) ذات مستوى تجريدي أدنى يعكس بشكل أفضل الأجهزة الحديثة لوحدة معالجة الرسومات، وتوسّع نطاقها بشكل أفضل لتتوافق مع نوى وحدة معالجة مركزية متعددة، وتخفض النفقات العامة لبرنامج تشغيل وحدة المعالجة المركزية (CPU)، ما يؤدي إلى تحسُّن أداء التطبيق. يتوافق Vulkan مع جميع محرّكات الألعاب الحديثة.
Vulkan هي واجهة Android المفضلة لوحدة معالجة الرسومات. وبالتالي، يتضمّن نظام التشغيل Android 15 لغة ANGLE كطبقة اختيارية لتشغيل OpenGL® ES على شبكة Vulkan. سيؤدي الانتقال إلى محرِّك ANGLE إلى توحيد تنفيذ Android OpenGL من أجل تعزيز التوافق وتحسين الأداء في بعض الحالات. يمكنك اختبار ثبات تطبيق OpenGL ES وأدائه من خلال ANGLE من خلال تفعيل خيار المطوّرين في الإعدادات -> النظام -> خيارات المطوّرين -> تجريبية: تفعيل محرِّك ANGLE على Android 15.
Android ANGLE على خارطة طريق Vulkan
![خطة تحقيق الأهداف المتعلّقة بواجهات برمجة تطبيقات وحدة معالجة الرسومات لنظام التشغيل Android.](https://developer.android.com/static/about/versions/15/images/angle-vulkan-roadmap.png?authuser=5&hl=ar)
في إطار تبسيط حزمة وحدة معالجة الرسومات، سنشحن من الآن فصاعدًا محرِّك ANGLE على أنّه برنامج تشغيل نظام GL على المزيد من الأجهزة الجديدة، ومن المتوقّع أن يكون OpenGL/ES متوفرًا فقط من خلال محرِّك ANGLE في المستقبل. ومع ذلك، نخطط لمواصلة دعم OpenGL ES على جميع الأجهزة.
الخطوات التالية المقترحة
استخدِم خيارات المطوّرين لتحديد برنامج تشغيل محرِّك ANGLE على OpenGL ES واختبار تطبيقك. وبالنسبة إلى المشاريع الجديدة، ننصحك بشدة باستخدام Vulkan لـ C/C++.
تحسينات على "لوحة الرسم"
يواصل Android 15 تحديث نظام رسومات Canvas من Android بإمكانات جديدة:
Matrix44
توفّر مصفوفة 4×4 لتحويل الإحداثيات التي يجب استخدامها عندما تريد معالجة اللوحة في العرض الثلاثي الأبعاد.- يتقاطع
clipShader
مع المقطع الحالي مع التظليل المحدد، بينما يضبطclipOutShader
المقطع على الفرق بين المقطع الحالي وأداة التظليل، حيث يتعامل كل منهما مع أداة التظليل على أنه قناع ألفا. يدعم هذا رسم الأشكال المعقدة بكفاءة.
الأداء والبطارية
يواصل Android تركيزه على مساعدتك في تحسين أداء تطبيقاتك وجودتها. يقدِّم Android 15 واجهات برمجة تطبيقات جديدة تساعد في زيادة كفاءة المهام في تطبيقك من حيث التنفيذ وتحسين أداء التطبيق وجمع إحصاءات حول تطبيقاتك.
للتعرّف على أفضل الممارسات المتعلقة بتوفير استهلاك البطارية، وتصحيح أخطاء الشبكة واستخدام الطاقة، والتفاصيل حول كيفية تحسين كفاءة البطارية في الخلفية في Android 15 والإصدارات الأحدث من Android، يمكنك الاطّلاع على المقالة تحسين كفاءة العمل في الخلفية على Android من مؤتمر Google I/O.
واجهة برمجة التطبيقات ApplicationStartInfo
في الإصدارات السابقة من Android، كان بدء تشغيل التطبيق لغزًا إلى حدٍ ما. كان من الصعب تحديد ما إذا كان تطبيقك
بدأ من حالة باردة أو دافئة أو ساخنة. وكان من الصعب أيضًا معرفة المدة التي قضاها تطبيقك في مراحل الإطلاق المختلفة، مثل إجراء مراحل عملية الإطلاق، واستدعاء onCreate
، ورسم الإطار الأول، وغير ذلك. عندما تم إنشاء مثيل لصف Application
، لم تكن هناك طريقة لمعرفة ما إذا كان التطبيق قد بدأ من خلال بث أو من مقدِّم محتوى أو وظيفة أو نسخة احتياطية أو اكتمال التشغيل أو منبّه أو جهاز Activity
.
توفّر واجهة برمجة التطبيقات ApplicationStartInfo
في نظام التشغيل Android 15
كل هذا وأكثر. يمكنك أيضًا اختيار إضافة الطوابع الزمنية الخاصة بك إلى التدفق
للمساعدة في جمع بيانات التوقيت في مكان واحد. بالإضافة إلى جمع المقاييس، يمكنك استخدام ApplicationStartInfo
للمساعدة مباشرةً في تحسين عملية بدء تشغيل التطبيق. على سبيل المثال، يمكنك التخلص من إنشاء مثيل مكلفة للمكتبات ذات الصلة بواجهة المستخدم
داخل صف Application
عند بدء تشغيل التطبيق بسبب
بث البث.
معلومات تفصيلية عن حجم التطبيق
منذ إصدار Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات)، ضمّن نظام Android واجهة برمجة التطبيقات
StorageStats.getAppBytes
التي تلخّص حجم التطبيق المثبَّت على شكل عدد واحد من وحدات البايت، وهو مجموع حجم حزمة APK
وحجم الملفات المستخرَجة من حزمة APK، والملفات التي تم إنشاؤها على الجهاز، مثل الرموز البرمجية المجمّعة مسبقًا (AOT). لا يقدم هذا الرقم إحصاءات مفيدة جدًا
في ما يتعلق بكيفية استخدام تطبيقك للتخزين.
يضيف نظام التشغيل Android 15 واجهة برمجة التطبيقات
StorageStats.getAppBytesByDataType([type])
، التي تتيح لك الاطّلاع على إحصاءات حول كيفية استخدام تطبيقك لكل هذه المساحة، بما في ذلك أقسام ملفات APK
ورمز AOT والرمز المرتبط بالتسريع والبيانات الوصفية والمكتبات والملفات الشخصية
الإرشادية.
تحليل الملف التعريفي المُدار من خلال التطبيق
يتضمن Android 15 الفئة ProfilingManager
الجديدة التي تتيح لك جمع معلومات التحليل عن بُعد من داخل تطبيقك. ونخطط لإضافة واجهة برمجة تطبيقات Android Jetpack على نحو تبسيط عملية إنشاء طلبات التحليل، إلا أنّ واجهة برمجة التطبيقات الأساسية ستتيح جمع البيانات والملفات الشخصية للكعب وأخذ عيّنات التكدس والمزيد. توفِّر هذه الميزة معاودة الاتصال بتطبيقك مع علامة متوفرة لتحديد ملف الإخراج الذي يتم تسليمه إلى دليل ملفات تطبيقك. تفرض واجهة برمجة التطبيقات قيودًا على المعدّل لتقليل تأثير الأداء.
تحسينات قاعدة بيانات SQLite
يقدّم Android 15 واجهات برمجة تطبيقات SQLite جديدة تكشف الميزات المتقدّمة من محرّك SQLite الأساسي الذي يستهدف مشاكل محدّدة في الأداء يمكن أن تحدث في التطبيقات.
وعلى المطوّرين الرجوع إلى أفضل الممارسات لأداء SQLite للاستفادة إلى أقصى حدّ من قاعدة بيانات SQLite، وخاصةً عند العمل مع قواعد البيانات الكبيرة أو عند تشغيل طلبات بحث حساسة لوقت الاستجابة.
- المعاملات المؤجلة للقراءة فقط: عند إصدار معاملات للقراءة فقط (لا تتضمّن كشوف الحساب)، استخدِم
beginTransactionReadOnly()
وbeginTransactionWithListenerReadOnly(SQLiteTransactionListener)
لإصدار معاملاتDEFERRED
للقراءة فقط. يمكن إجراء هذه المعاملات في الوقت نفسه، وإذا كانت قاعدة البيانات في وضع WAL، يمكن إجراؤها بشكل متزامن مع معاملاتIMMEDIATE
أوEXCLUSIVE
. - عدد الصفوف والأرقام التعريفية: تمت إضافة واجهات برمجة تطبيقات جديدة لاسترداد عدد الصفوف التي تم تغييرها أو رقم تعريف آخر صف تم إدراجه بدون إصدار طلب بحث إضافي.
تعرض
getLastChangedRowCount()
عدد الصفوف التي تم إدراجها أو تعديلها أو حذفها من خلال أحدث عبارة SQL ضمن المعاملة الحالية، بينما تعرضgetTotalChangedRowCount()
العدد على الاتصال الحالي. تعرض دالةgetLastInsertRowId()
rowid
من الصف الأخير ليتم إدراجه في الاتصال الحالي. - البيانات الأولية: إصدار عبارة SQlite الأولية، مع استبعاد برامج تضمين الراحة وأي نفقات معالجة إضافية قد تتكبدها.
تحديثات "إطار عمل الأداء الديناميكي على Android"
يواصل Android 15 استثمارنا في إطار العمل الديناميكي لـ Android (ADPF)، وهو مجموعة من واجهات برمجة التطبيقات التي تتيح للألعاب والتطبيقات التي تستهلك قدرًا كبيرًا من الأداء إمكانية التفاعل مباشرةً مع أنظمة الطاقة والحرارة في أجهزة Android. على الأجهزة المتوافقة، سيضيف Android 15 إمكانات ADPF جديدة:
- وضع كفاءة استهلاك الطاقة لجلسات التلميح للإشارة إلى أنّ سلاسل المحادثات المرتبطة بها يجب أن تفضّل توفير الطاقة على الأداء، وهو أمر رائع لأعباء العمل التي تستغرق وقتًا طويلاً في الخلفية.
- يمكن تسجيل فترات عمل وحدة معالجة الرسومات ووحدة المعالجة المركزية في جلسات التلميح، ما يسمح للنظام بضبط ترددات وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات معًا لتلبية متطلبات أعباء العمل على أفضل نحو.
- حدود هامش الارتفاع الحراري لتفسير حالة التقييد الحراري المحتملة استنادًا إلى توقّعات هامش الارتفاع.
لمزيد من المعلومات حول كيفية استخدام ADPF في تطبيقاتك وألعابك، يمكنك الانتقال إلى المستندات.
الخصوصية
يتضمّن Android 15 مجموعة متنوعة من الميزات التي تساعد مطوّري التطبيقات على حماية خصوصية المستخدم.
رصد تسجيل الشاشة
يضيف نظام التشغيل Android 15 إمكانية تشغيل التطبيقات لرصد أنها يتم تسجيلها. يتم استدعاء معاودة الاتصال كلما انتقل التطبيق بين أن يكون مرئيًا أو غير مرئي ضمن تسجيل شاشة. يُعد التطبيق مرئيًا إذا كان يتم تسجيل الأنشطة التي يملكها المعرّف الفريد لعملية التسجيل. وبهذه الطريقة، إذا كان تطبيقك يجري عملية حساسة، يمكنك إبلاغ المستخدم بأنه يتم تسجيلها.
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 توفير درجة دقة أكثر دقة عند استخدام Intent
من خلال نظام
UriRelativeFilterGroup
الذي يحتوي على مجموعة من عناصر
UriRelativeFilter
التي تشكّل مجموعة من قواعد Intent
المطابِقة التي يجب استيفاء كلّ منها، بما في ذلك مَعلمات طلب البحث لعناوين URL وأجزاء
عناوين URL وقواعد الحظر أو الاستبعاد.
يمكن تحديد هذه القواعد في ملف XML AndroidManifest
باستخدام علامة <uri-relative-filter-group>
الجديدة التي يمكن أن تتضمّن علامة android:allow
بشكل اختياري. يمكن أن تحتوي هذه العلامات على علامات <data>
التي تستخدم سمات علامات البيانات الحالية، بالإضافة إلى السمتَين android:query
وandroid:fragment
الجديدتَين.
إليك مثال على بنية AndroidManifest
:
<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>
المساحة الخاصة
تتيح المساحة الخاصة للمستخدمين إنشاء مساحة منفصلة على أجهزتهم حيث يمكنهم لإبعاد التطبيقات الحساسة عن أعين المتطفلين، ضِمن طبقة إضافية من المصادقة. تستخدم المساحة الخاصة ملفًا شخصيًا منفصلاً للمستخدم. يمكن للمستخدم اختيار استخدام قفل الجهاز أو عامل قفل منفصل للمساحة الخاصة
تظهر التطبيقات في المساحة الخاصة في حاوية منفصلة في مشغّل التطبيقات يتم إخفاؤها من عرض التطبيقات الأخيرة والإشعارات والإعدادات ومن التطبيقات الأخرى عندما تكون المساحة الخاصة مقفلة. المحتوى من إنشاء المستخدمين وتنزيله (مثل الوسائط أو الملفات) والحسابات بين المساحة الخاصة المساحة الرئيسية. ورقة مشاركة النظام يمكن استخدام أداة اختيار الصور لمنح التطبيقات إمكانية الوصول إلى المحتوى. في المساحات المختلفة عند فتح قفل المساحة الخاصة
لا يمكن للمستخدمين نقل التطبيقات الحالية وبياناتهم إلى المساحة الخاصة. بدلاً من ذلك، يمكن للمستخدمين تحديد خيار تثبيت في المساحة الخاصة لتثبيت التطبيق باستخدام متجر التطبيقات الذي يفضلونه. يتم تثبيت التطبيقات في المساحة الخاصة باسم نسخ منفصلة من أي تطبيقات في المساحة الرئيسية (نسخ جديدة من التطبيق نفسه).
عندما يقفل المستخدم المساحة الخاصة، يتم إيقاف الملف الشخصي. في حين أن الملف الشخصي متوقف، ولم تعُد التطبيقات في المساحة الخاصة نشطة ولا يمكنها تنفيذ الأنشطة التي تعمل في المقدّمة أو الخلفية، بما في ذلك عرض الإشعارات
ننصحك باختبار تطبيقك مع استخدام مساحة خاصة للتأكّد من أنّ التطبيق يعمل على النحو المتوقَّع، خاصةً إذا كان تطبيقك يندرج ضمن الفئات التالية: الفئات:
- التطبيقات التي تستخدم منطق الملفات الشخصية للعمل والتي تفترض أن أي النُسخ المثبتة من تطبيقاتهم والتي ليست في الملف الشخصي الرئيسي في ملف العمل.
- التطبيقات الطبية
- تطبيقات مشغّل التطبيقات
- تطبيقات متجر التطبيقات
طلب البحث عن أحدث خيارات المستخدم للوصول إلى الصور المحددة
بإمكان التطبيقات الآن إبراز أحدث الصور والفيديوهات التي تم اختيارها فقط
عند منح إذن الوصول الجزئي إلى أذونات الوسائط. يمكن لهذه الميزة
تحسين تجربة المستخدم للتطبيقات التي تطلب بشكل متكرر
الوصول إلى الصور والفيديوهات. لاستخدام هذه الميزة في تطبيقك، فعِّل الوسيطة
QUERY_ARG_LATEST_SELECTION_ONLY
عند إجراء طلب بحث في MediaStore
من خلال 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
يتضمّن الإصدار Android 15 أحدث إضافات "خدمات إعلانات Android"، وتتضمّن أحدث إصدار من "مبادرة حماية الخصوصية" على Android. وتُعدّ هذه الإضافة جزءًا من عملنا على تطوير تقنيات جديدة تعمل على تحسين خصوصية المستخدِمِين وإتاحة تجارب إعلانية مخصَّصة وفعّالة لتطبيقات الأجهزة الجوّالة. تحتوي صفحة "مبادرة حماية الخصوصية" على مزيد من المعلومات حول "مبادرة حماية الخصوصية" على معاينة مطوّري برامج Android والبرامج التجريبية لمساعدتك في البدء.
Health Connect
يدمج Android 15 أحدث الإضافات حول Health Connect by Android، وهي منصة آمنة ومركزة لإدارة ومشاركة بيانات الصحة واللياقة البدنية التي يجمعها التطبيق. ويتيح هذا التعديل إتاحة أنواع جديدة من البيانات على مستوى اللياقة البدنية والتغذية ودرجة حرارة الجلد وخطط التدريب وغير ذلك.
تتيح ميزة "تتبُّع درجة حرارة الجلد" للمستخدمين تخزين بيانات أكثر دقة عن درجات الحرارة من جهاز قابل للارتداء أو جهاز تتبُّع آخر، ومشاركتها
خطط التدريب عبارة عن خطط تدريب مُنظَّمة لمساعدة المستخدم في تحقيق أهداف اللياقة البدنية. ويتضمن دعم خطط التدريب مجموعة متنوعة من أهداف الإكمال والأداء:
- الأهداف المكتملة بشأن السعرات الحرارية المحروقة والمسافة والمدة والتكرار والخطوات.
- أهداف الأداء بشأن أكبر عدد ممكن من التكرارات (AMRAP) ووتيرة ومعدّل نبضات القلب والطاقة ومعدّل الجهد المبذول والسرعة.
يمكنك الاطّلاع على المزيد من المعلومات حول آخر التحديثات التي أجريناها على Health Connect في نظام Android من خلال المحاضرة من مؤتمر Google I/O بعنوان إنشاء تجارب قابلة للتكيّف مع Android Health.
مشاركة جزء من الشاشة
يتيح نظام التشغيل Android 15 ميزة مشاركة جزء من الشاشة، ما يتيح للمستخدمين مشاركة نافذة التطبيق أو تسجيلها
بدلاً من شاشة الجهاز بأكملها. تمّ تفعيل هذه الميزة لأول مرّة في
Android 14 QPR2، وتشمل
MediaProjection
عملية معاودة الاتصال التي تسمح لتطبيقك
بتخصيص تجربة مشاركة الشاشة بشكل جزئي. يُرجى العلم بأنّه بالنسبة إلى التطبيقات التي تستهدف
Android 14 (المستوى 34 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث،
يجب الحصول على موافقة المستخدم الآن لكل جلسة تسجيل على
MediaProjection
.
تجربة المستخدم وواجهة مستخدم النظام
يمنح Android 15 مطوّري التطبيقات والمستخدمين مزيدًا من التحكّم والمرونة لضبط أجهزتهم بحيث تناسب احتياجاتهم.
لمعرفة مزيد من المعلومات حول كيفية استخدام آخر التحسينات في Android 15 لتحسين تجربة المستخدم في تطبيقك، يمكنك الاطّلاع على محاضرة تحسين تجربة المستخدم في تطبيق Android من مؤتمر Google I/O.
معاينات أكثر ثراءً للأدوات باستخدام واجهة برمجة التطبيقات للمعاينات التي تم إنشاؤها
قبل نظام التشغيل Android 15، كانت الطريقة الوحيدة لتوفير معاينات أداة اختيار الأدوات هي تحديد مورد ثابت للصورة أو التنسيق. غالبًا ما تختلف هذه المعاينات اختلافًا كبيرًا عن مظهر التطبيق المصغّر عند وضعه على الشاشة الرئيسية. لا يمكن أيضًا إنشاء الموارد الثابتة باستخدام Jetpack Glance، لذا كان على مطوّر البرامج في Glance لقطة شاشة للتطبيق المصغّر أو إنشاء تنسيق XML لإتاحة معاينة التطبيق.
يتيح نظام Android 15 استخدام المعاينات التي يتم إنشاؤها. وهذا يعني أنّه يمكن لموفّري تطبيقات الأدوات المصغّرة
إنشاء RemoteViews
لاستخدامها كمعاينة لأداة الاختيار، بدلاً من
مورد ثابت.
![](https://developer.android.com/static/about/versions/15/images/generated-previews.png?authuser=5&hl=ar)
واجهة برمجة التطبيقات Push
يمكن أن توفّر التطبيقات معاينات تم إنشاؤها من خلال واجهة برمجة تطبيقات Push. يمكن أن توفّر التطبيقات معاينات في أي مرحلة من مراحل نشاطها، ولا تتلقّى طلبًا صريحًا من المضيف لتوفير معاينات. يستمر الاحتفاظ بالمعاينات في AppWidgetService
،
ويمكن للمضيفين طلبها عند الطلب. يؤدي المثال التالي إلى تحميل مورد تنسيق
أداة XML وتعيينه كمعاينة:
AppWidgetManager.getInstance(appContext).setWidgetPreview(
ComponentName(
appContext,
SociaLiteAppWidgetReceiver::class.java
),
AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN,
RemoteViews("com.example", R.layout.widget_preview)
)
التدفق المتوقع هو:
- يطلب موفِّر التطبيقات المصغّرة في أي وقت الرمز
setWidgetPreview
. أمّا المعاينات المقدَّمة، فتستمر فيAppWidgetService
مع معلومات مقدّم الخدمة الأخرى. - تُبلِغ
setWidgetPreview
مضيفي النسخة المعدّلة من خلال معاودة الاتصال فيAppWidgetHost.onProvidersChanged
. استجابةً لذلك، يعيد مضيف الأداة المصغّرة تحميل جميع معلومات المزود. - عند عرض معاينة للأداة، يتحقّق المضيف من
AppWidgetProviderInfo.generatedPreviewCategories
، وفي حال كانت الفئة التي تم اختيارها متاحة، يطلبAppWidgetManager.getWidgetPreview
عرض المعاينة المحفوظة لهذا مقدّم الخدمة.
وقت الاتصال بخدمة setWidgetPreview
بسبب عدم توفّر معاودة اتصال لتوفير المعاينات، يمكن للتطبيقات اختيار إرسال معاينات في أي وقت أثناء تشغيلها. يعتمد عدد مرات تحديث المعاينة على حالة استخدام الأداة.
توضِّح القائمة التالية الفئتَين الرئيسيتَين لحالات استخدام المعاينة:
- مقدّمو الخدمات الذين يعرضون بيانات فعلية في معاينات التطبيقات المصغّرة، مثل المعلومات المخصّصة أو الحديثة. ويمكن لمقدّمي الخدمات هؤلاء ضبط المعاينة بعد تسجيل دخول المستخدم أو إكمال عملية الإعداد الأولية في تطبيقه. وبعد ذلك، يمكنهم إعداد مهمة دورية لتحديث المعاينات حسب الوتيرة التي يختارونها. ومن الأمثلة على هذا النوع من التطبيقات المصغّرة: أدوات الصور أو التقويم أو الطقس أو الأخبار.
- مقدّمو الخدمات الذين يعرضون معلومات ثابتة في المعاينات أو أدوات الإجراءات السريعة التي لا تعرض أي بيانات ويمكن لهؤلاء المزودين تعيين المعاينات مرة واحدة، عند تشغيل التطبيق لأول مرة. ومن الأمثلة على هذا النوع من الأدوات: أداة الإجراءات السريعة على Drive أو أداة اختصارات Chrome.
قد يعرض بعض مقدمي البيانات معاينات ثابتة في منتقي وضع الإرساء، في حين يعرض معلومات حقيقية في أداة اختيار الشاشة الرئيسية. ويجب على هؤلاء المزوّدين اتّباع الإرشادات لكلتا حالتَي الاستخدام هاتين من أجل إعداد المعاينات.
نافذة ضمن النافذة
يقدّم Android 15 تغييرات جديدة في ميزة "نافذة ضمن النافذة" (PiP) لضمان الانتقال الأكثر سلاسة عند الدخول إلى وضع "نافذة ضمن النافذة". وسيكون ذلك مفيدًا للتطبيقات التي تحتوي على عناصر واجهة المستخدم متراكبة على واجهة المستخدم الرئيسية، والتي تدخل في "نافذة ضمن النافذة".
يستخدم مطوّرو البرامج معاودة الاتصال في onPictureInPictureModeChanged
لتحديد منطق يوقِف إمكانية عرض عناصر واجهة المستخدم المركّبة. يتم تشغيل معاودة الاتصال هذه عند اكتمال حركة الدخول أو الخروج في وضع "نافذة ضمن النافذة" (PIP). بدءًا من نظام التشغيل Android 15، تتضمّن الفئة PictureInPictureUiState
حالة جديدة.
من خلال حالة واجهة المستخدم الجديدة هذه، سترصد التطبيقات التي تستهدف الإصدار 15 من نظام التشغيل Android معاودة الاتصال بـ
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 ضبط اهتزازات قوية للإشعارات الواردة على القناة باستخدام NotificationChannel.setVibrationEffect
، ليتمكّن المستخدمون من التفريق بين الأنواع المختلفة من الإشعارات بدون الحاجة إلى النظر إلى أجهزتهم.
الشاشات الكبيرة وعوامل الشكل
يتيح نظام التشغيل Android 15 لتطبيقات Android الاستفادة إلى أقصى حدّ من أشكال الأجهزة التي تعمل بنظام التشغيل Android، بما في ذلك الشاشات الكبيرة والأجهزة القابلة للطيّ والأجهزة القابلة للطي.
تحسين أداء المهام المتعددة على الشاشة الكبيرة
يوفّر Android 15 للمستخدمين طرقًا أفضل لتنفيذ مهام متعددة على الأجهزة ذات الشاشات الكبيرة. على سبيل المثال، يمكن للمستخدمين حفظ مجموعات التطبيقات المفضلة لديهم في وضع تقسيم الشاشة للوصول إليها بسرعة، وتثبيت شريط التطبيقات على الشاشة للتبديل بسرعة بين التطبيقات. وهذا يعني أن التأكّد من أنّ تطبيقك تكيُّفي أصبح أكثر أهمية من أي وقت مضى.
يشمل مؤتمر Google I/O جلسات حول إنشاء تطبيقات Android التكيُّفية وإنشاء واجهة المستخدم باستخدام مكتبة Material 3 التكيُّفية التي يمكن أن تساعد في ذلك، وتحتوي مستنداتنا على المزيد من المعلومات لمساعدتك في التصميم للشاشات الكبيرة.
دعم شاشة الغطاء
يمكن لتطبيقك توضيح موقع يستخدمه Android 15 للسماح بعرض Application
أو Activity
على شاشات الغلاف الصغيرة للأجهزة القابلة للطي المتوافقة. هذه الشاشات صغيرة جدًا بحيث لا يمكن اعتبارها
استهدافات متوافقة مع تطبيقات Android لتشغيلها، ولكن يمكن لتطبيقك
الموافقة على دعمها، مما يجعل تطبيقك متاحًا في المزيد من الأماكن.
إمكانية الاتصال
يُحدِّث Android 15 النظام الأساسي لمنح تطبيقك إمكانية الوصول إلى أحدث التطورات في تقنيات الاتصال واللاسلكي.
دعم الأقمار الصناعية
يواصل Android 15 توسيع نطاق دعم النظام الأساسي لاتصال الأقمار الصناعية ويتضمن بعض عناصر واجهة المستخدم لضمان تجربة مستخدم متسقة عبر نظام اتصال الأقمار الصناعية.
يمكن للتطبيقات استخدام ServiceState.isUsingNonTerrestrialNetwork()
لرصد اتصال أحد الأجهزة بقمر صناعي، ما يزيد من الوعي
بسبب عدم توفُّر خدمات الشبكة الكاملة. بالإضافة إلى ذلك، يوفّر نظام التشغيل Android 15 دعمًا لتطبيقات الرسائل القصيرة ورسائل الوسائط المتعددة، بالإضافة إلى تطبيقات خدمات الاتصالات التفاعلية (RCS) المُحمَّلة مسبقًا لاستخدام
اتصال القمر الصناعي لإرسال الرسائل واستلامها.
![](https://developer.android.com/static/about/versions/15/images/satellite-notification.png?authuser=5&hl=ar)
تجارب أكثر سلاسة عبر NFC
يعمل Android 15 على توفير تجربة أكثر سلاسة وموثوقية
من خلال ميزة "الدفع بدون تلامس الأجهزة" مع منظومة Android المتكاملة الفعّالة الخاصة بتطبيقات NFC. على
الأجهزة المتوافقة، يمكن للتطبيقات طلب تفعيل NfcAdapter
وضع المراقبة، حيث يستمع الجهاز إلى قارئات NFC بدون
استجابة له، ما يؤدي إلى إرسال خدمة NFC الخاصة PollingFrame
الكائنات إلى المعالجة. يمكن استخدام كائنات PollingFrame
للمصادقة قبل الاتصال الأول بقارئ NFC، ما يتيح إجراء معاملة بنقرة واحدة في كثير من الحالات.
بالإضافة إلى ذلك، يمكن للتطبيقات الآن تسجيل فلتر على الأجهزة المتوافقة ليتم إشعارها بأنشطة حلقة الاستطلاع، ما يتيح العمل بسلاسة مع العديد من التطبيقات المتوافقة مع تقنية NFC.
دور "محفظة Google"
يقدّم Android 15 دورًا جديدًا في "محفظة Google" يتيح دمجًا أكثر دقة مع تطبيق المحفظة المفضّل لدى المستخدم. ويحلّ هذا الدور محلّ إعدادات الدفع بدون تلامس الأجهزة التلقائية لتقنية NFC. يمكن للمستخدمين إدارة صاحب دور المحفظة من خلال الانتقال إلى الإعدادات > التطبيقات > التطبيقات التلقائية.
يُستخدَم دور "المحفظة" عند توجيه نقرات NFC لمعرّفات AID المسجّلة في فئة الدفع. تصل النقرات دائمًا إلى صاحب دور "محفظة Google" ما لم يكن هناك تطبيق آخر مُسجَّل في معرّف AID نفسه قيد التشغيل في المقدّمة.
يُستخدَم هذا الدور أيضًا لتحديد المكان الذي يجب أن ينتقل إليه مربّع الوصول السريع في "محفظة Google" عند تفعيله. عند ضبط الدور على "None" ("بدون")، لا يكون مربّع QuickAccess متاحًا، ولا يتم عرض نقرات NFC في فئة الدفع إلا على التطبيق المُقدَّم في المقدّمة.
الأمان
يساعدك نظام التشغيل Android 15 على تعزيز أمان تطبيقك وحماية بياناته ويمنح المستخدمين المزيد من الشفافية والتحكّم في بياناتهم. يمكنك الاطّلاع على محاضرات حماية مستخدمي Android من مؤتمر Google I/O لمعرفة المزيد عن الإجراءات التي نتّخذها لتحسين إجراءات حماية المستخدمين وحماية تطبيقك من التهديدات الجديدة.
دمج "مدير بيانات الاعتماد" مع ميزة "الملء التلقائي"
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.
الاشتراك بنقرة واحدة وتسجيل الدخول مع إشعارات المقاييس الحيوية
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
للتكامل مع تطبيق "جهات الاتصال" على النظام الأساسي لمنح المستخدمين طريقة مركزية لإدارة المفاتيح العامة لجهات الاتصال والتحقق منها.
عمليات التحقق من الأذونات على معرّفات الموارد المنتظمة (URI) للمحتوى
يقدّم Android 15 مجموعة جديدة من واجهات برمجة التطبيقات التي تُجري عمليات تحقّق من أذونات الوصول إلى معرّفات الموارد المنتظمة (URI) للمحتوى:
Context.checkContentUriPermissionFull
: يؤدي هذا الخيار إلى إجراء التحقق من الأذونات الكاملة لمعرّفات الموارد المنتظمة (URI) للمحتوى.- سمة البيان
Activity
requireContentUriPermissionFromCaller
: يؤدي ذلك إلى فرض أذونات محدّدة على معرّفات الموارد المنتظمة (URI) للمحتوى التي تم توفيرها عند بدء النشاط. - فئة
ComponentCaller
للمتصلينActivity
: يمثل هذا التطبيق الذي أطلق النشاط.
تسهيل الاستخدام
يضيف Android 15 ميزات لتحسين إمكانية الوصول للمستخدمين.
لغة برايل أفضل
في نظام التشغيل Android 15، أتحنا إمكانية توافق TalkBack مع شاشات برايل التي تستخدم معيار HID عبر كل من USB والبلوتوث الآمن.
ويشبه هذا المعيار إلى حد كبير المعيار الذي تستخدمه أجهزة الماوس ولوحات المفاتيح، وسيساعد نظام التشغيل Android على دعم مجموعة أكبر من شاشات برايل بمرور الوقت.
التوافق مع أسواق عالمية
يضيف Android 15 ميزات وإمكانات تكمّل تجربة المستخدم عند استخدام الجهاز بلغات مختلفة.
خط متغيّر CJK
بدءًا من نظام التشغيل Android 15، أصبح ملف الخط للّغات الصينية واليابانية والكورية (CJK)، وهو NotoSansCJK، الآن خطًا متغيّرًا. تفتح الخطوط المتغيرة إمكانيات جديدة لأسلوب الخط الإبداعي في لغات CJK. يمكن للمصممين استكشاف مجموعة أوسع من الأنماط وإنشاء تخطيطات مذهلة بصريًا كان من الصعب أو المستحيل تحقيقها في السابق.
![](https://developer.android.com/static/about/versions/15/images/cjk-variable-font.png?authuser=5&hl=ar)
التبرير بين الأحرف
بدءًا من نظام التشغيل Android 15، يمكن ضبط تباعد الأحرف باستخدام
JUSTIFICATION_MODE_INTER_CHARACTER
. تم طرح ميزة التبرير البيني
للمرة الأولى في نظام التشغيل Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات)، ويوفّر التبرير بين الأحرف إمكانات مماثلة للغات التي تستخدم حرف المسافة البيضاء للتقسيم إلى شرائح، مثل الصينية واليابانية وغيرها.
![](https://developer.android.com/static/about/versions/15/images/none-japanese.png?authuser=5&hl=ar)
JUSTIFICATION_MODE_NONE
.![](https://developer.android.com/static/about/versions/15/images/none-english.png?authuser=5&hl=ar)
JUSTIFICATION_MODE_NONE
![](https://developer.android.com/static/about/versions/15/images/inter-word-japanese.png?authuser=5&hl=ar)
JUSTIFICATION_MODE_INTER_WORD
.![](https://developer.android.com/static/about/versions/15/images/inter-word-english.png?authuser=5&hl=ar)
JUSTIFICATION_MODE_INTER_WORD
![](https://developer.android.com/static/about/versions/15/images/inter-character-japanese.png?authuser=5&hl=ar)
JUSTIFICATION_MODE_INTER_CHARACTER
الجديدة.![](https://developer.android.com/static/about/versions/15/images/inter-character-english.png?authuser=5&hl=ar)
JUSTIFICATION_MODE_INTER_CHARACTER
الجديدة.إعداد فاصل الأسطر التلقائي
بدأ Android في إتاحة فواصل الأسطر المستندة إلى العبارات للّغات اليابانية والكورية في
Android 13 (المستوى 33 من واجهة برمجة التطبيقات). ومع ذلك، في حين تعمل فواصل الأسطر القائمة على العبارات على تحسين
سهولة قراءة سطور النص القصيرة، إلا أنها لا تعمل بشكل جيد مع سطور النص الطويلة.
في نظام التشغيل Android 15، يمكن للتطبيقات الآن تطبيق فواصل الأسطر المستندة إلى العبارة على الأسطر القصيرة من النص فقط باستخدام الخيار LINE_BREAK_WORD_STYLE_AUTO
. يحدد هذا الخيار أفضل نمط نمط للكلمة للنص.
بالنسبة إلى الأسطر القصيرة من النص، يتم استخدام فواصل الأسطر المستندة إلى العبارات، وستعمل تمامًا مثل LINE_BREAK_WORD_STYLE_PHRASE
، كما هو موضّح في الصورة التالية:
![](https://developer.android.com/static/about/versions/15/images/line-break-auto-short.png?authuser=5&hl=ar)
LINE_BREAK_WORD_STYLE_AUTO
فواصل أسطر مستندة إلى العبارات لتحسين إمكانية قراءة النص.
وينطبق ذلك على عملية تطبيق
LINE_BREAK_WORD_STYLE_PHRASE
.بالنسبة إلى أسطر النص الأطول، يستخدم LINE_BREAK_WORD_STYLE_AUTO
نمط كلمات بدون فاصل أسطر، ويعمل مثل LINE_BREAK_WORD_STYLE_NONE
، كما هو موضح في الصورة التالية:
![](https://developer.android.com/static/about/versions/15/images/line-break-auto-long.png?authuser=5&hl=ar)
LINE_BREAK_WORD_STYLE_AUTO
نمط كلمات فواصل أسطر لتحسين إمكانية قراءة النص.
وينطبق ذلك على عملية تطبيق
LINE_BREAK_WORD_STYLE_NONE
.خط Hentaigana الياباني الجديد
في نظام التشغيل Android 15، يتم تلقائيًا تجميع ملف خط جديد للهيراغانا اليابانية القديم (المعروف باسم Hentaigana). يمكن للأشكال الفريدة لشخصيات هنتايغانا أن تضفي طابعًا مميزًا على الأعمال الفنية أو التصميم، كما تساعد في الحفاظ على دقة انتقال وفهم المستندات اليابانية القديمة.
![](https://developer.android.com/static/about/versions/15/images/hentaigana-font.png?authuser=5&hl=ar)
حقوق الطبع والنشر لـ VideoLAN المخروطية (c) 1996-2010 VideoLAN. يمكن لأي شخص استخدام هذا الشعار أو نسخة معدلة أو تعديلها للإشارة إلى مشروع VideoLAN أو أي منتج طوّره فريق VideoLAN، ولكنها لا تشير إلى توصية من المشروع.
Vulkan وشعار Vulkan هما علامتان تجاريتان مسجَّلتان لشركة الخronos Group Inc.
OpenGL هي علامة تجارية مسجّلة، وشعار OpenGL ES هو علامة تجارية لشركة Hewlett Packard Enterprise وتستخدمها بموجب إذن من شركةKronos.