يقدّم Android 12 ميزات وواجهات برمجة تطبيقات جديدة رائعة للمطوّرين. تساعدك الأقسام أدناه في التعرّف على ميزات تطبيقاتك والبدء في استخدام واجهات برمجة التطبيقات ذات الصلة.
للحصول على قائمة تفصيلية بواجهات برمجة التطبيقات الجديدة والمعدَّلة والمُزالة، يُرجى الاطّلاع على تقرير مقارنة واجهات برمجة التطبيقات. لمعرفة تفاصيل حول واجهات برمجة التطبيقات الجديدة، يُرجى الانتقال إلى مرجع واجهة برمجة تطبيقات Android، حيث يتم تمييز واجهات برمجة التطبيقات الجديدة لتسهيل رؤيتها. وللتعرّف على المجالات التي قد تؤثر فيها تغييرات النظام الأساسي على تطبيقاتك، احرص على الاطّلاع على تغييرات السلوك في Android 12 للتطبيقات التي تستهدف Android 12 ولجميع التطبيقات.
تجربة المستخدم
Material You
يقدّم Android 12 لغة تصميم جديدة تُسمى Material You، ما يساعدك في إنشاء تطبيقات أكثر تخصيصًا وجمالاً. لإضافة جميع تحديثات التصميم المتعدد الأبعاد 3 الأخيرة إلى تطبيقاتك، يمكنك تجربة إصدار أولي من مكوّنات التصميم المتعدد الأبعاد.

