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

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

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

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

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

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

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

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

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

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

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

دعم TLS 1.3

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

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

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

بدءًا من نظام التشغيل 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 توافقًا أصليًا إلى عمليات بحث نظام أسماء النطاقات المتخصّصة باستخدام عمليات بحث نصوص واضحة ووضع "نظام أسماء النطاقات عبر بروتوكول أمان طبقة النقل (TLS)". في السابق، كانت أداة حل نظام أسماء النطاقات للنظام الأساسي متوافقة فقط مع سجلّات A وAAAA، والتي تسمح بالبحث فقط عن عناوين IP المرتبطة بالاسم، ولكنّها لم تكن متوافقة مع أي أنواع أخرى من السجلات. توفّر واجهة برمجة التطبيقات DnsResolver درجة دقة عامة وغير متزامنة تتيح لك البحث عن SRV وNAPTR وأنواع أخرى من السجلّات. يُرجى العِلم أنّه يتم ترك مهمة تحليل الردّ على التطبيق لتنفيذه.

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

اتصال Wi-Fi سهل

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

للحصول على مزيد من المعلومات حول هذه الميزة، يمكنك الاطّلاع على Wi-Fi Easy Connect.

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

تتضمّن فئتا واجهة برمجة التطبيقات WifiP2pConfig وWifiP2pManager تحديثات في نظام التشغيل Android 10 لإتاحة إمكانيات الاتصال السريع بشبكة Wi-Fi المباشرة باستخدام معلومات محدّدة مسبقًا. تتم مشاركة هذه المعلومات عبر قناة جانبية، مثل البلوتوث أو 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 API. توفّر واجهة برمجة التطبيقات CallRedirectionService واجهات لتعديل المكالمات الصادرة التي يجريها نظام Android الأساسي. على سبيل المثال، قد تلغي التطبيقات التابعة لجهات خارجية المكالمات وتعيد توجيهها عبر بروتوكول الصوت على الإنترنت (VoIP).

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

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

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

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

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

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

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

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

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

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

بدءًا من نظام التشغيل Android 10، تعرض إشعارات 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 تكشف المزيد من المعلومات عن برنامج الترميز.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 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() API. توفر هذه الطريقة دعمًا للمهلات التي يحددها المستخدم لعناصر واجهة المستخدم التفاعلية وغير التفاعلية. وتتأثر القيمة المعروضة بكل من إعدادات المستخدم المفضّلة وواجهات برمجة التطبيقات لخدمة تسهيل الاستخدام.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

دعم تصنيف الحقول الخاص بالتطبيق

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

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

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

دعم أغطية JVMTI PopFrame

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

واجهة برمجة تطبيقات التحكم في السطح

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

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

تتوفّر واجهة برمجة التطبيقات 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 لوحات الإعدادات، وهي واجهة برمجة تطبيقات تسمح للتطبيقات بعرض الإعدادات للمستخدمين في سياق التطبيق. ويمنع ذلك المستخدمين من الانتقال إلى الإعدادات لتغيير عناصر مثل الاتصال القصير المدى (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 محلّ واجهات برمجة التطبيقات الخاصة بميزة "المشاركة المباشرة".

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

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

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

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

يمكنك نشر اختصار ديناميكي كهدف مشاركة مباشرة. يُرجى الاطّلاع على مقالة نشر أهداف المشاركة المباشرة.

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

معاينة النص

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

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

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

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

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

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

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

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

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

نوع الخدمة التي تعمل في المقدّمة مثال على حالة استخدام لخدمة يجب أن تذكر هذا النوع
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 والإصدارات الأحدث تؤدي إلى حدوث أخطاء بدلاً من ظهور تحذيرات.

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

العُقدة (NDK)

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

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

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

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

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

بروتوكول أمان طبقة النقل (TLS) لمعيار ELF

وبإمكان التطبيقات التي تم إنشاؤها باستخدام 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.

تحسينات TextClassifier

يوفّر 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().