ميزات Android 10 وواجهات برمجة التطبيقات

يقدّم نظام Android 10 ميزات وإمكانات رائعة للمستخدمين والمطوّرين. يسلّط هذا المستند الضوء على الميزات المتاحة للمطوّرين.

للتعرّف على واجهات برمجة التطبيقات، يمكنك قراءة تقرير اختلافات واجهة برمجة التطبيقات أو الانتقال إلى مرجع واجهة برمجة تطبيقات Android، والبحث عن واجهات برمجة التطبيقات التي "تمت إضافتها في المستوى 29 من واجهة برمجة التطبيقات". ننصحك أيضًا بالاطّلاع على التغييرات في سلوك Android 10 (بالنسبة إلى التطبيقات التي تستهدف المستوى 29 من واجهة برمجة التطبيقات وجميع التطبيقات)، بالإضافة إلى التغييرات في الخصوصية، للتعرّف على الجوانب التي قد تؤثر فيها التغييرات في النظام الأساسي على تطبيقاتك.

تحسينات الأمان

يقدِّم نظام التشغيل Android 10 عددًا من ميزات الأمان التي تلخّصها الأقسام التالية.

مربّعات حوار محسَّنة للمصادقة باستخدام المقاييس الحيوية

يقدّم Android 10 التحسينات التالية لدعم المصادقة بالمقاييس الحيوية:

  • تحقّق من إمكانية المصادقة بالمقاييس الحيوية.
  • آلية احتياطية تتيح للمستخدم إجراء المصادقة باستخدام رقم التعريف الشخصي أو النقش أو كلمة المرور على جهازه في حال لم يتمكّن من المصادقة باستخدام إدخال المقاييس الحيوية.
  • يشير ذلك المصطلح إلى تلميح يخبر النظام بعدم طلب تأكيد من المستخدم بعد أن يصادق عليه باستخدام وسيلة مقاييس حيوية ضمنية. على سبيل المثال، يمكنك إخبار النظام بأنه لا يجب طلب أي تأكيد آخر بعد أن يجري المستخدم المصادقة باستخدام المصادقة بالوجه.

تشغيل رمز DEX المضمّن مباشرةً من حزمة APK

بدءًا من الإصدار Android 10، يمكنك أن تطلب من النظام الأساسي تشغيل رمز DEX المضمّن مباشرةً من ملف APK لتطبيقك. ويمكن أن يساعد هذا الخيار في منع الهجوم إذا تمكن أحد المهاجمين من التلاعب بالرمز البرمجي المُجمع محليًا على الجهاز.

للمزيد من المعلومات، يُرجى الاطّلاع على تشغيل رمز DEX المضمّن مباشرةً من حِزمة APK.

دعم TLS 1.3

يتيح نظام التشغيل Android 10 استخدام بروتوكول أمان طبقة النقل (TLS) 1.3. يُعد الإصدار 1.3 من بروتوكول أمان طبقة النقل مراجعة رئيسية لمعيار بروتوكول أمان طبقة النقل (TLS) والذي يشمل مزايا الأداء والأمان المحسّن. وتشير معاييرنا إلى إمكانية إنشاء الاتصالات الآمنة بشكل أسرع بنسبة 40% باستخدام TLS 1.3 مقارنة بـ TLS 1.2.

للحصول على مزيد من التفاصيل حول تنفيذ بروتوكول أمان طبقة النقل (TLS) 1.3، يمكنك الاطّلاع على قسم بروتوكول أمان طبقة النقل (TLS) ضمن صفحة تغييرات السلوك لجميع التطبيقات.

واجهة برمجة تطبيقات Public Conscrypt

بدءًا من نظام التشغيل Android 10، أصبح موفِّر أمان Conscrypt يشمل واجهة برمجة تطبيقات عامة لوظائف بروتوكول أمان طبقة النقل (TLS).

تحتوي مجموعة الفئات ضمن android.net.ssl على طرق ثابتة للوصول إلى وظائف غير متاحة من واجهات برمجة تطبيقات javax.net.ssl العامة. ويمكن استنتاج أسماء هذه الفئات باعتبارها صيغة جمع لفئة javax.net.ssl المقابلة. على سبيل المثال، الرمز الذي يعمل على مثيلات javax.net.ssl.SSLSocket يمكنه بدلاً من ذلك استخدام طرق من SSLSockets.

ميزات إمكانية الاتصال

يتضمّن نظام Android 10 العديد من التحسينات ذات الصلة بالشبكات والاتصال.

واجهة برمجة تطبيقات اتصال شبكة Wi-Fi

يتيح نظام التشغيل Android 10 إمكانية الاتصال من نظير إلى نظير. تتيح هذه الميزة لتطبيقك أن تطلب من المستخدم تغيير نقطة الوصول التي يتصل بها الجهاز، وذلك باستخدام WifiNetworkSpecifier لوصف خصائص الشبكة المطلوبة. يُستخدم الاتصال من نظير إلى نظير لأغراض لا تتعلق بتوفير الشبكة، مثل إعداد التمهيد للأجهزة الثانوية مثل أجهزة Chromecast وأجهزة Google Home.

لمزيد من المعلومات، يُرجى الاطّلاع على واجهة برمجة تطبيقات طلب شبكة Wi-Fi للاتصال من نظير إلى نظير.

واجهة برمجة تطبيقات اقتراحات شبكة Wi-Fi

يتيح نظام التشغيل Android 10 إمكانية استخدام تطبيقك ليطلب من المستخدم الاتصال بنقطة وصول Wi-Fi. يمكنك تقديم اقتراحات للشبكة التي تريد الاتصال بها. ستختار المنصة في النهاية نقطة الوصول التي يجب قبولها بناءً على البيانات الواردة من تطبيقاتك والتطبيقات الأخرى.

