يقدّم 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. إن TLS 1.3 هو مراجعة رئيسية لمعيار طبقة النقل الآمنة (TLS) يتضمن مزايا متعلقة بالأداء والأمان المحسّن. تشير معاييرنا إلى أنّه يمكن إنشاء اتصالات آمنة بشكل أسرع بنسبة 40% باستخدام TLS 1.3 مقارنةً ببروتوكول TLS 1.2.
لمزيد من التفاصيل حول تنفيذ بروتوكول TLS 1.3، يمكنك الاطّلاع على قسم بروتوكول أمان طبقة النقل (TLS) ضمن صفحة تغييرات السلوك لجميع التطبيقات.
واجهة برمجة تطبيقات Public Conscrypt
بدءًا من نظام التشغيل Android 10، يتضمّن موفِّر خدمة أمان Conscrypt واجهة برمجة تطبيقات عامة لوظائف بروتوكول أمان طبقة النقل (TLS).
تحتوي مجموعة الفئات ضمن android.net.ssl
على طرق ثابتة للوصول إلى وظائف غير متاحة من واجهات برمجة تطبيقات javax.net.ssl
العامة. يمكن استنتاج أسماء هذه الفئات باعتبارها جمع فئة javax.net.ssl
المقابلة. على سبيل المثال، يمكن للرمز الذي يعمل على مثيلات javax.net.ssl.SSLSocket
أن يستخدم طرقًا من SSLSockets
بدلاً من ذلك.
ميزات الاتصال
يتضمّن نظام التشغيل Android 10 العديد من التحسينات المتعلّقة بالشبكات والاتصال.
واجهة برمجة التطبيقات لاتصال شبكة Wi-Fi
يضيف Android 10 الدعم للاتصالات من خلال شبكة الند للند. تتيح هذه الميزة لتطبيقك أن يطلب من المستخدم تغيير نقطة الوصول التي يتصل بها الجهاز باستخدام WifiNetworkSpecifier
لوصف خصائص الشبكة المطلوبة. يُستخدَم الاتصال من نظير إلى نظير لأغراض غير توفير الشبكة، مثل إعداد عملية التمهيد للأجهزة الثانوية مثل Chromecast وأجهزة Google Home.
للاطّلاع على مزيد من المعلومات، يُرجى الاطّلاع على Wi-Fi Network Request API للاتصال من نظير إلى نظير.
واجهة برمجة تطبيقات اقتراح شبكة Wi-Fi
يتوافق نظام التشغيل Android 10 مع تطبيقك ليطلب من المستخدم الاتصال بنقطة وصول Wi-Fi. يمكنك تقديم اقتراحات للشبكة التي تريد الاتصال بها. سيختار النظام الأساسي في النهاية نقطة الوصول التي يتم قبولها استنادًا إلى البيانات الواردة من تطبيقك والتطبيقات الأخرى.
للحصول على مزيد من المعلومات حول هذه الميزة، يمكنك الاطّلاع على اقتراح Wi-Fi.
تحسينات على أوضاع اتصال Wi-Fi العالية الأداء والاستجابة المنخفضة
يسمح لك نظام التشغيل Android 10 بتوفير تلميح للمودم الأساسي لتقليل وقت الاستجابة.
يوسّع نظام التشغيل Android 10 واجهة برمجة تطبيقات قفل Wi-Fi لإتاحة وضع الأداء العالي ووضع وقت الاستجابة البطيء بشكل فعّال. يتم إيقاف ميزة توفير طاقة Wi-Fi بسبب وضعَي الأداء العالي والزمن السريع، وقد يتم تفعيل تحسين وقت الاستجابة الإضافي في وضع وقت الاستجابة البطيء، وذلك اعتمادًا على توافق المودم.
لا يتم تفعيل وضع وقت الاستجابة البطيء إلا عندما يتم تشغيل التطبيق الذي يسعى إلى القفل في المقدّمة وتكون الشاشة مشغَّلة. يكون وضع وقت الاستجابة البطيء مفيدًا بشكل خاص لتطبيقات الألعاب على الأجهزة الجوّالة في الوقت الفعلي.
عمليات البحث المتخصصة في محلل نظام أسماء النطاقات
يضيف Android 10 توافقًا أصليًا إلى عمليات بحث نظام أسماء النطاقات المتخصّصة باستخدام كل من عمليات بحث النص الواضح ووضع "نظام أسماء النطاقات عبر بروتوكول أمان طبقة النقل" (DNS) عبر بروتوكول أمان طبقة النقل (TLS). وفي السابق، كانت أداة حل نظام أسماء النطاقات للنظام الأساسي تدعم سجلّات A وAAAA فقط، ما يسمح بالبحث عن عناوين IP المرتبطة بالاسم فقط، ولكنها لم تكن تدعم أي أنواع سجلّات أخرى.
توفّر واجهة برمجة التطبيقات DnsResolver
درجة دقة عامة وغير متزامنة، ما يتيح لك البحث عن SRV
وNAPTR
وأنواع السجلّات الأخرى. لاحظ أنه يتم ترك تحليل الاستجابة للتطبيق لتنفيذه.
بالنسبة إلى التطبيقات المستندة إلى NDK، يمكنك الاطّلاع على
android_res_nsend
.
اتصال Wi-Fi السهل
يتيح لك نظام التشغيل Android 10 استخدام ميزة "الاتصال السهل" لتوفير بيانات اعتماد Wi-Fi لجهاز نظير، وذلك بديلاً لنظام WPS الذي تم إيقافه.
يمكن للتطبيقات دمج Easy Connect في عملية الإعداد وإدارة الحسابات باستخدام الغرض
ACTION_PROCESS_WIFI_EASY_CONNECT_URI
.
للحصول على مزيد من المعلومات حول هذه الميزة، يمكنك الاطّلاع على Wi-Fi Easy Connect.
واجهة برمجة تطبيقات اتصال Wi-Fi مباشر
تتضمّن فئتا واجهة برمجة التطبيقات WifiP2pConfig
وWifiP2pManager
تحديثات في نظام التشغيل Android 10 لإتاحة إمكانات إنشاء الاتصال السريع بشبكة Wi-Fi المباشرة باستخدام
معلومات محدّدة مسبقًا. تتم مشاركة هذه المعلومات عبر قناة جانبية، مثل
البلوتوث أو 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)
جافا
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)
جافا
manager.connect(channel, config, null);
القنوات الموجّهة لاتصال Bluetooth LE (CoC)
يسمح Android 10 لتطبيقك باستخدام اتصالات BLE CoC لنقل عمليات بث بيانات أكبر بين جهازين من أجهزة BLE. تضم هذه الواجهة آليات البلوتوث وإمكانية الاتصال لتبسيط عملية التنفيذ.
ميزات الاتصال الهاتفي
يتضمّن نظام التشغيل Android 10 عدة تحسينات متعلقة بالاتصال الهاتفي.
تحسينات جودة المكالمات
يضيف نظام التشغيل Android 10 إمكانية جمع المعلومات حول جودة المكالمات المستمرة للنظام الفرعي للوسائط المتعددة (IMS) في عناوين IP، بما في ذلك الجودة من الشبكة وإليها، على الأجهزة المتوافقة مع هذه الميزة.
فحص المكالمات وإظهار رقم المتّصل
يوفّر Android 10 تطبيقك وسيلة للتعرف على المكالمات غير الواردة
في دفتر عناوين المستخدم باعتبارها مكالمات محتملة غير مرغوب فيها، ولرفض المكالمات غير المرغوب فيها تلقائيًا نيابةً عن المستخدم. ويتم تسجيل المعلومات حول هذه المكالمات المحظورة كمكالمات محظورة في سجل المكالمات لتوفير مزيد من الشفافية للمستخدم عند فقده لمكالمات. ويلغي استخدام واجهة برمجة التطبيقات هذه شرط الحصول على أذونات READ_CALL_LOG
من المستخدم لتوفير وظيفة فحص المكالمات وإظهار رقم المتّصل.
واجهة برمجة التطبيقات لخدمة إعادة توجيه المكالمات
يغيِّر نظام التشغيل Android 10 طريقة التعامل مع أهداف المكالمات. تم إيقاف بث NEW_OUTGOING_CALL
نهائيًا وسيتم استبداله بواجهة
CallRedirectionService
API. توفر لك واجهة برمجة التطبيقات CallRedirectionService
واجهات لتعديل المكالمات الصادرة التي يجريها نظام Android الأساسي. على سبيل المثال، قد تُلغي التطبيقات التابعة لجهات خارجية المكالمات وتعيد توجيهها عبر بروتوكول الصوت على الإنترنت.
التحسينات في إنشاء ملفات على وحدة التخزين الخارجية
بالإضافة إلى تقديم مساحة التخزين على نطاق، يضيف 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.
للمزيد من المعلومات، يُرجى الاطّلاع على واجهة برمجة التطبيقات Android Native MIDI API.
تحسينات MediaCodecInfo
يضيف Android 10 طرقًا إلى
MediaCodecInfo
تكشف المزيد من المعلومات عن برنامج الترميز.
لمزيد من المعلومات، يمكنك الاطّلاع على برامج ترميز الوسائط.
واجهة برمجة التطبيقات الحرارية
عندما ترتفع درجة حرارة الأجهزة بشكل كبير، قد تقيّد وحدة المعالجة المركزية (CPU) و/أو وحدة معالجة الرسومات، ما قد يؤثر في التطبيقات والألعاب بطرق غير متوقَّعة. من المرجح أن تواجه التطبيقات التي تستخدم رسومات معقدة أو حوسبة ثقيلة أو نشاطًا مستمرًا على الشبكة، وذلك على مستوى الأجهزة المختلفة استنادًا إلى مجموعة الشرائح والترددات الأساسية ومستويات الدمج وعبوة الجهاز وشكل الجهاز
في الإصدار Android 10، يمكن للتطبيقات والألعاب استخدام واجهة برمجة تطبيقات حرارية لمراقبة التغييرات على الجهاز واتّخاذ الإجراءات اللازمة للحفاظ على انخفاض معدّل استخدام الطاقة لاستعادة درجة الحرارة العادية. تسجِّل التطبيقات أداة معالجة الحدث في PowerManager، والتي من خلالها يبلغ النظام عن الحالة الحرارية المستمرة، تتراوح من الفاتح إلى المعتدل إلى الحاد، والحرج، والطوارئ، وإيقاف التشغيل.
عندما يبلغ الجهاز عن الإجهاد الحراري، يمكن للتطبيقات والألعاب المساعدة من خلال إيقاف الأنشطة المستمرة لتقليل استخدام الطاقة بطرق مختلفة. على سبيل المثال، يمكن لتطبيقات البث تقليل الدقة/معدل البت أو حركة بيانات الشبكة، ويمكن لتطبيق الكاميرا إيقاف الفلاش أو التحسين المكثّف للصور، ويمكن للعبة أن تقلل من عدد اللقطات في الثانية أو الفاصل المضلّع، ويمكن لتطبيق الوسائط خفض مستوى صوت مكبّر الصوت، كما يمكن لتطبيق الخرائط إيقاف نظام تحديد المواقع العالمي (GPS).
تتطلّب واجهة برمجة التطبيقات الحرارية طبقة HAL جديدة للجهاز، وهي متوافقة حاليًا مع أجهزة Pixel التي تعمل بالإصدار 10 من نظام التشغيل Android، ونعمل مع شركائنا في تصنيع الأجهزة على توفير دعم واسع للمنظومة المتكاملة في أسرع وقت ممكن.
الكاميرا والصور
يقدم 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()
. توفر هذه الطريقة دعمًا للمهلات التي يحددها المستخدم لعناصر واجهة المستخدم التفاعلية وغير التفاعلية. تتأثر القيمة المعروضة بتفضيلات المستخدم
وواجهات برمجة التطبيقات لخدمة إمكانية الوصول.
تحسينات الملء التلقائي
يحتوي نظام التشغيل 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. عند تصحيح الأخطاء، تتيح لك هذه الميزة إعادة تشغيل الدوال بعد التوقف مؤقتًا عند نقطة إيقاف وتعديل المناطق المحلية أو العوالم أو تنفيذ دالة ما. لمزيد من المعلومات، راجع الصفحة المرجعية لإطار البوب من Oracle.
واجهة برمجة التطبيقات للتحكّم في السطح
يوفّر Android 10 واجهة برمجة تطبيقات
SurfaceControl
للحصول على إذن وصول منخفض المستوى إلى مكوّن النظام
(SurfaceFlinger
). وبالنسبة إلى
معظم المستخدمين، يمثّل SurfaceView الطريقة الصحيحة للاستفادة من المكوّن. ويمكن أن تكون واجهة برمجة التطبيقات SurfaceControl
مفيدة في بعض الحالات، على سبيل المثال:
- مزامنة مساحات العرض المتعددة
- تضمين السطح المتقاطع بين العمليات
- الإدارة الدائمة ذات المستوى الأدنى
تتوفّر واجهة برمجة التطبيقات SurfaceControl
API في كلٍّ من
روابط SDK وNDK.
يتضمن تنفيذ NDK واجهة برمجة تطبيقات للتبادل اليدوي للمخازن المؤقتة مع التركيب. يوفر ذلك بديلاً للمستخدمين الذين واجهوا
قيود BufferQueue
.
رصد العارض المعلّق في WebView
يقدِّم نظام التشغيل Android 10 الفئة المجرّدة
WebViewRenderProcessClient
،
التي يمكن للتطبيقات استخدامها لرصد ما إذا كانت حالة
WebView
غير مستجيبة. لاستخدام هذه الفئة:
- حدِّد فئتك الفرعية وتنفيذ طرق
onRenderProcessResponsive()
وonRenderProcessUnresponsive()
الخاصة بها. - أرفِق مثيلاً من
WebViewRenderProcessClient
بعنصرWebView
واحد أو أكثر. - إذا لم تستجيب
WebView
، يطلب النظام طريقةonRenderProcessUnresponsive()
للعميل، ويمررWebView
وWebViewRenderProcess
. (إذا كانتWebView
عملية واحدة، تكون المَعلمةWebViewRenderProcess
فارغة). يمكن لتطبيقك اتخاذ الإجراء المناسب، مثل عرض مربع حوار للمستخدم يسأل ما إذا كان يريد إيقاف عملية العرض.
إذا ظلت WebView
غير مستجيبة، يطلب النظام onRenderProcessUnresponsive()
بشكل دوري (لا تزيد عن مرة واحدة كل خمس ثوانٍ)، ولكن لا يتخذ أي إجراء آخر.
إذا أصبح WebView
مستجيبًا مرة أخرى،
يطلب النظام onRenderProcessResponsive()
مرة واحدة فقط.
لوحات الإعدادات
يقدِّم نظام التشغيل Android 10 لوحات الإعدادات، وهي واجهة برمجة تطبيقات تسمح للتطبيقات بعرض الإعدادات للمستخدمين في سياق تطبيقاتهم. يمنع ذلك المستخدمين من الحاجة إلى الانتقال إلى الإعدادات لتغيير عناصر مثل الاتصال القصير المدى (NFC) أو بيانات الجوّال من أجل استخدام التطبيق.