تحسينات على التطبيقات المصغّرة
يجدّد Android 12 واجهة برمجة التطبيقات الحالية الخاصة بعناصر واجهة المستخدم لتحسين تجربة المستخدم والمطوّر في النظام الأساسي ومشغّلات التطبيقات. لقد أنشأنا دليلاً لمساعدتك في التأكّد من توافق التطبيق المصغّر مع Android 12 وتحديثه بميزات جديدة.
لمزيد من المعلومات، يُرجى الاطّلاع على تحسينات التطبيقات المصغّرة في Android 12.
إدراج محتوى وافٍ
يقدّم Android 12 واجهة برمجة تطبيقات موحّدة جديدة تتيح لتطبيقك تلقّي محتوى غني من أي مصدر متاح: الحافظة أو لوحة المفاتيح أو السحب والإفلات.
لمزيد من المعلومات، يُرجى الاطّلاع على مقالة تلقّي محتوى وافٍ.
واجهة برمجة التطبيقات لشاشات البداية في التطبيقات
يقدّم Android 12 مؤثرات حركية جديدة لجميع التطبيقات عند تشغيلها، ويتضمّن ذلك مؤثرات خاصة عند بدء تشغيل التطبيق وكذلك عند الانتقال إلى التطبيق، بالإضافة إلى شاشة بداية تعرض رمز التطبيق. يُرجى الاطّلاع على دليل المطوّرين حول شاشات البداية لمزيد من التفاصيل.
واجهات برمجة التطبيقات للزوايا المستديرة
يقدّم نظام التشغيل Android 12 السمتَين RoundedCorner وWindowInsets.getRoundedCorner(int
position) اللتين توفّران نصف القطر والنقطة المركزية للزوايا المستديرة.
لمزيد من المعلومات، يُرجى الاطّلاع على الزوايا الدائرية.
تجارب لمسية غنية
يوسّع Android 12 نطاق الأدوات المتاحة لإنشاء تجاوب حسّي مفيد لأحداث واجهة المستخدم، وتأثيرات غامرة وممتعة للألعاب، وتجاوب حسّي يجذب الانتباه لتعزيز الإنتاجية.
تأثيرات المشغِّل
يضيف Android 12 تأثيرات تعبيرية مثل الاهتزاز الخفيف الذي يستفيد من معدل نقل البيانات الأوسع نطاقًا لأحدث المشغّلات. يمكن لمطوّري الألعاب الآن الوصول إلى محرّكات متعددة ومختلفة بشكل مستقل في وحدات التحكّم في الألعاب لتقديم التأثير نفسه بشكل متزامن أو تأثيرات لمسية مختلفة على محرّكات متعددة. بالنسبة إلى المطوّرين، ننصح باستخدام الثوابت والعناصر الأساسية كعناصر أساسية لإنشاء تأثيرات لمسية غنية، أي الثوابت لتحسين أحداث واجهة المستخدم وأداة إنشاء التأثيرات اللمسية لتسلسل العناصر الأساسية من أجل إنشاء تأثيرات أكثر تعقيدًا. تتوفّر واجهات برمجة التطبيقات هذه لتجربتها على أجهزة Pixel 4، ونواصل العمل مع شركائنا من صانعي الأجهزة لتقديم أحدث تقنيات اللمس للمستخدمين في جميع أنحاء المنظومة المتكاملة.
تأثيرات اللمس المقترنة بالصوت
يمكن لتطبيقات Android 12 إنشاء تجاوب حسّي مستمَد من جلسة صوتية باستخدام هزاز الهاتف. ويوفّر ذلك فرصة للاستمتاع بتجارب ألعاب وصوت غامرة أكثر. على سبيل المثال، يمكن أن تساعد نغمات الرنين المحسّنة باللمس في تحديد هوية المتصلين، أو يمكن أن تحاكي لعبة قيادة الشعور بالتضاريس الوعرة.
لمزيد من المعلومات، يُرجى الاطّلاع على المستندات المرجعية حول HapticGenerator.
AppSearch
يقدّم Android 12 خدمة AppSearch، وهي محرّك بحث عالي الأداء على الجهاز فقط، كخدمة تابعة لنظام التشغيل. تتيح AppSearch للتطبيقات فهرسة البيانات المنظَّمة والبحث فيها باستخدام إمكانات البحث في النص الكامل المضمَّنة. بالإضافة إلى ذلك، تتيح AppSearch ميزات البحث المدمجة، مثل الفهرسة والاسترجاع العاليَي الكفاءة، وإتاحة لغات متعددة، وترتيب مدى الصلة بالموضوع.
تتوفّر AppSearch بنوعَين: فهرس محلي يستخدمه تطبيقك ومتوافق مع الإصدارات القديمة من Android، أو فهرس مركزي يتم الاحتفاظ به للنظام بأكمله في Android 12. باستخدام الفهرس المركزي، يمكن لتطبيقك السماح بعرض بياناته على مساحات واجهة مستخدم النظام من خلال مكوِّن الذكاء الاصطناعي المثبَّت مسبقًا في النظام. تعتمد البيانات التي يتم عرضها على واجهة مستخدم النظام على المصنّع الأصلي للجهاز. بالإضافة إلى ذلك، يمكن لتطبيقك مشاركة البيانات بأمان مع التطبيقات الأخرى، للسماح لها بالبحث في تلك البيانات أيضًا.
يمكنك الاطّلاع على مزيد من المعلومات حول AppSearch في دليل المطوّر، والبدء في استخدامه مع مكتبة AppSearch Jetpack التي توفّر واجهة برمجة تطبيقات سهلة الاستخدام للمطوّرين بالإضافة إلى دعم معالج التعليقات التوضيحية.
وضع الألعاب
تتيح لك واجهة برمجة التطبيقات Game Mode API وتدخُّلات وضع الألعاب تحسين تجربة اللعب من خلال تحديد أولويات الخصائص، مثل الأداء أو عمر البطارية، استنادًا إلى إعدادات المستخدمين أو الإعدادات الخاصة باللعبة.
لمزيد من المعلومات، يُرجى الاطّلاع على وضع الألعاب.
اقتراحات وتحسينات بشأن ميزة "نافذة ضمن النافذة"
يقدّم Android 12 التحسينات التالية لوضع "نافذة ضمن النافذة":
إتاحة إيماءات جديدة لميزة "نافذة ضمن النافذة"
يتيح Android 12 الآن إيماءات الإخفاء والتكبير أو التصغير بإصبعين في نافذة "نافذة ضمن النافذة":
لإخفاء النافذة، يمكن للمستخدم سحبها إلى الحافة اليمنى أو اليسرى. لإظهار النافذة المخفية، يمكن للمستخدم إما النقر على الجزء المرئي من النافذة المخفية أو سحبها للخارج.
يمكن للمستخدم الآن تغيير حجم نافذة "نافذة ضمن النافذة" باستخدام ميزة التصغير أو التكبير بإصبعين.
ميزات جديدة مقترَحة تتيح تجربة انتقال سلسة إلى وضع "نافذة ضمن النافذة"
أضاف نظام التشغيل Android 12 تحسينات تجميلية كبيرة على الانتقالات المتحركة بين ملء الشاشة ونوافذ ميزة "نافذة ضمن النافذة". ننصح بشدة بتنفيذ جميع التغييرات السارية، وبعد ذلك، سيتم تطبيق هذه التغييرات تلقائيًا على الشاشات الكبيرة، مثل الأجهزة القابلة للطي والأجهزة اللوحية، بدون الحاجة إلى أي عمل إضافي.
هذه الميزات هي:
-
استخدِم العلامة
setAutoEnterEnabledلتوفير انتقالات أكثر سلاسة إلى وضع "نافذة ضمن النافذة" عند التمرير سريعًا للأعلى للانتقال إلى الشاشة الرئيسية في وضع التنقّل بالإيماءات. في السابق، كان نظام Android ينتظر انتهاء تأثيرات التمرير السريع للأعلى للانتقال إلى الشاشة الرئيسية قبل ظهور نافذة "نافذة ضمن النافذة" تدريجيًا. صور متحركة أكثر سلاسة عند الدخول إلى وضع "نافذة ضمن النافذة" والخروج منه
يُعاد الآن استخدام العلامة
SourceRectHintلتنفيذ رسوم متحركة أكثر سلاسة عند الدخول إلى وضع "نافذة ضمن النافذة" والخروج منه.علامة جديدة في واجهة برمجة التطبيقات لإيقاف ميزة تغيير الحجم بسلاسة للمحتوى غير الفيديو
توفّر العلامة
SeamlessResizeEnabledتأثيرًا حركيًا أكثر سلاسة عند تغيير حجم المحتوى غير الفيديو في نافذة "نافذة ضمن النافذة". في السابق، كان تغيير حجم المحتوى غير محتوى الفيديو في نافذة "نافذة ضمن النافذة" قد يؤدي إلى ظهور عناصر مرئية مزعجة.
إشعارات جديدة للمكالمات الهاتفية تتيح ترتيب أهمية المكالمات الواردة
يضيف Android 12 نمط الإشعارات الجديد
Notification.CallStyle
للمكالمات الهاتفية. يتيح هذا النموذج لتطبيقك الإشارة إلى أهمية المكالمات النشطة من خلال عرض شريحة بارزة تعرض وقت المكالمة في شريط الحالة، ويمكن للمستخدم النقر على هذه الشريحة للعودة إلى المكالمة.
بما أنّ المكالمات الواردة والجارية هي الأكثر أهمية للمستخدمين، يتم منح هذه الإشعارات أعلى ترتيب في لوحة الإشعارات. يسمح هذا الترتيب أيضًا للنظام بإعادة توجيه هذه المكالمات ذات الأولوية إلى أجهزة أخرى.
نفِّذ الرمز التالي لجميع أنواع المكالمات.
Kotlin
// Create a new call with the user as caller. val incoming_caller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
Java
// Create a new call with the user as caller. Person incoming_caller = new Person.Builder() .setName("Jane Doe") .setImportant(true) .build();
استخدِم forIncomingCall()
لإنشاء إشعار بنمط المكالمات لمكالمة واردة.
Kotlin
// Create a call style notification for an incoming call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incoming_caller)
Java
// Create a call style notification for an incoming call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incoming_caller);
استخدِم forOngoingCall()
لإنشاء إشعار بنمط المكالمات لمكالمة جارية.
Kotlin
// Create a call style notification for an ongoing call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOnGoingCall(caller, hangupIntent)) .addPerson(second_caller)
Java
// Create a call style notification for an ongoing call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOnGoingCall(caller, hangupIntent)) .addPerson(second_caller);
استخدِم forScreeningCall()
لإنشاء إشعار بنمط المكالمة لفحص المكالمة.
Kotlin
// Create a call style notification for screening a call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller)
Java
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller);
دعم الصور المحسّنة للإشعارات
في Android 12، يمكنك الآن تحسين تجربة الإشعارات في تطبيقك من خلال
توفير صور متحركة في إشعارات MessagingStyle()
وBigPictureStyle(). يمكن لتطبيقك الآن السماح للمستخدمين بإرسال رسائل مصوّرة عند
الردّ على الرسائل من مركز الإشعارات.
تحسينات على "الوضع المجسم" في ميزة "التنقّل بالإيماءات"
يجمع Android 12 السلوك الحالي لتسهيل الأمر على المستخدمين تنفيذ أوامر التنقل بالإيماءات أثناء وجودك في وضع مجسم. بالإضافة إلى ذلك، يوفّر Android 12 سلوك التوافق مع الأنظمة القديمة لوضع ملء الشاشة.
مشاركة عناوين URL للتطبيقات المستخدمة مؤخرًا (على هواتف Pixel فقط)
على أجهزة Pixel، يمكن للمستخدمين الآن مشاركة روابط تؤدي إلى المحتوى على الويب الذي تم الاطّلاع عليه مؤخرًا مباشرةً من شاشة "التطبيقات المستخدَمة حديثًا". بعد زيارة المحتوى في أحد التطبيقات، يمكن للمستخدم التمرير سريعًا إلى شاشة "التطبيقات المستخدَمة مؤخرًا" والعثور على التطبيق الذي شاهد المحتوى فيه، ثم النقر على زر الرابط لنسخ عنوان URL أو مشاركته.
لمزيد من المعلومات، يُرجى الاطّلاع على تفعيل مشاركة عناوين URL للصفحات التي تم زيارتها مؤخرًا.
الأمان والخصوصية
لوحة بيانات الخصوصية
على الأجهزة المتوافقة التي تعمل بنظام التشغيل Android 12 أو إصدار أحدث، تظهر شاشة "لوحة بيانات الخصوصية" في إعدادات النظام. على هذه الشاشة، يمكن للمستخدمين الوصول إلى شاشات منفصلة تعرض وقت وصول التطبيقات إلى معلومات الموقع الجغرافي والكاميرا والميكروفون. تعرض كل شاشة مخططًا زمنيًا لوقت وصول التطبيقات المختلفة إلى نوع معين من البيانات. يوضّح الشكل 1 المخطط الزمني للوصول إلى بيانات الموقع الجغرافي.
يمكن لتطبيقك تقديم مبرّر للمستخدمين لمساعدتهم في فهم سبب وصول تطبيقك إلى معلومات الموقع الجغرافي أو الكاميرا أو الميكروفون. يمكن أن يظهر هذا السبب على شاشة "لوحة بيانات الخصوصية" الجديدة أو شاشة أذونات التطبيق أو كليهما.
أذونات البلوتوث
يقدّم Android 12 أذونات
BLUETOOTH_SCAN
وBLUETOOTH_ADVERTISE
وBLUETOOTH_CONNECT. تسهّل هذه الأذونات على التطبيقات التي تستهدف
Android 12 التفاعل مع الأجهزة التي تتضمّن بلوتوث، خاصةً التطبيقات التي لا
تتطلب الوصول إلى الموقع الجغرافي للجهاز.
تعديل بيانات أذونات البلوتوث في تطبيقك
لإعداد جهازك لاستهداف الإصدار 12 من نظام التشغيل Android أو الإصدارات الأحدث، عليك تعديل منطق التطبيق. بدلاً من الإعلان عن مجموعة قديمة من أذونات البلوتوث، يجب الإعلان عن مجموعة أكثر حداثة من أذونات البلوتوث.
البحث عن مجموعة الأذونات
على الإصدار 12 من نظام التشغيل Android أو الإصدارات الأحدث، يمكنك الاستعلام عن كيفية تنظيم النظام للأذونات التي يوفّرها النظام الأساسي في مجموعات الأذونات:
- لتحديد مجموعة الأذونات التي وضع النظام فيها إذنًا محدّدًا من النظام الأساسي، يمكنك استدعاء
getGroupOfPlatformPermission(). - لتحديد الأذونات التي يحدّدها النظام الأساسي والتي وضعها النظام في مجموعة أذونات معيّنة، يمكنك استدعاء
getPlatformPermissionsForGroup().
إخفاء نوافذ تراكب التطبيقات
لمنح المطوّرين مزيدًا من التحكّم في ما يراه المستخدمون عند تفاعلهم مع
تطبيق المطوّر، يقدّم Android 12 إمكانية إخفاء
النوافذ التي تظهر على سطح الشاشة والتي يتم رسمها بواسطة التطبيقات التي لديها
إذن
SYSTEM_ALERT_WINDOW.
بعد الإفصاح عن إذن
HIDE_OVERLAY_WINDOWS
، يمكن للتطبيق استدعاء
setHideOverlayWindows()
للإشارة إلى أنّه يجب إخفاء جميع النوافذ من النوع
TYPE_APPLICATION_OVERLAY
عندما تكون نافذة التطبيق مرئية. قد تختار التطبيقات تنفيذ هذا الإجراء عند عرض شاشات حساسة، مثل مسارات تأكيد المعاملات.
على التطبيقات التي تعرض نوافذ من النوع TYPE_APPLICATION_OVERLAY أن تفكّر في بدائل قد تكون أكثر ملاءمة لحالة استخدامها، مثل نافذة ضمن النافذة أو الفقاعات.
علامة حماية أذونات الموقِّعين المعروفين
بدءًا من الإصدار 12 من نظام التشغيل Android، تتيح لك السمة
knownCerts
للأذونات على مستوى التوقيع
الإشارة إلى ملخّصات شهادات التوقيع
المعروفة في وقت
الإعلان.
يمكن لتطبيقك الإعلان عن هذه السمة واستخدام العلامة knownSigner للسماح
للأجهزة والتطبيقات بمنح أذونات التوقيع للتطبيقات
الأخرى، بدون
الحاجة إلى توقيع التطبيقات في وقت تصنيع الجهاز وشحنه.
مصادقة خصائص الجهاز
يوسّع Android 12 مجموعة التطبيقات التي يمكنها التحقّق من خصائص الجهاز الواردة في شهادة المصادقة عندما تنشئ هذه التطبيقات مفتاحًا جديدًا.
اعتبارًا من الإصدار Android 9 (المستوى 28 من واجهة برمجة التطبيقات)، يمكن لمالكي سياسة الجهاز (DPO) الذين يستخدمون Keymaster 4.0 أو إصدارًا أحدث التحقّق من خصائص الجهاز في شهادات المصادقة هذه. بدءًا من الإصدار 12 من نظام التشغيل Android، يمكن لأي تطبيق يستهدف الإصدار 12 من نظام التشغيل Android (المستوى 31 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث إجراء عملية التحقّق هذه باستخدام الطريقة setDevicePropertiesAttestationIncluded().
تتضمّن سمات الجهاز التي تم إنشاؤها حقول Build التالية:
BRANDDEVICEMANUFACTURERMODELPRODUCT
إجراءات الإشعارات على شاشة القفل الآمنة
بدءًا من الإصدار 12 من نظام التشغيل Android، تتيح الفئة Notification.Action.Builder استخدام الطريقة setAuthenticationRequired() التي تسمح لتطبيقك بطلب فتح قفل الجهاز قبل أن يستدعي تطبيقك إجراءً معيّنًا للإشعار. تساعد هذه الطريقة في إضافة طبقة أمان إضافية إلى الإشعارات على الأجهزة المقفلة.
سلاسل قابلة للترجمة لـ BiometricPrompt
يقدّم Android 12 واجهات برمجة تطبيقات جديدة لمساعدتك في تحسين تجربة المستخدم في ما يتعلّق بالمصادقة بالمقاييس الحيوية في تطبيقك. تتضمّن الفئة المُدمَجة الجديدة BiometricManager.Strings الطرق getButtonLabel() وgetPromptMessage() وgetSettingName() التي تتيح لتطبيقك استرداد تصنيف زر أو رسالة مطالبة أو اسم إعداد تطبيق يمكن للمستخدم قراءته ومترجَم. استخدِم هذه التصنيفات لإنشاء تعليمات أكثر دقة موجّهة للمستخدمين وتكون خاصة بطرق المصادقة بالمقاييس الحيوية المستخدَمة، مثل "استخدام ميزة فتح الجهاز ببصمة الوجه" أو "استخدام بصمة الإصبع للمتابعة".
الوسائط
تحويل الوسائط إلى تنسيق متوافق
بدءًا من الإصدار Android 12 (مستوى واجهة برمجة التطبيقات 31)، يمكن للنظام تحويل ترميز فيديوهات HEVC(H.265) وHDR (HDR10 وHDR10+) المسجَّلة على الجهاز تلقائيًا إلى تنسيق AVC (H.264)، وهو تنسيق متوافق على نطاق واسع مع المشغّلات العادية. يستفيد هذا من برامج الترميز الحديثة عندما تكون متاحة بدون التضحية بالتوافق مع التطبيقات القديمة.
لمزيد من التفاصيل، يُرجى الاطّلاع على تحويل الوسائط إلى تنسيق متوافق.
فئة الأداء
يقدّم Android 12 معيارًا يُعرف باسم فئة الأداء. تحدّد فئة الأداء إمكانات الأجهزة التي تتجاوز متطلبات Android الأساسية. يعلن كل جهاز Android عن فئة الأداء التي يتوافق معها. ويمكن للمطوّرين التحقّق من فئة أداء الجهاز أثناء التشغيل وتقديم تجارب محسّنة تستفيد بشكل كامل من إمكانات الجهاز.
يمكنك الاطّلاع على فئة الأداء لمزيد من التفاصيل.
تحسينات على ترميز الفيديو
يحدّد نظام التشغيل Android 12 مجموعة عادية من المفاتيح للتحكّم في قيمة مَعلمة التكميم (QP) لترميز الفيديو، ما يتيح للمطوّرين تجنُّب الرموز البرمجية الخاصة بالمورّدين.
تتوفّر المفاتيح الجديدة في
واجهة برمجة التطبيقات MediaFormat
وفي
مكتبة وسائط NDK.
اعتبارًا من الإصدار Android 12، تفرض برامج ترميز الفيديو حدًا أدنى للجودة. يضمن ذلك عدم حصول المستخدمين على جودة منخفضة للغاية عند ترميز الفيديوهات ذات المشاهد المعقّدة.
التركيز على الصوت
بدءًا من الإصدار 12 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 31)، عندما يطلب تطبيق أولويّة الصوت بينما يكون تطبيق آخر لديه أولويّة الصوت ويشغّله، يتلاشى صوت التطبيق الذي يشغّل الصوت.
لمزيد من التفاصيل، يمكنك الاطّلاع على التركيز على الصوت في الإصدار 12 من نظام التشغيل Android والإصدارات الأحدث.
تحديثات MediaDrm
لتحديد ما إذا كان مكوّن وحدة فك الترميز الآمنة مطلوبًا مع واجهات برمجة تطبيقات MediaDrm الحالية، عليك اتّباع الخطوات التالية:
- أنشئ
MediaDrm. - افتح جلسة للحصول على معرّف جلسة.
- أنشئ
MediaCryptoباستخدام معرّف الجلسة. - الاتصال بالرقم
MediaCrypto.requiresSecureDecoderComponent(mimeType).
باستخدام الطريقتَين الجديدتَين requiresSecureDecoder(@NonNull String mime) وrequiresSecureDecoder(@NonNull String mime, @SecurityLevel int level)، يمكنك تحديد ذلك فور إنشاء MediaDrm.
الكاميرا
إضافات المورّدين في Camera2
أنشأ العديد من شركائنا من الشركات المصنّعة للأجهزة إضافات مخصّصة للكاميرا، مثل الخلفية الضبابية والنطاق العالي الديناميكية والوضع الليلي وغيرها، ويريدون من التطبيقات استخدامها لإنشاء تجارب متميّزة على أجهزتهم. تتوافق مكتبة CameraX حاليًا مع إضافات المورّدين المخصّصة هذه. في Android 12، أصبحت إضافات المورّدين هذه متاحة مباشرةً في المنصة.
تساعد هذه الإضافة التطبيقات التي تستخدم عمليات تنفيذ معقّدة لـ Camera2 في الاستفادة من إضافات المورّدين بدون الحاجة إلى إجراء تغييرات كبيرة على الرمز القديم. توفّر واجهات برمجة التطبيقات Camera2 Extension مجموعة الإضافات نفسها المتوفّرة في CameraX، وهي متاحة على العديد من الأجهزة المختلفة، لذا يمكنك استخدامها بدون أي إعدادات إضافية.
لمزيد من المعلومات، يُرجى الاطّلاع على
CameraExtensionCharacteristics.
إتاحة مستشعر الكاميرا Quad Bayer
تتوفّر اليوم العديد من أجهزة Android المزوّدة بأجهزة استشعار للكاميرا فائقة الدقة، والتي عادةً ما تكون مزوّدة بأنماط Quad أو Nona Bayer، وتوفّر هذه الأجهزة مرونة كبيرة من حيث جودة الصورة والأداء في الإضاءة المنخفضة. يقدّم Android 12 واجهات برمجة تطبيقات جديدة تتيح للتطبيقات الخارجية الاستفادة بشكل كامل من أدوات الاستشعار المتعددة الاستخدامات هذه. تتيح واجهات برمجة التطبيقات الجديدة السلوك الفريد لأدوات الاستشعار هذه وتأخذ في الاعتبار أنّها قد تتيح إعدادات ومجموعات مختلفة من أحجام الصور عند العمل في وضع الدقة الكاملة أو وضع "الدقة القصوى" مقارنةً بالوضع "التلقائي".
الرسومات والصور
السماح للتطبيقات بالوصول المباشر إلى آثار الأعطال
بدءًا من الإصدار 12 من نظام التشغيل Android، يمكنك الوصول إلى ملفات Tombstone للأعطال الداخلية في نظام التشغيل لتطبيقك كـ Protocol Buffer من خلال طريقة ApplicationExitInfo.getTraceInputStream(). يتم إجراء تسلسل لـ Protocol Buffer باستخدام هذا المخطط.
في السابق، كانت الطريقة الوحيدة للوصول إلى هذه المعلومات هي من خلال
Android Debug Bridge (adb).
لمزيد من المعلومات، يُرجى الاطّلاع على منح التطبيقات إمكانية الوصول المباشر إلى آثار الأعطال.
إتاحة استخدام صور AVIF
يوفّر Android 12 إمكانية استخدام الصور التي تستخدم تنسيق ملفات الصور AV1 (AVIF). AVIF هو تنسيق حاوية للصور وتسلسلات الصور المرمّزة باستخدام AV1. يستفيد AVIF من المحتوى المرمّز داخل الإطار من ضغط الفيديو. يؤدي ذلك إلى تحسين جودة الصورة بشكل كبير لحجم الملف نفسه مقارنةً بتنسيقات الصور القديمة، مثل JPEG. لإلقاء نظرة متعمقة على مزايا هذا التنسيق، يمكنك الاطّلاع على منشور المدوّنة الذي كتبه "جيك أرشيبالد".
تأثيرات تمويه وفلاتر ألوان وغيرها من التأثيرات أسهل في الاستخدام
يضيف Android 12 واجهة برمجة التطبيقات الجديدة RenderEffect
التي تطبّق تأثيرات الرسومات الشائعة، مثل التمويه وفلاتر الألوان وتأثيرات
تظليل Android والمزيد على View
والتسلسلات الهرمية للعرض. يمكن دمج المؤثرات إما كمؤثرات متسلسلة
(تتألف من مؤثر داخلي وخارجي) أو مؤثرات مدمجة. قد تتيح بعض أجهزة Android هذه الميزة وقد لا تتيحها أجهزة أخرى بسبب محدودية قدرة المعالجة.
يمكن أيضًا تطبيق التأثيرات على RenderNode الأساسية
لـ View من خلال طلب View.setRenderEffect(RenderEffect).
لتنفيذ RenderEffect:
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
فك ترميز الصور المتحركة الأصلية
في Android 12، تم توسيع واجهة برمجة التطبيقات NDK
ImageDecoder لفك ترميز جميع الإطارات وبيانات التوقيت من الصور
التي تستخدم تنسيقات ملفات GIF المتحركة
وWebP المتحركة. عندما تم طرح واجهة برمجة التطبيقات هذه في Android 11، كانت تفك ترميز الصورة الأولى فقط من الصور المتحركة بهذه التنسيقات.
استخدِم ImageDecoder بدلاً من المكتبات التابعة لجهات خارجية لتقليل حجم حزمة APK بشكل أكبر والاستفادة من التحديثات المستقبلية المتعلّقة بالأمان والأداء.
لمزيد من التفاصيل حول واجهة برمجة التطبيقات، يُرجى الاطّلاع على مرجع واجهة برمجة التطبيقات والنموذج على GitHub.
إمكانية الاتصال
إبقاء التطبيقات المصاحبة نشطة
لتلبية حاجة التطبيقات المصاحبة إلى مواصلة العمل لإدارة الجهاز، يقدّم نظام التشغيل Android 12 واجهات برمجة تطبيقات تنفّذ ما يلي:
- تتيح لك هذه الميزة تنشيط تطبيق عندما يكون الجهاز الملحق ضمن النطاق.
- يضمن ذلك استمرار تشغيل العملية طالما أنّ الجهاز ضمن النطاق.
لاستخدام واجهات برمجة التطبيقات، يجب ربط أجهزتك باستخدام أداة إدارة الأجهزة المصاحبة. لمزيد من المعلومات، يُرجى الاطّلاع على CompanionDeviceManager.startObservingDevicePresence() وCompanionDeviceService.onDeviceAppeared().
الملفات الشخصية في "أداة إدارة الأجهزة المصاحبة"
يمكن لتطبيقات الشركاء على الإصدار 12 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 31) والإصدارات الأحدث استخدام الملفات الشخصية للأجهزة المرافقة عند الاتصال بساعة. يؤدي استخدام ملف شخصي إلى تبسيط عملية التسجيل من خلال تجميع منح مجموعة من الأذونات الخاصة بنوع الجهاز في خطوة واحدة.
يتم منح الأذونات المجمّعة للتطبيق المصاحب بعد اتصال الجهاز، وتستمر فقط طالما أنّ الجهاز مرتبط. ويؤدي حذف التطبيق أو إزالة الربط إلى إزالة الأذونات.
لمزيد من المعلومات، يُرجى الاطّلاع على
AssociationRequest.Builder.setDeviceProfile().
تحسينات على تقدير معدّل نقل البيانات
في الإصدار Android 12، تم تحسين إمكانات تقدير معدل نقل البيانات التي توفّرها
getLinkDownstreamBandwidthKbps()
و
getLinkUpstreamBandwidthKbps()
لكل من اتصال Wi-Fi واتصال شبكة الجوّال. تمثّل القيم التي يتم عرضها الآن
المتوسّط المرجّح لمعدّل نقل البيانات على الإطلاق لكل مشغّل شبكة جوّال أو معرّف SSID لشبكة Wi-Fi
ونوع الشبكة ومستوى الإشارة، على مستوى جميع التطبيقات على الجهاز.
يمكن أن يؤدي ذلك إلى عرض تقدير أكثر دقة وواقعية لمعدل النقل المتوقّع،
وتقديم تقديرات حول التشغيل على البارد لتطبيقك، ويتطلّب دورات أقل
مقارنةً باستخدام طرق أخرى لتقدير معدل النقل.
تحسينات Wi-Fi Aware (NAN)
يضيف Android 12 بعض التحسينات إلى Wi-Fi Aware:
- على الأجهزة التي تعمل بنظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكنك استخدام دالة الاستدعاء
onServiceLost()لتلقّي تنبيه عندما يفقد تطبيقك خدمة تم اكتشافها بسبب توقّف الخدمة أو خروجها عن النطاق. - سيتم تغيير طريقة إعداد مسارات البيانات المتعدّدة (مسارات بيانات NAN) لتصبح أكثر كفاءة. استخدمت الإصدارات السابقة رسائل L2 لتبادل معلومات الأجهزة النظيرة الخاصة بالأجهزة البادئة، ما أدى إلى حدوث وقت استجابة. على الأجهزة التي تعمل بنظام التشغيل Android 12 والإصدارات الأحدث، يمكن ضبط المستجيب (الخادم) لقبول أي جهاز نظير، أي أنّه لا يحتاج إلى معرفة معلومات البادئ مسبقًا. يؤدي ذلك إلى تسريع عملية إعداد مسار البيانات ويتيح إنشاء روابط متعددة من نقطة إلى نقطة من خلال طلب شبكة واحد فقط.
- لمنع إطار العمل من رفض طلبات الاكتشاف أو الاتصال بسبب
نفاد الموارد، يمكنك استدعاء
WifiAwareManager.getAvailableAwareResources()على الأجهزة التي تعمل بنظام التشغيل Android 12 والإصدارات الأحدث. تتيح لك القيمة المعروضة لهذه الطريقة الحصول على عدد مسارات البيانات المتاحة وعدد جلسات النشر المتاحة وعدد جلسات الاشتراك المتاحة.
الاتصال المتزامن بين الأجهزة + الاتصال بالإنترنت
عندما تعمل الأجهزة التي تستهدف الإصدار 12 من نظام التشغيل Android (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث على أجهزة تتضمّن
دعمًا للأجهزة، لن يؤدي استخدام اتصالات
الند للند إلى قطع اتصال
Wi-Fi الحالي عند إنشاء الاتصال بجهاز النظير. للتحقّق من توفّر هذه الميزة، استخدِم WifiManager.isMultiStaConcurrencySupported().
تفعيل الدفع باستخدام NFC عندما تكون الشاشة مطفأة
في التطبيقات التي تستهدف الإصدار 12 من نظام التشغيل Android والإصدارات الأحدث، يمكنك تفعيل الدفعات عبر NFC بدون تشغيل شاشة الجهاز من خلال ضبط requireDeviceScreenOn على false. لمزيد من المعلومات حول الدفعات باستخدام NFC عندما تكون الشاشة مطفأة أو مقفلة، يُرجى الاطّلاع على سلوك الشاشة المطفأة وشاشة القفل.
مساحة التخزين
يوفّر نظام التشغيل Android 12 إمكانات إدارة مساحة التخزين التالية:
- يتيح Media store استخدام
MediaDocumentsProviderعندما يسترد تطبيقك معرّف موارد منتظم (URI) للوسائط يعادل معرّف موارد منتظم (URI) لموفّر مستندات معيّن. - دليل للتسجيلات الصوتية
- إذن
MANAGE_MEDIAالذي يسمح للتطبيق بإجراء عمليات إدارة الوسائط بدون عرض مربّع حوار تأكيد للمستخدم لكل عملية. - يمكن للتطبيقات التي لديها الإذن
MANAGE_EXTERNAL_STORAGEوالإذنQUERY_ALL_PACKAGES، مثل تطبيقات إدارة الملفات، استدعاء نشاط مخصّص لإدارة مساحة التخزين في تطبيق آخر، بشرط أن ينشئ التطبيق الآخر النشاط المخصّص.
الوظيفة الأساسية
التحديثات التلقائية للتطبيقات
يقدّم Android 12 طريقة
setRequireUserAction()
للتطبيقات التي تستخدم واجهة برمجة التطبيقات
PackageInstaller.
تتيح هذه الطريقة لتطبيقات التثبيت إجراء تحديثات للتطبيقات بدون الحاجة إلى تأكيد المستخدم للإجراء.
معلومات عن شريحة تعريف الجهاز
يضيف Android 12 ثابتَين إلى android.os.Build يعرضان معلومات عن طراز شريحة التعريف الخاصة بالمنظومة على الرقاقة (SoC) والشركة المصنّعة لها من خلال حزمة تطوير البرامج (SDK). يمكنك استرداد هذه المعلومات من خلال استدعاء Build.SOC_MANUFACTURER وBuild.SOC_MODEL على التوالي.
تعديلات على واجهات برمجة التطبيقات الأساسية في Java
بناءً على الطلبات والتعاون مع المطوّرين، أضفنا المكتبات الأساسية التالية في Android 12:
| الفئة | واجهات برمجة التطبيقات |
|---|---|
java.lang.Deprecated
|
|
java.lang.Byte
|
|
java.lang.Short
|
|
java.lang.Math
|
|
java.lang.StrictMath
|
|
java.util.Set
|
copyOf()
|
java.util.Map
|
copyOf()
|
java.util.List
|
copyOf()
|
java.time.Duration
|
|
java.time.LocalTime
|