لمزيد من المعلومات عن هذه الميزة، راجِع اقتراح شبكات Wi-Fi.

تحسينات على وضعَي التشغيل العالي الأداء ووقت الاستجابة المنخفض على شبكة Wi-Fi

يتيح لك Android 10 تقديم تلميح للمودم الأساسي لتقليل وقت الاستجابة.

يوسِّع Android 10 نطاق واجهة برمجة تطبيقات قفل Wi-Fi كي يتم تفعيل وضع الأداء العالي ووضع وقت الاستجابة المنخفض بشكل فعّال. يتم إيقاف توفير طاقة Wi-Fi بسبب المحتوى العالي الأداء ووضع وقت الاستجابة المنخفض، ويمكن تفعيل المزيد من تحسين وقت الاستجابة في وضع وقت الاستجابة السريع، حسب دعم المودم.

لا يتم تفعيل وضع وقت الاستجابة السريع إلا عند تشغيل التطبيق الذي يكتسب القفل في المقدّمة وتكون الشاشة مفعّلة. يعد وضع وقت الاستجابة المنخفض مفيدًا بشكل خاص لتطبيقات الألعاب على الهاتف المحمول في الوقت الفعلي.

عمليات البحث المتخصصة في محلل نظام أسماء النطاقات

يضيف Android 10 دعمًا أصليًا لعمليات بحث نظام أسماء النطاقات المتخصصة باستخدام كل من عمليات البحث في النص الواضح ووضع نظام أسماء النطاقات عبر بروتوكول أمان طبقة النقل (DNS). في السابق، كانت أداة حلّ نظام أسماء النطاقات في النظام الأساسي متوافقة مع سجلّات A وAAAA فقط، وهي تسمح بالبحث فقط عن عناوين IP المرتبطة بالاسم، ولكنّها لم تكن تستخدم أي أنواع سجلّات أخرى. توفّر واجهة برمجة تطبيقات DnsResolver درجة دقة عامة غير متزامنة، ما يتيح لك البحث عن SRV وNAPTR وأنواع سجلات أخرى. لاحظ أن تحليل الرد يُترك للتطبيق لتنفيذه.

بالنسبة إلى التطبيقات المستندة إلى NDK، يُرجى الاطّلاع على android_res_nsend.

اتصال سهل بـ Wi-Fi

يتيح لك نظام التشغيل Android 10 استخدام "الاتصال السهل" لتوفير بيانات اعتماد Wi-Fi لجهاز نظير، كبديل لنظام WPS الذي تم إيقافه. يمكن للتطبيقات دمج Easy Connect في عملية الإعداد وإدارة الحسابات باستخدام إجراء ACTION_PROCESS_WIFI_EASY_CONNECT_URI.

للحصول على مزيد من المعلومات حول هذه الميزة، راجِع Wi-Fi Easy Connect.

واجهة برمجة تطبيقات اتصال Wi-Fi المباشر

تحتوي فئتا واجهة برمجة التطبيقات WifiP2pConfig وWifiP2pManager على تحديثات في Android 10 لتتيح إمكانية إنشاء اتصال سريع بشبكة Wi-Fi Direct باستخدام معلومات محددة مسبقًا. تتم مشاركة هذه المعلومات عبر قناة جانبية، مثل البلوتوث أو NFC.

يوضح عينة التعليمات البرمجية التالية كيفية إنشاء مجموعة باستخدام معلومات محددة مسبقًا:

Kotlin

val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager
val channel = manager.initialize(this, mainLooper, null)

// prefer 5G band for this group
val config = WifiP2pConfig.Builder()
    .setNetworkName("networkName")
    .setPassphrase("passphrase")
    .enablePersistentMode(false)
    .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
    .build()

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null)

Java

WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
Channel channel = manager.initialize(this, getMainLooper(), null);

// prefer 5G band for this group
WifiP2pConfig config = new WifiP2pConfig.Builder()
.setNetworkName("networkName")
.setPassphrase("passphrase")
.enablePersistentMode(false)
.setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
.build();

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null);

للانضمام إلى مجموعة باستخدام بيانات الاعتماد، استبدِل manager.createGroup() بما يلي:

Kotlin

manager.connect(channel, config, null)

Java

manager.connect(channel, config, null);

القنوات الموجَّهة لاتصال Bluetooth LE (CoC)

يتيح نظام التشغيل Android 10 لتطبيقك استخدام اتصالات BLE CoC لنقل مصادر بيانات أكبر بين جهازين من أجهزة BLE. تعمل هذه الواجهة على تجريد ميكانيكا البلوتوث والاتصال لتبسيط التنفيذ.

ميزات الاتصال الهاتفي

يتضمّن نظام Android 10 العديد من التحسينات ذات الصلة بالاتصال الهاتفي.

تحسينات على جودة المكالمات

يتيح Android 10 جمع معلومات حول جودة المكالمات الجارية للنظام الفرعي للوسائط المتعددة (IMS)، بما في ذلك الجودة الصادرة من الشبكة وإليها، على الأجهزة التي تتوافق مع هذه الميزة.

فحص المكالمات وإظهار رقم المتّصل

يوفّر Android 10 لتطبيقك وسيلة لتحديد المكالمات غير المتوفّرة في دفتر عناوين المستخدم على أنّها مكالمات محتملة غير مرغوب فيها، ولرفض المكالمات غير المرغوب فيها تلقائيًا نيابةً عن المستخدم. ويتم تسجيل معلومات حول هذه المكالمات المحظورة باعتبارها مكالمات محظورة في سجل المكالمات، وذلك لتوفير مزيد من الشفافية للمستخدم عند فقدان المكالمات. يغنيك استخدام واجهة برمجة التطبيقات هذه عن الحاجة إلى الحصول على أذونات READ_CALL_LOG من المستخدم لتوفير وظيفة فحص المكالمات وميزة "إظهار رقم المتّصل".