على سبيل المثال، لنفترض أن أحد المستخدمين يفتح متصفح ويب أثناء تشغيل جهازه في وضع الطيران. قبل الإصدار Android 10، كان يعرض التطبيق رسالة عامة فقط تطلب من المستخدم فتح الإعدادات لاستعادة الاتصال. في الإصدار Android 10، يمكن لتطبيق المتصفح عرض لوحة مضمّنة تعرض إعدادات الاتصال الرئيسية، مثل "وضع الطيران" و"شبكة Wi-Fi" (بما في ذلك الشبكات القريبة) وبيانات الجوّال. باستخدام هذه اللوحة، يمكن للمستخدمين استعادة الاتصال دون مغادرة التطبيق.
لعرض لوحة إعدادات، يمكنك تنشيط هدف باستخدام أحد إجراءات Settings.Panel
التالية:
لغة Kotlin
val panelIntent = Intent(Settings.Panel.settings_panel_type) startActivityForResult(panelIntent)
جافا
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 عددًا من التحسينات على المشاركة:
واجهة برمجة تطبيقات اختصارات المشاركة
تحل واجهة برمجة تطبيقات اختصارات المشاركة محل واجهات برمجة تطبيقات المشاركة المباشرة.
بدلاً من عرض النتائج بشكل تفاعلي عند الطلب، تسمح واجهة برمجة التطبيقات Shared Shortcuts API
للتطبيقات بنشر أهداف المشاركة المباشرة مسبقًا. هذه هي طريقة
عمل ShortcutManager
.
بما أنّ واجهتَي برمجة التطبيقات متشابهتان، وسّعنا ShortcutInfo
واجهة برمجة التطبيقات لتسهيل استخدام كلتا
الميزتَين. باستخدام Share Shortcuts API، يمكنك مباشرةً تعيين
فئات أو مستخدمين لهدف مشاركة. تظل أهداف المشاركة في النظام
حتى يتم تحديث التطبيق نفسه أو يتم إلغاء تثبيت التطبيق.
إنّ آلية "المشاركة المباشرة" القديمة لا تزال تعمل، إلا أنّ التطبيقات التي تستخدمها تحظى بأولوية أقل من التطبيقات التي تستخدم واجهة برمجة التطبيقات Reporting 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، الذي يساعدك في العثور على مشاكل ملكية واصف الملفات وإصلاحها بسهولة أكبر.
تتشابه الأخطاء المتعلقة بإساءة معالجة ملكية وصف الملف، والتي تظهر على شكل use-after-Close وdouble-Close، مع أخطاء تخصيص الذاكرة لأخطاء تخصيص الذاكرة use-after-Free وبدون استخدام مزدوج، إلا أنّ تشخيص الأخطاء وإصلاحها أكثر صعوبة. وتحاول أداة fdsan رصد واصف ملكية الملف و/أو منعه من خلال فرضه.
لمزيد من المعلومات حول الأعطال المرتبطة بهذه المشاكل، راجِع خطأ رصده fdsan. لمزيد من المعلومات حول fdsan، يمكنك الاطّلاع على صفحة Googlesource على fdsan.
ELF TLS
إنّ التطبيقات التي تم إنشاؤها باستخدام NDK بالمستوى 29 من واجهة برمجة التطبيقات كحد أدنى يمكنها استخدام ELF TLS
بدلاً من emutls
. تمّت إضافة إتاحة الروابط الديناميكية والثابتة لدعم هذه الطريقة في التعامل مع المتغيرات المحلية لسلسلة المحادثات.
بالنسبة إلى التطبيقات المصمّمة للمستوى 28 من واجهة برمجة التطبيقات والمستويات الأدنى، تم تنفيذ تحسينات
على libgcc/compiler-rt
لمعالجة بعض مشاكل emutls
.
ولمزيد من المعلومات، يمكنك الاطّلاع على التغييرات في نظام التشغيل Android لمطوّري البرامج NDK.
وقت التشغيل
يتضمن Android 10 التغيير التالي في وقت التشغيل.
تشغيل جمع البيانات المهملة المستندة إلى المركز المالي
عندما تشير كائنات Java في النظام الأساسي الصغير إلى كائنات ضخمة في كومة C++، لا يمكن غالبًا استعادة كائنات C++ إلا عند جمع كائن Java، وعلى سبيل المثال، الانتهاء. في الإصدارات السابقة، قدرت النظام الأساسي أحجام العديد من كائنات C++ المرتبطة بكائنات Java. لم يكن هذا التقدير دقيقًا دائمًا وأدى في بعض الأحيان إلى زيادة كبيرة في استخدام الذاكرة، حيث فشلت المنصة في جمع البيانات غير الصحيحة في حين كان ينبغي أن تفعل.
في نظام التشغيل Android 10، تتتبّع أداة تجميع البيانات غير المرغوب فيها (GC) الحجم الإجمالي
لكومة الذاكرة المؤقتة التي يخصصها النظام malloc()
، ما يضمن دائمًا تضمين عمليات تخصيص malloc()
الكبيرة في العمليات الحسابية لعمليات تشغيل البيانات المهملة. وقد تشهد التطبيقات التي تتداخل
مع أعداد كبيرة من تخصيصات C++ مع تنفيذ Java زيادة في
معدل تكرار جمع البيانات غير المرغوب فيها نتيجةً لذلك. وقد تشهد التطبيقات الأخرى انخفاضًا طفيفًا.
الاختبار وتصحيح الأخطاء
يتضمّن نظام التشغيل Android 10 التحسينات التالية للاختبار وتصحيح الأخطاء.
تحسينات لتتبُّع النظام على الجهاز فقط
بدءًا من نظام التشغيل Android 10، يمكنك تحديد حدود لحجم ومدّة التتبُّع عند إجراء عملية تتبُّع للنظام على الجهاز. عند تحديد أي قيمة، ينفّذ النظام عملية تتبُّع طويلة ينسخ المخزن المؤقت للتتبُّع بشكل دوري إلى ملف الوجهة أثناء تسجيل عملية التتبُّع. ويكتمل التتبع عند الوصول إلى حدود الحجم أو المدة التي حددتها.
استخدِم هذه المَعلمات الإضافية لاختبار حالات استخدام مختلفة عن تلك التي يتم اختبارها باستخدام التتبُّع العادي. على سبيل المثال، قد يتم تشخيص خلل في الأداء لا يحدث إلا بعد تشغيل التطبيق لفترة طويلة من الزمن. في هذه الحالة، يمكنك تسجيل تتبع طويل على مدار يوم كامل، ثم تحليل نظام جدولة وحدة المعالجة المركزية (CPU) ونشاط القرص وسلاسل محادثات التطبيقات والبيانات الأخرى الواردة في التقرير لمساعدتك في تحديد سبب الخطأ.
في الإصدار 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()
.