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

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

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

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

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

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

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

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

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

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

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

إتاحة الإصدار 1.3 من بروتوكول أمان طبقة النقل

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

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

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

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

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

ميزات الاتصال

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

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

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

لمزيد من المعلومات، يُرجى الاطّلاع على Wi-Fi Network Request API للاتصال بين الأجهزة المزوّدة بتقنية Wi-Fi.

Wi-Fi network suggestion API

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

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

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

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

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

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

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

يضيف Android 10 دعمًا أصليًا لعمليات بحث نظام أسماء النطاقات المتخصصة باستخدام كل من عمليات البحث في النص الواضح ووضع نظام أسماء النطاقات عبر بروتوكول أمان طبقة النقل (DNS). في السابق، كان نظام أسماء النطاقات (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 Direct

تم إجراء تعديلات على فئات واجهة برمجة التطبيقات 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 لنقل مزيد من ملفّات data stream بين جهازَي 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

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

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

Native MIDI API

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

لمزيد من المعلومات، يُرجى الاطّلاع على Android Native MIDI API.

تحسينات على MediaCodecInfo

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

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

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

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

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

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

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

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

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

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

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

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

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

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

بدءًا من نظام التشغيل 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 بأن يصاحب مربّع الحوار طلب تحويل النص إلى كلام إذا طلبت الخدمة ذلك.

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

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

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

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

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

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

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

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

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

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

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

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

يمكنك استخدام العلامة 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 Frame من Oracle.

واجهة برمجة التطبيقات الخاصة بعناصر التحكّم في السطح

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

على سبيل المثال، لنفترض أنّ أحد المستخدمين فتح متصفّح ويب عندما كان جهازه في وضع الطيران. قبل الإصدار 10 من Android، كان بإمكان التطبيق عرض رسالة عامة فقط تَطلب من المستخدم فتح الإعدادات لاستعادة الاتصال. باستخدام الإصدار 10 من نظام التشغيل Android، يمكن لتطبيق المتصفّح عرض لوحة مضمّنة تعرض إعدادات الاتصال الرئيسية، مثل وضع الطيران و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 API محل Direct Share APIs.

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

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

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

استهدافات المشاركة المباشرة

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

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

معاينة النص

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

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

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

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

NDK

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

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

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

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

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

استخدِم هذه المَعلمات الإضافية لاختبار حالات استخدام مختلفة عن تلك التي تختبرها باستخدام عملية تتبُّع عادية. على سبيل المثال، قد تكون بصدد تشخيص خطأ في الأداء لا يحدث إلا بعد تشغيل تطبيقك لفترة طويلة. في هذه الحالة، يمكنك تسجيل تتبع طويل على مدار يوم كامل، ثم تحليل جدولة وحدة المعالجة المركزية ونشاط القرص وخيوط التطبيق والبيانات الأخرى في التقريرเพื่อช่วยك في تحديد سبب الخطأ.

في نظام التشغيل 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().