واجهة برمجة التطبيقات لخدمة إعادة توجيه المكالمات

يغيِّر Android 10 طريقة التعامل مع "الروابط والعناصر الإعلانية حسب نية العميل". تم إيقاف بث "NEW_OUTGOING_CALL" نهائيًا واستبداله بواجهة برمجة تطبيقات CallRedirectionService. توفّر لك واجهة برمجة التطبيقات CallRedirectionService واجهات لتعديل المكالمات الصادرة التي يجريها نظام Android الأساسي. على سبيل المثال، قد تلغي التطبيقات التابعة لجهات خارجية المكالمات وتعيد توجيهها عبر بروتوكول VoIP.

تحسينات في إنشاء الملفات على وحدة التخزين الخارجية

بالإضافة إلى تقديم مساحة التخزين الفرعي، يضيف Android 10 الإمكانات التالية ذات الصلة بمساحة التخزين الخارجية:

  • يمكنك استخدام العلامة IS_PENDING لمنح تطبيقك إذنًا حصريًا بالوصول إلى ملف وسائط كما تتم كتابته على القرص.
  • إذا كنت على دراية بموقع معيّن يجب تخزين الملفات فيه، يمكنك تقديم تلميح للنظام بشأن مكان تخزين الملفات المكتوبة حديثًا.
  • ويكون لكل جهاز تخزين خارجي اسم فريد لمستوى الصوت.

الوسائط والرسومات

يقدّم نظام التشغيل Android 10 الميزات الجديدة التالية للوسائط والرسومات وواجهات برمجة التطبيقات:

جارٍ مشاركة إدخال الصوت

يتيح نظام Android 10 لتطبيقَين مشاركة الإدخال الصوتي في الوقت نفسه. للحصول على المعلومات الكاملة، يُرجى الاطّلاع على مشاركة إدخال الصوت.

تسجيل تشغيل الصوت

يتيح نظام التشغيل Android 10 للتطبيقات إمكانية تسجيل تشغيل الصوت من تطبيقات أخرى. للحصول على المعلومات الكاملة، يمكنك الاطّلاع على التقاط التشغيل.

شريط التمرير في إشعارات MediaStyle

بدءًا من الإصدار 10 من نظام التشغيل Android، تعرض إشعارات "MediaStyle" شريط تمرير. يعرض شريط التمرير تقدّم التشغيل من PlaybackState.getPosition()، وفي بعض الحالات يمكن استخدام شريط التمرير للانتقال إلى مكان معيّن في برنامج التشغيل. يتم التحكّم في مظهر شريط التمرير وسلوكه من خلال القواعد التالية:

  • يظهر شريط التمرير إذا كان هناك MediaSession نشط ومدته (المحددة بواسطة MediaMetadata.METADATA_KEY_DURATION) أكبر من صفر. وهذا يعني أنّ الشريط لا يظهر في أحداث البث غير المحدَّدة، مثل أحداث البث المباشر والبث الإذاعي.
  • إذا نفذت الجلسة ACTION_SEEK_TO، يمكن للمستخدم سحب شريط التمرير للتحكم في موقع التشغيل.

واجهة برمجة تطبيقات MIDI الأصلية

إنّ واجهة برمجة التطبيقات MIDI الأصلية لنظام التشغيل Android (AMidi) تتيح لمطوّري التطبيقات إمكانية إرسال بيانات MIDI واستلامها باستخدام رمز C/C++ ، ودمجها بشكل وثيق مع منطق التحكم في الصوت وC/C++ ، وتقليل الحاجة إلى JNI.

لمزيد من المعلومات، يُرجى الاطّلاع على واجهة برمجة تطبيقات MIDI الأصلية لنظام التشغيل Android.

تحسينات MediaCodecInfo

يضيف Android 10 طرقًا إلى MediaCodecInfo تكشف المزيد من المعلومات عن برنامج الترميز.

لمزيد من المعلومات، اطّلِع على برامج ترميز الوسائط.

واجهة برمجة التطبيقات Thermal API

عندما ترتفع درجة حرارة الأجهزة بشكل كبير، قد تستهلك طاقة وحدة المعالجة المركزية (CPU) و/أو وحدة معالجة الرسومات (GPU) ما يؤثر في التطبيقات والألعاب بطرق غير متوقّعة. من المرجح أن تحدث مشاكل في التطبيقات التي تستخدم رسومات معقدة أو عمليات حسابية ثقيلة أو نشاطًا متواصلاً على الشبكة، وقد تختلف هذه المشاكل على الأجهزة استنادًا إلى مجموعة الشرائح والترددات الأساسية ومستويات التكامل وحزمة الجهاز وشكل الجهاز.

في نظام التشغيل Android 10، يمكن للتطبيقات والألعاب استخدام واجهة برمجة تطبيقات حرارية لمراقبة التغيُّرات التي تطرأ على الجهاز واتّخاذ الإجراءات اللازمة للحفاظ على انخفاض استهلاك الطاقة لاستعادة درجات الحرارة العادية. تسجّل التطبيقات أداة استماع في PowerManager يبلغ النظام من خلاله عن حالة الحرارة المستمرة التي تتراوح من الضوء والمتوسطة والشديدة والحرجة والطوارئ وإيقاف التشغيل.

