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

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

ميزة "الاتصال السهل بشبكة Wi-Fi"

يتيح لك نظام التشغيل Android 10 استخدام ميزة "الاتصال السهل" لتوفير بيانات اعتماد Wi-Fi على جهاز مماثل، وذلك كبديل لبروتوكول WPS الذي تم إيقافه نهائيًا. يمكن للتطبيقات دمج ميزة "الربط السهل" في عملية الإعداد وتوفير الخدمة باستخدام intent 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 العادية وكاميرات الأشعة تحت الحمراء القريبة

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

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

بدءًا من الإصدار 10 من Android، يمكن للكاميرات تخزين بيانات العمق لصورة فيملفٍ منفصل، وذلك باستخدام مخطّط جديد يُعرف باسم تنسيق العمق الديناميكي (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 بأن يكون الحوار acompanhadoبطلب تحويل النص إلى كلام إذا طلبت الخدمة ذلك.

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

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

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

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

في 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 التحسينات التالية على واجهة المستخدم:

إتاحة حدود 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 واجهة برمجة التطبيقات لتسهيل استخدام كلٍّ من الميزتَين. باستخدام واجهة برمجة التطبيقات Sharing Shortcuts API، يمكنك تحديد فئات أو مستخدمين مباشرةً كهدف للمشاركة. تظل استهدافات المشاركة محفوظة في النظام إلى أن يعدّلها التطبيق نفسه أو يتم إلغاء تثبيته.

لا تزال آلية المشاركة المباشرة القديمة تعمل، ولكن التطبيقات التي تستخدمها لها لأولوية أقل مقارنةً بالتطبيقات التي تستخدم واجهة برمجة التطبيقات Sharing 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 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.

وقت التشغيل

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

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

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

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

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

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

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

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

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

في الإصدار 10 من Android والإصدارات الأحدث، يتم حفظ ملفات التتبُّع بتنسيق يمكن فتحه باستخدام 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().