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

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

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

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

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

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

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

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

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

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

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

دعم الإصدار 1.3 من بروتوكول أمان طبقة النقل (TLS)

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

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

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

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

Wi-Fi Easy Connect

يتيح لك Android 10 استخدام ميزة "الاتصال السهل" لتوفير بيانات اعتماد Wi-Fi لجهاز آخر، كبديل لبروتوكول WPS الذي تم إيقافه نهائيًا. يمكن للتطبيقات دمج ميزة "الاتصال السهل" في عملية الإعداد والتوفير باستخدام الطلب 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);

قنوات بلوتوث منخفض الطاقة الموجهة للاتصال (CoC)

يتيح Android 10 لتطبيقك استخدام اتصالات BLE CoC لنقل تدفقات بيانات أكبر بين جهازَي BLE. تُبسِّط هذه الواجهة آليات البلوتوث وإمكانية الاتصال لتسهيل عملية التنفيذ.

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

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

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

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

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

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

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

يغيّر Android 10 طريقة معالجة طلبات الاتصال. تم إيقاف البث NEW_OUTGOING_CALL نهائيًا واستبداله بواجهة برمجة التطبيقات CallRedirectionService. توفّر واجهة برمجة التطبيقات CallRedirectionService API واجهات تتيح لك تعديل المكالمات الصادرة التي يتم إجراؤها من خلال نظام 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، يمكن للمستخدم سحب شريط البحث للتحكّم في موضع التشغيل.

Native MIDI API

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

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

تحسينات MediaCodecInfo

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

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

Thermal API

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

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

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

تتطلّب واجهة Thermal API طبقة 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: تتيح لك تحديد معرّف الكاميرا المادية النشطة التي تدعم جهاز كاميرا منطقيًا. يمكنك استخدام أرقام التعريف التي تم عرضها لطلب مجموعات بث منطقية ومجموعات بث فرعية للكاميرا لتحقيق كفاءة أفضل في استهلاك الطاقة.

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

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

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

اعتبارًا من الإصدار Android 10، يمكنك استدعاء isTextEntryKey() لتحديد ما إذا كان AccessibilityNodeInfo معيّن يمثّل مفتاح إدخال نص جزءًا من لوحة مفاتيح أو لوحة مفاتيح رقمية.

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

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

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

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

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

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

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

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

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

مهلات تسهيل الاستخدام التي يحدّدها المستخدم

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

تحسينات على ميزة "الملء التلقائي"

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

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

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

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

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

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

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

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

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

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

يتضمّن Android 10 التحسينات التالية على واجهة Field Classification API.

دالة الإنشاء UserData.Builder

تم تغيير دالة الإنشاء UserData.Builder لتتوافق بشكل أفضل مع نمط Builder.

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

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

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

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

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

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

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

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

إتاحة إمكانات PopFrame في JVMTI

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

واجهة برمجة التطبيقات Surface control

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

Sharing Shortcuts API

تحلّ واجهة برمجة التطبيقات Sharing Shortcuts محلّ واجهات برمجة التطبيقات Direct Share.

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

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

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

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

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

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

معاينة النص

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

يُرجى الاطّلاع على إضافة معاينات نص منسّق.

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

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

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

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

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

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

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

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

Kotlin

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

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

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

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

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

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

NDK

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

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

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

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

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

ELF TLS

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

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

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

وقت التشغيل

يتضمّن Android 10 التغيير التالي في وقت التشغيل.

تفعيل جمع البيانات المُهمَلة استنادًا إلى Mallinfo

عندما تشير كائنات 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().