عندما يبلغ الجهاز عن الإجهاد الحراري، يمكن للتطبيقات والألعاب المساعدة في إيقاف الأنشطة المستمرة لتقليل استخدام الطاقة بطرق مختلفة. على سبيل المثال، يمكن لتطبيقات البث تقليل درجة الدقة/معدل نقل البيانات أو حركة المرور على الشبكة، ويمكن لتطبيق الكاميرا إيقاف تحسين الفلاش أو الصورة بشكل مكثف، ويمكن للعبة تقليل معدل الإطارات أو تركيب المضلع في اللعبة، كما يمكن لتطبيق الوسائط تقليل مستوى صوت مكبر الصوت، كما يمكن لتطبيق الخرائط إيقاف نظام تحديد المواقع العالمي (GPS).

تتطلّب واجهة برمجة التطبيقات الحرارية طبقة تجريد الأجهزة (HAL) جديدة للأجهزة، وهي متوافقة حاليًا مع أجهزة Pixel التي تعمل بنظام التشغيل Android 10، ونحن نعمل مع شركائنا في مجال تصنيع الأجهزة لتوفير دعم واسع النطاق للمنظومة المتكاملة في أسرع وقت ممكن.

الكاميرا والصور

يقدّم Android 10 الميزات الجديدة التالية المتعلقة بالكاميرا والصور:

التوافق مع الكاميرا الأحادية اللون

قدَّم نظام Android 9 (المستوى 28 من واجهة برمجة التطبيقات) لأول مرة إمكانية الكاميرا الأحادية اللون. يضيف نظام Android 10 العديد من التحسينات إلى دعم الكاميرا الأحادية اللون:

  • يتوافق تنسيق البث Y8 مع تحسين كفاءة الذاكرة.
  • إتاحة التقاط DNG الأولي أحادي اللون.
  • تقديم التعدادين MONO وNIR CFA للتمييز بين الكاميرا الأحادية اللون العادية وكاميرات الأشعة تحت الحمراء القريبة

يمكنك استخدام هذه الميزة لالتقاط صورة أصلية أحادية اللون. قد يستخدم جهاز منطقي متعدد الكاميرات كاميرا أحادية اللون ككاميرا فرعية مادية للحصول على جودة أفضل للصور في إضاءة منخفضة.

تنسيق العمق الديناميكي

بدءًا من نظام التشغيل Android 10، يمكن للكاميرات تخزين بيانات عمق الصورة في ملف منفصل، باستخدام مخطط جديد يُسمى تنسيق العمق الديناميكي (DDF). يمكن للتطبيقات طلب صورة بتنسيق JPG وبياناتها الوصفية المفصّلة باستخدام هذه المعلومات لتطبيق أيّ تمويه تريده في مرحلة ما بعد المعالجة بدون تعديل بيانات الصورة الأصلية.

لقراءة مواصفات هذا التنسيق، يمكن الاطّلاع على تنسيق العمق الديناميكي.

تنسيق ملف صور عالي الكفاءة

تنسيق ملف الصور عالي الكفاءة (HEIF) هو تنسيق عادي للصور والفيديوهات يتيح ترميزًا بجودة أعلى وحجم ملف أصغر مقارنةً بتنسيقات الملفات الأخرى.

لمزيد من المعلومات عن تنسيق الملف، يُرجى الاطّلاع على HEIC.

تحسينات على الكاميرات المتعدّدة

يحسّن Android 10 عملية دمج كاميرات متعدّدة في كاميرا منطقية واحدة، وهي ميزة تم تقديمها في Android 9 (المستوى 28 من واجهة برمجة التطبيقات). تمت إضافة ما يلي إلى Camera2 API:

  • isSessionConfigurationSupported(SessionConfiguration sessionConfig): تتيح لك هذه الميزة الاستعلام عن إمكانية استخدام إعداد الجلسة التي تم تمريرها لإنشاء جلسة تصوير كاميرا أم لا.

  • LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID: تتيح لك هذه السمة تحديد معرّف الكاميرا الفعلية النشطة التي تدعم جهاز كاميرا منطقي. ويمكنك استخدام المعرّفات التي تم عرضها لطلب مصادر بيانات منطقية وتدفقات فعلية من الكاميرا الفرعية لتحسين كفاءة استهلاك الطاقة.

واجهة برمجة التطبيقات لخدمات تسهيل الاستخدام

يقدّم نظام التشغيل Android 10 الميزات الجديدة التالية لخدمة تسهيل الاستخدام وواجهات برمجة التطبيقات:

علامة مفتاح إدخال AccessibilityNodeInfo

بدءًا من نظام التشغيل Android 10، يمكنك طلب البيانات من isTextEntryKey() لتحديد ما إذا كان AccessibilityNodeInfo المحدَّد يمثّل مفتاح إدخال نص يشكّل جزءًا من لوحة المفاتيح أو لوحة المفاتيح.

الوصف الشفهي لمربّع حوار أدوات تسهيل الاستخدام

في حال احتاج المستخدمون إلى تنفيذ اختصار تسهيل الاستخدام لبدء خدمة لتسهيل الاستخدام، يسمح Android 10 بأن يصاحب مربّع الحوار مطالبة بتحويل النص إلى كلام إذا طلبت الخدمة ذلك.

اختصار تسهيل الاستخدام عند تفعيل ميزة التنقّل بالإيماءات

عند تفعيل ميزة التنقُّل بالإيماءات في نظام Android 10، لن يكون زر تسهيل الاستخدام مرئيًا أو قابلاً للاختيار. للوصول إلى قائمة خدمات تسهيل الاستخدام، يجب على المستخدمين إجراء إحدى الإيماءات التالية:

  • مرِّر سريعًا بإصبعين للأعلى.
  • مرِّر سريعًا بإصبعين إلى الأعلى مع الاستمرار.

اختصار تسهيل الاستخدام للوحة المفاتيح الخارجية

