يقدّم نظام التشغيل Android 12 ميزات وواجهات برمجة تطبيقات جديدة رائعة للمطوّرين. تساعدك الأقسام أدناه في التعرّف على ميزات تطبيقاتك والبدء في استخدام واجهات برمجة التطبيقات ذات الصلة.
للحصول على قائمة مفصّلة لواجهات برمجة التطبيقات الجديدة والمعدَّلة والمُزالة، يُرجى الاطّلاع على تقرير اختلافات واجهة برمجة التطبيقات. للحصول على تفاصيل عن واجهات برمجة التطبيقات الجديدة، يُرجى الانتقال إلى مرجع واجهة برمجة تطبيقات Android، حيث يتم تمييز واجهات برمجة التطبيقات الجديدة لسهولة الاطّلاع عليها. للاطّلاع أيضًا على التغييرات في سلوك Android 12 للتطبيقات التي تستهدف Android 12 ولجميع التطبيقات، يُرجى الاطّلاع على التغييرات في سلوك Android 12.
تجربة المستخدم
Material You
يقدّم نظام التشغيل Android 12 لغة تصميم جديدة تُعرف باسم Material You، ما يساعدك في إنشاء تطبيقات أكثر تخصيصًا وجمالًا. لاستخدام أحدث ميزات Material Design 3 في تطبيقاتك، جرِّب الإصدار التجريبي من مكونات Material Design.
تحسينات على التطبيقات المصغّرة
يُعيد نظام التشغيل 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 إنشاء ردود فعل لمسية مستمدة من جلسة صوتية باستخدام vibrater (المُهتز) في الهاتف. ويمنحك ذلك فرصة للاستمتاع بتجربة غامرة أكثر من خلال الألعاب والمحتوى الموسقي. على سبيل المثال، يمكن أن تساعد نغمات الرنين المحسَّنة باللمس في التعرّف على هوية المتصلين، أو يمكن أن تحاكي لعبة قيادة السيارة الشعور بالتضاريس الوعرة.
يُرجى الاطّلاع على مستندات مرجع HapticGenerator
لمزيد من المعلومات.
AppSearch
يقدّم نظام التشغيل Android 12 ميزة AppSearch، وهي محرّك بحث عالي الأداء على الجهاز، بصفتها خدمة نظام. يتيح AppSearch للتطبيقات فهرسة البيانات المنظَّمة والبحث فيها باستخدام إمكانات البحث عن النص الكامل المضمّنة. بالإضافة إلى ذلك، يتوافق AppSearch مع ميزات البحث المضمّنة، مثل الفهرسة والاسترجاع الفعّالَين للغاية، وإمكانية استخدام لغات متعدّدة، وترتيب النتائج حسب مدى الصلة.
يتوفّر AppSearch بنسختَين: فهرس محلي يستخدمه تطبيقك ويتوافق مع الإصدارات القديمة من Android، أو فهرس مركزي يتم الاحتفاظ به للنظام بأكمله في Android 12. باستخدام الفهرس المركزي، يمكن لتطبيقك السماح بعرض بياناته على مساحات واجهة مستخدم النظام من خلال عنصر الذكاء المثبَّت مسبقًا في النظام. تعتمد البيانات التي يتم عرضها بالضبط على مساحات عرض واجهة مستخدم النظام على المصنّع الأصلي للجهاز. بالإضافة إلى ذلك، يمكن لتطبيقك مشاركة البيانات بأمان مع التطبيقات الأخرى، للسماح لها بالبحث في هذه البيانات أيضًا.
اطّلِع على مزيد من المعلومات حول AppSearch في دليل المطوّر، وابدأ استخدامه مع مكتبة AppSearch Jetpack التي تقدّم واجهة برمجة تطبيقات سهلة الاستخدام للمطوّرين، بالإضافة إلى دعم معالج التعليقات التوضيحية.
وضع اللعبة
تتيح لك واجهة برمجة التطبيقات Game Mode API وتدخلات "وضع اللعب" تحسين تجربة اللعب من خلال منح الأولوية للخصائص، مثل الأداء أو عمر البطارية، استنادًا إلى إعدادات المستخدمين أو الإعدادات الخاصة باللعبة.
لمزيد من المعلومات، يُرجى الاطّلاع على وضع "الألعاب".
اقتراحات وتحسينات بشأن ميزة "صورة داخل صورة"
يقدّم نظام التشغيل Android 12 التحسينات التالية على وضع "صورة في صورة":
إتاحة إيماءات جديدة لميزة "صورة في صورة"
يتيح نظام التشغيل Android 12 الآن إيقاف التطبيق مؤقتًا واستخدام لفتات التصغير/التكبير في نافذة PiP:
لإخفاء النافذة، يمكن للمستخدم سحبها إلى الحافة اليمنى أو اليسرى. لإزالة إخفاء النافذة، يمكن للمستخدم النقر على الجزء المرئي من النافذة المخفية أو سحبها للخارج.
يمكن للمستخدم الآن تغيير حجم نافذة "وضع الصورة في الصورة" باستخدام ميزة التصغير/التكبير بإصبعَين.
ميزات جديدة مقترَحة توفّر تجربة انتقال سلسة إلى وضع "صورة في صورة"
أضاف نظام التشغيل 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 السلوك الحالي لتسهيل تنفيذ المستخدمين لأوامر التنقّل باستخدام الإيماءات أثناء استخدام الوضع immersive. بالإضافة إلى ذلك، يوفر Android 12 سلوك التوافق مع الإصدارات القديمة للوضع المُدمج.
مشاركة عناوين URL للعناصر الأخيرة (على هواتف Pixel فقط)
على أجهزة Pixel، يمكن للمستخدمين الآن مشاركة روابط إلى محتوى الويب الذي تمّت مشاهدته مؤخرًا مباشرةً من شاشة "العناصر المستخدَمة مؤخرًا". بعد الانتقال إلى المحتوى في أحد التطبيقات، يمكن للمستخدم التمرير سريعًا إلى شاشة "التطبيقات المستخدَمة مؤخرًا" والعثور على التطبيق الذي شاهد فيه المحتوى، ثم النقر على زر الرابط لنسخ عنوان URL أو مشاركته.
لمزيد من المعلومات، يُرجى الاطّلاع على تفعيل مشاركة عناوين URL للتطبيقات المستخدَمة مؤخرًا.
الأمان والخصوصية
لوحة بيانات الخصوصية
على الأجهزة المتوافقة التي تعمل بنظام التشغيل Android 12 أو إصدار أحدث، تظهر شاشة "لوحة بيانات الخصوصية" في إعدادات النظام. في هذه الشاشة، يمكن للمستخدمين الوصول إلى شاشات منفصلة تعرض أوقات وصول التطبيقات إلى معلومات الموقع الجغرافي والكاميرا والميكروفون. تعرض كل شاشة مخططًا زمنيًا للمرات التي وصلت فيها تطبيقات مختلفة إلى نوع معيّن من البيانات. يوضّح الرسم 1 المخطط الزمني للوصول إلى بيانات معلومة الموقع الجغرافي.
يمكن لتطبيقك تقديم شرح منطقي للمستخدمين لمساعدتهم على فهم سبب وصول تطبيقك إلى معلومات الموقع الجغرافي أو الكاميرا أو الميكروفون. يمكن أن تظهر هذه الأسباب المنطقية على شاشة "لوحة بيانات الخصوصية" الجديدة أو شاشة أذونات التطبيق أو كليهما.
أذونات البلوتوث
يقدّم نظام التشغيل Android 12 أذونات
BLUETOOTH_SCAN
،
BLUETOOTH_ADVERTISE
،
و
BLUETOOTH_CONNECT
. تسهِّل هذه الأذونات على التطبيقات التي تستهدف الإصدار
Android 12 التفاعل مع أجهزة تقنية Bluetooth، خاصةً التطبيقات التي لا تحتاج
إلى الوصول إلى الموقع الجغرافي للجهاز.
تعديل بيانات أذونات البلوتوث في تطبيقك
لإعداد جهازك لاستهداف الإصدار 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 أو إصدارًا أحدث
التحقّق من خصائص الجهاز في شهادات الإثبات هذه. بدءًا من الإصدار
Android 12، يمكن لأي تطبيق يستهدف الإصدار 12 من Android (المستوى 31 لواجهة برمجة التطبيقات) أو إصدارًا أحدث تنفيذ
عملية التحقّق هذه باستخدام أسلوب
setDevicePropertiesAttestationIncluded()
.
تتضمّن خصائص الأجهزة التي تم إنشاؤها الحقول التالية
Build
:
BRAND
DEVICE
MANUFACTURER
MODEL
PRODUCT
إجراءات إشعارات شاشة القفل الآمنة
بدءًا من الإصدار Android 12، تتيح فئة Notification.Action.Builder
استخدام الأسلوب
setAuthenticationRequired()
، ما يسمح لتطبيقك بطلب فتح قفل الجهاز
قبل أن ينفِّذ تطبيقك إجراءً معيّنًا للإشعار. تساعد هذه الطريقة في إضافة
طبقة أمان إضافية إلى الإشعارات على الأجهزة المُقفَلة.
سلاسل أحرف قابلة للترجمة لـ BiometricPrompt
يقدّم Android 12 واجهات برمجة تطبيقات جديدة لمساعدتك في تحسين تجربة المستخدم في عملية مصادقة البصمة في تطبيقك. تتضمّن الفئة المُدمجة الجديدة BiometricManager.Strings
الإجراءات getButtonLabel()
وgetPromptMessage()
وgetSettingName()
، والتي تتيح لتطبيقك استرداد تصنيف زر أو رسالة طلب أو اسم إعداد تطبيق سهل الفهم للمستخدم. استخدِم هذه التصنيفات لإنشاء تعليمات أكثر دقة موجَّهة للمستخدمين تتعلّق بطرق المصادقة البيومترية المستخدَمة، مثل "استخدام ميزة "فتح الجهاز ببصمة الوجه" أو "استخدام بصمة إصبعك للمتابعة".
رصد التصيّد الاحتيالي في تطبيقات المراسلة (على هواتف Pixel فقط)
على أجهزة Pixel المتوافقة، يرصد نظام التشغيل Android 12 عمليات التصيّد الاحتيالي في الرسائل التي يتم تلقّيها في تطبيقات المراسلة الرائجة. يستخدم النظام تكنولوجيا تعلُّم الآلة على الجهاز لرصد الأنشطة المريبة. عند رصد هذه الرسائل، يعرض النظام ميزة أمان متراكبة على واجهة مستخدم تطبيق المراسلة لتحذير المستخدمين. على سبيل المثال، يمكن أن يؤدي رصد التصيّد الاحتيالي إلى تحذير المستخدمين من المخاطر المحتملة التالية:
- الطلبات المريبة، مثل طلب إرسال رمز أو أموال أو ما شابه
- عناوين URL غير الموثوق بها
- المرفقات الضارة
- الروابط المؤدية إلى تطبيقات ضارة
بالإضافة إلى تحذير المستخدم، يتيح له هذا الغلاف أيضًا الإبلاغ عن رسالة مريبة وتقديم ملاحظات حول التحذيرات التي يصدرها النظام.
يمكن للمطوّرين إيقاف هذه الميزة من خلال إضافة علامة بيانات وصفية جديدة تتضمّن السلسلةcom.google.android.ALLOW_PHISHING_DETECTION
في ملفات بيان التطبيق. مثلاً:
<manifest>
<application android:name="com.messagingapp">
<meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />
</application>
</manifest>
الوسائط
تحويل ترميز الوسائط إلى تنسيق متوافق
بدءًا من نظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات)، يمكن للنظام إعادة ترميز فيديوهات HEVC(H.265) وHDR (HDR10 وHDR10+) المسجّلة على الجهاز تلقائيًا إلى تنسيق AVC (H.264)، وهو تنسيق متوافِق بشكلٍ واسع مع المشغّلات العادية. ويستفيد هذا الإجراء من برامج الترميز الحديثة عند توفّرها بدون التضحية بالتوافق مع التطبيقات القديمة.
اطّلِع على تحويل ترميز الوسائط المتوافقة لمزيد من التفاصيل.
فئة الأداء
يقدّم نظام التشغيل Android 12 معيارًا يُعرف باسم فئة الأداء. تحدِّد فئة الأداء إمكانات الأجهزة التي تتجاوز متطلبات Android الأساسية. يُعلِن كل جهاز Android عن فئة الأداء التي يقبلها. يمكن للمطوّرين التحقّق من فئة أداء الجهاز أثناء التشغيل و تقديم تجارب مُحسَّنة تستفيد إلى أقصى حد من capabilities. الجهاز
اطّلِع على فئة الأداء لمزيد من التفاصيل.
تحسينات على ترميز الفيديو
يحدِّد نظام التشغيل Android 12 مجموعة قياسية من المفاتيح للتحكّم في قيمة المَعلمة quantization (QP) لترميز الفيديو، ما يسمح للمطوّرين بتجنُّب استخدام الرمز البرمجي الخاص بالمورّد.
تتوفّر المفاتيح الجديدة في واجهة برمجة التطبيقات
MediaFormat
وأيضاً في
مكتبة وسائط NDK.
اعتبارًا من الإصدار Android 12، تفرض برامج ترميز الفيديو الحد الأدنى من قياس الجودة. ويضمن ذلك عدم مشاهدة المستخدمين فيديوهات ذات جودة منخفضة للغاية عند ترميز الفيديوهات التي تتضمّن مشاهد معقدة للغاية.
التركيز على الصوت
بدءًا من الإصدار 12 من Android (المستوى 31 لواجهة برمجة التطبيقات)، عندما يطلب تطبيق التركيز على الصوت بينما يكون تطبيق آخر هو الذي يحظى بالتركيز ويتم تشغيله، يخفض النظام مستوى صوت التطبيق الذي يتم تشغيله.
اطّلِع على ميزة "التركيز على الصوت" في Android 12 والإصدارات الأحدث لمزيد من التفاصيل.
تحديثات MediaDrm
لتحديد ما إذا كان مكوّن وحدة فك التشفير الآمن مطلوبًا مع واجهة برمجة التطبيقات
MediaDrm
الحالية، عليك اتّباع الخطوات التالية:
- أنشئ
MediaDrm
. - افتح جلسة للحصول على معرّف جلسة.
- أنشئ
MediaCrypto
باستخدام معرّف الجلسة. - الاتصال بالرقم
MediaCrypto.requiresSecureDecoderComponent(mimeType)
.
باستخدام الطريقتَين الجديدتَين requiresSecureDecoder(@NonNull String mime)
و
requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level)
، يمكنك تحديد ذلك فور إنشاء MediaDrm
.
الكاميرا
إضافات مورّدي Camera2
أنشأ العديد من شركاء المصنّعين للأجهزة إضافات مخصّصة للكاميرا، مثل تأثير "موهبة بوكيه" والنطاق العالي الديناميكية (HDR) و"وضع الليل" وغيرها، ويريد هؤلاء المصنّعون أن تستخدم التطبيقات هذه الإضافات لتوفير تجارب مختلفة على أجهزتهم. تتيح مكتبة CameraX استخدام إضافات المورّدين المخصّصة هذه. في Android 12، يتم الآن عرض إضافات المورّدين هذه مباشرةً في المنصة.
تساعد هذه الإضافة التطبيقات التي تتضمّن عمليات تنفيذ معقدة
Camera2
للاستفادة من إضافات المورّدين بدون الحاجة إلى إجراء
تغييرات كبيرة على الرمز القديم. توفّر واجهات برمجة تطبيقات Camera2 Extension API مجموعة التعديلات نفسها تمامًا التي يوفّرها CameraX، وهي متاحة حاليًا على العديد من
الأجهزة المختلفة، لذا يمكنك استخدامها بدون أي
إعدادات إضافية.
لمزيد من المعلومات، يُرجى الاطّلاع على
CameraExtensionCharacteristics
.
إتاحة كاميرا Quad Bayer
يتم حاليًا شحن العديد من أجهزة Android مزودة بأجهزة استشعار كاميرا ذات دقة فائقة، وعادةً ما تكون هذه الأجهزة مزودة بنماذج Quad أو Nona Bayer، ما يوفر مرونة كبيرة في ما يتعلّق بجودة الصورة والأداء في الإضاءة المنخفضة. يقدّم Android 12 واجهتَي برمجة تطبيقات جديدة لنظام التشغيل تتيحان للتطبيقات التابعة لجهات خارجية الاستفادة إلى أقصى حد من هذه المستشعرات المتنوعة. تتوافق واجهات برمجة التطبيقات الجديدة مع السلوك الفريد لهذه الحساسات، وتراعي أنّها قد تتوافق مع إعدادات وتركيبات مختلفة للبث عند التشغيل في درجة الدقة الكاملة أو وضع "الحد الأقصى للدقة" مقارنةً بالوضع "التلقائي".
الرسومات والصور
منح التطبيقات إذن الوصول المباشر إلى عمليات تتبُّع علامات الحذف
بدءًا من الإصدار 12 من نظام Android، يمكنك الوصول إلى سجلّ الأعطال الأصلي لتطبيقك باعتباره
عازلاً للبروتوكول من خلال الأسلوب
ApplicationExitInfo.getTraceInputStream()
. يتم تسلسل ذاكرة تخزين بروتوكول البيانات باستخدام هذا المخطّط.
في السابق، كانت الطريقة الوحيدة للوصول إلى هذه المعلومات هي من خلال ملف برمجي يُعرف باسم
Android Debug Bridge (adb).
لمزيد من المعلومات، يُرجى الاطّلاع على مقالة منح التطبيقات إذن الوصول المباشر إلى عمليات تتبُّع علامات محو البيانات.
إتاحة استخدام صور AVIF
يتيح نظام Android 12 استخدام الصور التي تستخدم تنسيق ملف الصورة AV1 (AVIF). AVIF هو تنسيق حاوية للصور وتسلسلات الصور التي تم ترميزها باستخدام AV1. يستفيد تنسيق AVIF من المحتوى المشفَّر داخل اللقطة من ملف ملف ملف الفيديو المضغوط. يؤدي ذلك إلى تحسين جودة الصورة بشكل كبير بحجم الملف نفسه مقارنةً بتنسيقات الصور القديمة، مثل JPEG. للحصول على نظرة معمّقة على مزايا هذا التنسيق، يمكنك الاطّلاع على مقالة المدونة التي كتبها "جاك أرشيبالد".
تمويه وفلاتر ألوان وتأثيرات أخرى أسهل
يضيف نظام التشغيل Android 12 RenderEffect
الجديد الذي يطبّق تأثيرات الرسومات الشائعة، مثل التمويه والفلاتر الملونة وتأثيرات Shader في 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، كانت واجهة برمجة التطبيقات هذه تُفكّ ترميز الصورة الأولى فقط من
الرسوم المتحرّكة بتنسيقات WebP وGIF وAPNG.
استخدِم ImageDecoder
بدلاً من المكتبات التابعة لجهات خارجية من أجل تقليل حجم APK
والاستفادة من التحديثات المستقبلية المتعلّقة بالأمان والأداء.
لمزيد من التفاصيل حول واجهة برمجة التطبيقات، يُرجى الرجوع إلى مرجع واجهة برمجة التطبيقات والعيّنة على GitHub.
إمكانية الاتصال
إبقاء التطبيقات المصاحبة نشطة
لتلبية حاجة التطبيقات المصاحبة إلى البقاء قيد التشغيل لإدارة الجهاز،introduces Android 12 واجهات برمجة تطبيقات تؤدي ما يلي:
- يتيح لك هذا الإذن تنشيط تطبيق عندما يكون جهاز مصاحب في النطاق.
- ضمان مواصلة تنفيذ العملية عندما يظل الجهاز ضمن النطاق
لاستخدام واجهات برمجة التطبيقات، يجب أن تكون أجهزتك متصلة باستخدام مدير
الأجهزة المصاحبة. لمزيد من
المعلومات، يُرجى الاطّلاع على
CompanionDeviceManager.startObservingDevicePresence()
و
CompanionDeviceService.onDeviceAppeared()
.
الملفات الشخصية لأداة إدارة الأجهزة المصاحبة
يمكن لتطبيقات الشركاء على نظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث استخدام ملفات ملف الشخصي للأجهزة المصاحبة عند الربط بساعة. يبسط استخدام الملف الشخصي عملية التسجيل من خلال تجميع منح مجموعة من الأذونات الخاصة بنوع الجهاز في خطوة واحدة.
يتم منح الأذونات المجمّعة للتطبيق المصاحب بعد اتصال الجهاز، ولا تستمر هذه الأذونات إلا عندما يكون الجهاز مرتبطًا. يؤدي حذف التطبيق أو إزالة الربط إلى إزالة الأذونات.
لمزيد من المعلومات، يُرجى الاطّلاع على
AssociationRequest.Builder.setDeviceProfile()
.
تحسينات على تقدير معدل نقل البيانات
في نظام التشغيل Android 12، تم تحسين إمكانات تقدير معدل نقل البيانات التي يوفّرها كلّ من
getLinkDownstreamBandwidthKbps()
و
getLinkUpstreamBandwidthKbps()
لكل من الاتصال بشبكة Wi-Fi والاتصال الخلوي. القيم التي يتم عرضها الآن
تمثل متوسط معدل نقل البيانات المرجح على مدار الوقت لكل مشغّل شبكة الجوَّال أو WiFi
وعنوان مجموعة الخدمات (SSID) ونوع الشبكة ومستوى الإشارة، وذلك على مستوى جميع التطبيقات على الجهاز.
ويمكن أن يؤدي ذلك إلى تقديم تقدير أكثر دقة وواقعية للمعدل المتوقع للعمليات،
وتوفير تقديرات لبدء تشغيل تطبيقك، ويتطلب عددًا أقل من الدورات مقارنةً باستخدام طرق أخرى لتقدير معدل العمليات.
تحسينات Wi-Fi Aware (الشبكة اللاسلكية المتوفّرة)
يضيف نظام التشغيل Android 12 بعض التحسينات على ميزة "الاستشعار بشبكة Wi-Fi":
- على الأجهزة التي تعمل بنظام Android 12 (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكنك استخدام أسلوب callback في دالة
onServiceLost()
لتتلقّى تنبيهًا عندما يفقد تطبيقك خدمة تم اكتشافها بسبب stopped التوقف عن العمل أو الخروج من النطاق. - تم تغيير طريقة إعداد مسارات البيانات المتعدّدة (مسارات بيانات NAN) لتكون أكثر فعالية. كانت الإصدارات السابقة تستخدِم المراسلة من المستوى 2 لتبادل معلومات العميل المشارِك للمشغِّلين، ما أدّى إلى حدوث تأخُّر. على الأجهزة التي تعمل بالإصدار Android 12 والإصدارات الأحدث، يمكن ضبط المُجيب (الخادم) لقبول أي جهاز متصل، أي أنّه لا يحتاج إلى معرفة معلومات المُشغِّل مُسبَقًا. ويؤدي ذلك إلى تسريع عملية إعداد مسار البيانات وتفعيل روابط متعددة بين نقطتَين من خلال طلب واحد فقط على الشبكة.
- لمنع الإطار من رفض طلبات الاكتشاف أو الربط بسبب
نفاد الموارد، يمكنك على الأجهزة التي تعمل بنظام التشغيل Android 12 والإصدارات
الأحدث الاتصال بـ
WifiAwareManager.getAvailableAwareResources()
. تتيح لك القيمة المعروضة من هذه الطريقة الحصول على عدد مسارات البيانات المتاحة وعدد جلسات النشر المتاحة وعدد جلسات الاشتراك المتاحة.
الاتصال بالإنترنت وشبكة الند للند في الوقت نفسه
عندما تعمل الأجهزة التي تستهدف الإصدار 12 من Android (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث على الأجهزة المزوّدة
بإمكانية استخدام الأجهزة، لن يؤدي استخدام اتصالات peer-to-peer إلى إيقاف اتصال Wi-Fi الحالي عند إنشاء الاتصال بالجهاز المشابه. للاطّلاع على مدى توفّر هذه الميزة، استخدِم رمز WifiManager.isMultiStaConcurrencySupported()
.
تفعيل الدفع عبر تقنية NFC مع إطفاء الشاشة
في التطبيقات التي تستهدف الإصدار 12 من نظام التشغيل Android والإصدارات الأحدث، يمكنك تفعيل ميزة الدفع عبر تكنولوجيا NFC بدون تشغيل شاشة الجهاز من خلال ضبط القيمة
requireDeviceScreenOn
على
false
. لمزيد من المعلومات عن الدفعات عبر تقنية NFC عندما تكون الشاشة مطفأة أو مقفلة، يُرجى الاطّلاع على
سلوك الشاشة المطفأة وشاشة القفل.
مساحة التخزين
يقدّم نظام التشغيل Android 12 ميزات إدارة التخزين التالية:
- إتاحة متجر الوسائط لـ
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
|