في نظام التشغيل Android 10، يمكن للمستخدمين تشغيل اختصار تسهيل الاستخدام على لوحة مفاتيح خارجية بالضغط على Control+Alt+Z.

تحسين وحدة التحكّم الافتراضية بلوحة المفاتيح

في نظام التشغيل Android 10، يمكن لخدمات تسهيل الاستخدام طلب عرض لوحة المفاتيح الإلكترونية حتى عندما يرصد الجهاز وجود لوحة مفاتيح صلبة متصلة. ويمكن للمستخدمين إلغاء هذا السلوك.

مهلات إمكانية الوصول التي يحددها المستخدم

يقدّم Android 10 واجهة برمجة تطبيقات getRecommendedTimeoutMillis(). توفر هذه الطريقة دعمًا للمهلات التي يحددها المستخدم لعناصر واجهة المستخدم التفاعلية وغير التفاعلية. تتأثر القيمة المعروضة بكل من تفضيلات المستخدم وواجهات برمجة تطبيقات خدمة إمكانية الوصول.

تحسينات الملء التلقائي

يحتوي الإصدار 10 من نظام التشغيل Android على التحسينات التالية على خدمة الملء التلقائي.

طلبات الملء التلقائي ذات الصلة بالتوافق

يمكنك استخدام العلامة FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST لتحديد ما إذا كان قد تم إنشاء طلب الملء التلقائي في وضع التوافق.

حفظ اسم المستخدم وكلمة المرور في آنٍ واحد

يمكنك دعم الحالات التي يستخدم فيها التطبيق أنشطة متعددة لعرض اسم المستخدم وكلمة المرور والحقول الأخرى باستخدام العلامة SaveInfo.FLAG_DELAY_SAVE.

تفاعل المستخدم مع واجهة مستخدم الحفظ

يمكنك إظهار حقل كلمة المرور وإخفاؤه في مربع حوار الحفظ من خلال تعيين إجراء استماع في مربع الحوار وتغيير إمكانية رؤية كلمة المرور المقابلة للعرض عن بُعد.

دعم تحديث مجموعات البيانات

يمكن لميزة "الملء التلقائي" تعديل كلمات المرور الحالية. على سبيل المثال، إذا خزّن المستخدم كلمة مرور من قبل، وحفظ كلمة مرور جديدة، ستطلب ميزة "الملء التلقائي" من المستخدم تعديل كلمة المرور الحالية بدلاً من حفظ كلمة مرور جديدة.

تحسينات على تصنيف الحقول

يحتوي الإصدار 10 من نظام التشغيل Android على التحسينات التالية على واجهة برمجة تطبيقات التصنيف الميداني.

الدالة الإنشائية UserData.Builder

تم تغيير الدالة الإنشائية UserData.Builder لمحاذاة النمط Builder بشكل أفضل.

السماح بربط قيمة بأنواع متعددة من أرقام تعريف الفئات

عند استخدام UserData.Builder في Android 10، يمكنك الآن ربط قيمة بأنواع متعددة من أرقام تعريف الفئات. في الإصدارات السابقة، كان يتم استثناء استثناء إذا تمت إضافة قيمة أكثر من مرة.

دعم محسّن لأرقام بطاقات الائتمان

يمكن لتصنيف الحقل الآن اكتشاف الأرقام المكونة من أربعة أرقام باعتبارها الأرقام الأربعة الأخيرة من رقم بطاقة الائتمان.

إتاحة تصنيف الحقول الخاصة بالتطبيق

يضيف Android 10 FillResponse.setUserData()، الذي يسمح لك بضبط بيانات المستخدمين الخاصة بالتطبيق طوال مدة الجلسة. ويساعد ذلك خدمة الملء التلقائي على اكتشاف أنواع الحقول التي تتضمّن محتوى خاصًا بالتطبيق.

واجهة المستخدم وعناصر التحكم في النظام

يوفر Android 10 التحسينات التالية على واجهة المستخدم:

إتاحة استخدام حروف كبيرة في إطار JVMTI PopFrame

يضيف Android 10 دعمًا لإمكانات can_pop_frames في تنفيذ JVMTI في Android. عند تصحيح الأخطاء، تسمح لك هذه الميزة بإعادة تشغيل الدوال بعد الإيقاف المؤقت عند نقطة توقف وتعديل القيم المحلية أو العمومية أو تنفيذ دالة. لمزيد من المعلومات، يُرجى الاطّلاع على الصفحة المرجعية لإطار Pop من Oracle.

واجهة Surface Control API

يوفّر Android 10 واجهة برمجة تطبيقات SurfaceControl للوصول على مستوى منخفض إلى مكوّن النظام (SurfaceFlinger). وبالنسبة إلى معظم المستخدمين، يشكّل SurfaceView الطريقة الصحيحة للاستفادة من أداة التركيب. يمكن أن تكون واجهة برمجة التطبيقات SurfaceControl مفيدة في بعض الحالات، على سبيل المثال:

  • مزامنة الأسطح المتعددة
  • تضمين مساحات عرض متعددة العمليات
  • الإدارة ذات المستوى الأدنى منذ الإنشاء

تتوفّر واجهة برمجة التطبيقات SurfaceControl في روابط حزمة تطوير البرامج (SDK) وNDK. ويشمل تنفيذ NDK واجهة برمجة تطبيقات للتبادل اليدوي للمخزن المؤقت مع المُنشئ. يوفر ذلك بديلاً للمستخدمين الذين واجهوا حدودًا مع BufferQueue.

رصد العارض المعلَّق في WebView

يقدِّم Android 10 فئة WebViewRenderProcessClient المجرّدة التي يمكن للتطبيقات استخدامها لرصد ما إذا أصبحت WebView غير مستجيبة. لاستخدام هذه الفئة:

  1. حدِّد فئتك الفرعية ونفِّذ طريقتَي onRenderProcessResponsive() وonRenderProcessUnresponsive() الخاصة بها.
  2. إرفاق نسخة افتراضية من WebViewRenderProcessClient بعنصر WebView واحد أو أكثر
  3. إذا أصبحت WebView غير مستجيبة، يستدعي النظام طريقة onRenderProcessUnresponsive() للعميل، مع تمرير WebView وWebViewRenderProcess. (إذا كانت WebView ذات عملية واحدة، تكون المَعلمة WebViewRenderProcess فارغة.) يمكن لتطبيقك اتخاذ الإجراء المناسب، مثل عرض مربع حوار للمستخدم يسأله عما إذا كان يريد إيقاف عملية العرض أم لا.

إذا ظل WebView غير مستجيب، يطلب النظام onRenderProcessUnresponsive() بشكل دوري (لا يزيد عن مرة واحدة كل خمس ثوانٍ)، ولكن لا يتخذ أي إجراء آخر. وإذا تمت استجابة WebView مرة أخرى، سيطلب النظام onRenderProcessResponsive() مرة واحدة فقط.

لوحات الإعدادات

يقدّم Android 10 واجهة برمجة تطبيقات Settings Panels (لوحات الإعدادات)، وهي واجهة برمجة تطبيقات تتيح للتطبيقات عرض الإعدادات للمستخدمين ضمن سياق التطبيق. وبذلك لا يحتاج المستخدمون إلى الانتقال إلى الإعدادات لتغيير إعدادات مثل NFC أو بيانات الجوّال من أجل استخدام التطبيق.

الشكل 1. يحاول المستخدم فتح صفحة ويب عندما يكون الجهاز غير متصل بالشبكة. ينبثق Chrome لوحة إعدادات الاتصال بالإنترنت...

الشكل 2. يمكن للمستخدم تفعيل Wi-Fi واختيار شبكة بدون مغادرة تطبيق Chrome.

على سبيل المثال، لنفترض أنّ أحد المستخدمين يفتح متصفح ويب عندما يكون الجهاز في وضع الطيران. في الإصدار Android 10، لم يكن بإمكان التطبيق عرض سوى رسالة عامة تطلب من المستخدم فتح الإعدادات لاستعادة الاتصال. باستخدام نظام التشغيل Android 10، يمكن لتطبيق المتصفّح عرض لوحة مضمّنة تعرض إعدادات الاتصال الرئيسية مثل وضع الطيران وشبكة Wi-Fi (بما في ذلك الشبكات المجاورة) وبيانات الجوّال. باستخدام هذه اللوحة، يمكن للمستخدمين استعادة الاتصال دون مغادرة التطبيق.

لعرض لوحة إعدادات، نشِّط هدفًا باستخدام أحد إجراءات Settings.Panel التالية:

Kotlin

val panelIntent = Intent(Settings.Panel.settings_panel_type)
startActivityForResult(panelIntent)

Java

Intent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);

يمكن أن يكون الحقل "settings_panel_type" واحدًا مما يلي:

ACTION_INTERNET_CONNECTIVITY
عرض الإعدادات ذات الصلة بالاتصال بالإنترنت، مثل "وضع الطيران" و"شبكة Wi-Fi" وبيانات الجوّال.
ACTION_WIFI
تعرض إعدادات Wi-Fi، ولكن ليس إعدادات الاتصال الأخرى. ويكون هذا الإجراء مفيدًا للتطبيقات التي تحتاج إلى اتصال بشبكة Wi-Fi لإجراء عمليات التحميل أو التنزيل الكبيرة الحجم.
ACTION_NFC
تعرض كل الإعدادات ذات الصلة بالاتصال القصير المدى (NFC).
ACTION_VOLUME
عرض إعدادات مستوى الصوت لكل عمليات البث الصوتي

تحسينات المشاركة

يوفّر Android 10 عددًا من التحسينات على المشاركة:

واجهة برمجة تطبيقات اختصارات المشاركة

تحلّ Share Shortcuts API محلّ واجهات برمجة تطبيقات المشاركة المباشرة.

بدلاً من استرداد النتائج بشكل تفاعلي عند الطلب، تتيح واجهة برمجة تطبيقات اختصارات المشاركة للتطبيقات نشر أهداف المشاركة المباشرة مسبقًا. هذه هي طريقة عمل ShortcutManager. بما أنّ واجهتَي برمجة التطبيقات متشابهتان، لقد وسّعنا واجهة برمجة تطبيقات ShortcutInfo لتسهيل استخدام كلتا الميزتين. باستخدام واجهة برمجة تطبيقات Shorts Shortcuts API، يمكنك تحديد الفئات أو الأشخاص المستهدفين مباشرةً. وتظل استهدافات المشاركة في النظام إلى أن يحدِّثها التطبيق نفسه أو يتم إلغاء تثبيته.

ستظل آلية "المشاركة المباشرة" القديمة تعمل، ولكن التطبيقات التي تستخدمها تحظى بأولوية أقل من التطبيقات التي تستخدم واجهة برمجة تطبيقات "اختصارات المشاركة".

يضيف ShortcutInfo.Builder طرقًا ويحسّنها لتوفير معلومات إضافية حول هدف المشاركة.

أهداف المشاركة المباشرة

يمكنك نشر اختصار ديناميكي كهدف المشاركة المباشرة. راجِع نشر أهداف المشاركة المباشرة.

ShortcutManagerCompat هي واجهة برمجة تطبيقات AndroidX جديدة توفّر التوافق مع الأنظمة القديمة مع واجهة برمجة التطبيقات DirectShare القديمة. هذه هي الطريقة المفضّلة لنشر أهداف الحصة.

معاينة النص

عندما يشارك تطبيق محتوى نصيًا، يمكنه عرض معاينة اختيارية للمحتوى في واجهة مستخدم Sharesheet.

الاطّلاع على إضافة معاينات النصوص المنسّقة

مزيد من المعلومات

لمزيد من المعلومات حول كيفية مشاركة التطبيقات للبيانات، يمكنك الاطّلاع على إرسال بيانات بسيطة إلى تطبيقات أخرى واستلام بيانات بسيطة من تطبيقات أخرى.

المظهر الداكن

يوفّر Android 10 "مظهرًا داكنًا" ينطبق على كل من واجهة مستخدم نظام Android والتطبيقات التي تعمل على الجهاز. للحصول على المعلومات الكاملة، يُرجى الاطّلاع على المظهر الداكن.

أنواع الخدمات التي تعمل في المقدّمة

يقدّم Android 10 سمة foregroundServiceType بيان XML التي يمكنك تضمينها في تعريف عدة خدمات محدّدة. وعلى الرغم من أنه نادرًا ما يكون ذلك مناسبًا، ليس من الممكن تعيين عدة أنواع من الخدمات التي تعمل في المقدّمة لخدمة معيّنة.

يعرض الجدول التالي الأنواع المختلفة من الخدمات التي تعمل في المقدّمة والخدمات التي يكون من المناسب فيها الإشارة إلى نوع محدّد:

نوع الخدمة التي تعمل في المقدّمة مثال على حالة استخدام لخدمة يجب أن تذكر هذا النوع
connectedDevice مراقبة جهاز متتبع اللياقة البدنية القابل للارتداء
dataSync تنزيل الملفات من الشبكة
location متابعة إجراء ينفّذه المستخدم
mediaPlayback تشغيل كتاب مسموع أو بودكاست أو موسيقى
mediaProjection تسجيل فيديو لشاشة الجهاز خلال فترة زمنية قصيرة
phoneCall التعامل مع المكالمة الهاتفية الجارية

Kotlin

يتضمّن نظام Android 10 التحديثات التالية لتطوير لغة Kotlin.

التعليقات التوضيحية للقيم الفارغة في واجهات برمجة تطبيقات libcore

يحسّن نظام التشغيل Android 10 من تغطية التعليقات التوضيحية للتوافق مع القيم الفارغة في حزمة تطوير البرامج (SDK) لواجهات برمجة تطبيقات libcore. وتتيح هذه التعليقات التوضيحية لمطوّري التطبيقات الذين يستخدمون تحليل قابلية القيم الفارغة لـ Kotlin أو Java في "استوديو Android" الحصول على معلومات حول القيمة الخالية عند التفاعل مع واجهات برمجة التطبيقات هذه.

عادةً ما تؤدي انتهاكات عقود القابلية للإلغاء في Kotlin إلى حدوث أخطاء في التجميع. لضمان التوافق مع الرمز الحالي، ستتم إضافة التعليقَين التوضيحيَين @RecentlyNullable و@RecentlyNonNull فقط. وهذا يعني أن انتهاكات إمكانية القيم الفارغة تؤدي إلى تحذيرات بدلاً من أخطاء.

بالإضافة إلى ذلك، سيتم تغيير أي تعليقات توضيحية من @RecentlyNullable أو @RecentlyNonNull تمت إضافتها في Android 9 إلى @Nullable و@NonNull على التوالي. وهذا يعني أنّ انتهاكات إمكانية القيم الفارغة في نظام Android 10 والإصدارات الأحدث تؤدّي إلى حدوث أخطاء بدلاً من إصدار تحذيرات.

لمزيد من المعلومات حول التغييرات في التعليقات التوضيحية، يمكنك الاطّلاع على أصبحت حزمة تطوير البرامج (SDK) لنظام التشغيل Android Pie أكثر توافقًا مع لغة Kotlin على مدوّنة مطوّري تطبيقات Android.

كرونة دنماركية

يتضمّن Android 10 التغييرات التالية على NDK.

تحسين تصحيح الأخطاء لملكية واصف الملف

يضيف نظام التشغيل Android 10 رمز fdsan الذي يساعدك في العثور على مشاكل ملكية أداة وصف الملفات وحلّها بسهولة أكبر.

إنّ الأخطاء المتعلقة بإساءة التعامل مع ملكية واصف الملفات، والتي غالبًا ما تظهر على أنّها use-after-Close وdouble- close، تشبه الأخطاء التي تحدث في تخصيص الذاكرة بأخطاء use-after-free والأعطال المزدوجة المجانية، ولكنّها غالبًا ما تكون أكثر صعوبة في تشخيص وإصلاح الأخطاء. وتحاول أداة fdsan رصد و/أو منع استخدام أداة وصف ملكية الملفات.

لمزيد من المعلومات عن الأعطال المتعلّقة بهذه المشاكل، يُرجى الاطّلاع على خطأ رصدته fdsan. لمزيد من المعلومات حول fdsan، يمكنك الاطّلاع على صفحة Googlesource على fdsan.

معيار ELF TLS

ويمكن للتطبيقات التي تم إنشاؤها باستخدام NDK بمستوى واجهة برمجة تطبيقات 29 كحد أدنى استخدام ELF TLS بدلاً من emutls. وتمّت إضافة دعم روابط ديناميكية وثابتة لإتاحة هذه الطريقة في التعامل مع المتغيّرات المحلية لسلسلة المحادثات.

بالنسبة إلى التطبيقات المصمَّمة للمستوى 28 من واجهة برمجة التطبيقات والإصدارات الأدنى، تم تنفيذ تحسينات على libgcc/compiler-rt لحلّ بعض مشاكل emutls.

لمزيد من المعلومات، يُرجى الاطّلاع على تغييرات Android لمطوِّري NDK.

وقت التشغيل

يتضمّن Android 10 التغيير التالي في بيئة التشغيل.

تشغيل عملية جمع البيانات غير المرغوب فيها استنادًا إلى المعلومات التجارية

عندما تشير كائنات Java لنظام أساسي صغير إلى كائنات ضخمة في كومة C++ ، يمكن في كثير من الأحيان استرداد كائنات C++ فقط عند تجميع كائن Java واكتماله على سبيل المثال. في الإصدارات السابقة، قدّر النظام الأساسي أحجام العديد من كائنات C++ المرتبطة بكائنات Java. لم يكن هذا التقدير دقيقًا دائمًا وأدّى في بعض الأحيان إلى زيادة استخدام الذاكرة بشكل كبير، حيث تعذّر على النظام الأساسي تجميع البيانات غير المرغوب فيها عندما يكون من المفترض أن يكون كذلك.

في Android 10، يتتبّع نظام تجميع البيانات المهملة (GC) الحجم الإجمالي لكومة الذاكرة المؤقتة المخصصة من خلال النظام malloc()، ما يضمن تضمين تخصيصات malloc() الكبيرة دائمًا في العمليات الحسابية التي تؤدي إلى تجميع البيانات المهملة. نتيجةً لذلك، قد تشهد التطبيقات التي تتداخل مع أعداد كبيرة من تخصيصات C++ مع تنفيذ Java زيادة في معدل تكرار جمع البيانات غير المرغوب فيها. وقد تشهد تطبيقات أخرى انخفاضًا طفيفًا.

الاختبار وتصحيح الأخطاء

يتضمّن نظام Android 10 التحسينات التالية للاختبار وتصحيح الأخطاء.

تحسينات لتتبُّع النظام على الجهاز

اعتبارًا من الإصدار Android 10، يمكنك تحديد حدود لحجم عملية التتبُّع ومدتها عند إجراء تتبُّع النظام على الجهاز. عند تحديد أي من القيمتين، يُجري النظام عملية تتبُّع طويلة، وينسخ المخزن المؤقت للتتبُّع بشكل دوري إلى ملف الوجهة أثناء تسجيل عملية التتبُّع. ويكتمل التتبع عند الوصول إلى حدود الحجم أو المدة التي حددتها.

استخدِم هذه المَعلمات الإضافية لاختبار حالات استخدام مختلفة عن تلك التي ستختبرها باستخدام بيانات التتبّع العادية. على سبيل المثال، قد تكون بصدد تشخيص خطأ في الأداء لا يحدث إلا بعد تشغيل تطبيقك لفترة زمنية طويلة. في هذه الحالة، يمكنك تسجيل أثر طويل على مدار يوم كامل، ثم تحليل أداة جدولة وحدة المعالجة المركزية (CPU)، ونشاط القرص، وسلاسل محادثات التطبيقات، والبيانات الأخرى في التقرير لمساعدتك في تحديد سبب الخطأ.

في نظام التشغيل Android 10 والإصدارات الأحدث، يتم حفظ ملفات التتبُّع بتنسيق يمكن فتحه باستخدام Perfetto، وهو مشروع مفتوح المصدر لقياس الأداء وتتبُّع الأداء. يمكنك تحويل ملفات تتبُّع Perfetto إلى تنسيق Systrace.

تحسينات على أداة تصنيف النص

يوفّر Android 10 وظيفة إضافية لتصنيف النص في واجهة TextClassifier.

اكتشاف اللغة

تعمل طريقة detectLanguage() بشكل مشابه لطرق التصنيف الحالية. فهي تتلقَّى كائن TextLanguage.Request وتعرض كائن TextLanguage.

تتألّف كائنات TextLanguage من قائمة بالأزواج المرتبة. ويحتوي كل زوج على لغة ونتيجة ثقة مقابلة للتصنيف.

الإجراءات المقترَحة للمحادثة

تعمل طريقة suggestConversationActions() بشكل مشابه لطرق التصنيف الحالية. يستقبل كائن ConversationActions.Request كائن ConversationActions.

تضم كائنات ConversationActions قائمة من كائنات ConversationAction. يتضمن كل عنصر ConversationAction إجراءً مقترحًا ونتيجة الثقة الخاصة به.

الردود/الإجراءات السريعة في الإشعارات

وفّر نظام Android 9 إمكانية عرض الردود المقترَحة ضمن إشعار. يوسّع Android 10 هذا المجال مع إمكانية تضمين إجراءات مقترَحة مستندة إلى النية. بالإضافة إلى ذلك، بإمكان النظام الأساسي إنشاء هذه الاقتراحات تلقائيًا وسيظل بإمكان التطبيقات تقديم اقتراحاتها الخاصة أو إيقاف الاقتراحات التي ينشئها النظام.

تشكّل واجهة برمجة التطبيقات المستخدمة لإنشاء هذه الردود جزءًا من TextClassifier، وقد تم الكشف عنها أيضًا مباشرةً للمطوّرين في نظام التشغيل Android 10. يُرجى الاطّلاع على القسم الخاص بتحسينات أداة TextClassifier لمعرفة مزيد من المعلومات.

إذا كان تطبيقك يقدّم اقتراحات خاصة به، لن ينشئ النظام الأساسي أي اقتراحات تلقائية. إذا كنت لا تريد أن تعرض إشعارات تطبيقك أي ردود أو إجراءات مقترَحة، يمكنك إيقاف الردود والإجراءات التي ينشئها النظام باستخدام السمتَين setAllowGeneratedReplies() وsetAllowSystemGeneratedContextualActions().