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

يقدّم Android 9 (المستوى 28 من واجهة برمجة التطبيقات) ميزات وإمكانات جديدة رائعة المستخدمين والمطورين. يعرض هذا المستند الميزات الجديدة للمطوّرين.

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

تحديد الموقع الجغرافي داخل المنزل مع تفعيل ميزة "مراسلة نصية في الوقت الفعلي" لشبكة Wi-Fi

تتيح واجهات برمجة التطبيقات الجديدة لميزة "مراسلة نصية في الوقت الفعلي" (RTT) إمكانية تحديد الموضع الداخلي في تطبيقاتك.

يتوافق Android 9 مع النظام الأساسي لشبكة Wi-Fi وفقًا لمعيار IEEE 802.11-2016 للسماح لك بالاستفادة من الميزة، يُعرف أيضًا باسم Wi-Fi Round-Trip-Time (RTT). المكان الداخلي في تطبيقاتك.

على الأجهزة التي تعمل بنظام التشغيل Android 9 والمتوافقة مع الأجهزة، يمكن لتطبيقاتك استخدام واجهات برمجة تطبيقات ميزة "مراسلة نصية في الوقت الفعلي" لقياس المسافة إلى نقاط وصول Wi-Fi قريبة يمكنها استخدام ميزة "مراسلة نصية في الوقت الفعلي" (APs). يجب أن يتضمّن الجهاز تم تفعيل خدمات الموقع الجغرافي وتفعيل ميزة "البحث عن شبكات Wi-Fi" (ضمن الإعدادات > الموقع الجغرافي)، ويجب أن تتوفّر في تطبيقك ACCESS_FINE_LOCATION إذن. لا يحتاج الجهاز إلى الاتصال بنقاط الوصول لاستخدام ميزة "المراسلة النصية في الوقت الفعلي". للحفاظ على الخصوصية، يمكن للهاتف فقط تحديد المسافة إلى نقطة وصول نقاط الوصول لا تحتوي على هذه المعلومات.

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

باستخدام هذه الدقة، يمكنك إنشاء تجارب جديدة، مثل التنقّل داخل المبنى. وخدمات دقيقة تعتمد على الموقع الجغرافي، مثل التحكم الصوتي المميز (على سبيل المثال، "إضاءة هذا المصباح") والمعلومات المستندة إلى الموقع الجغرافي (مثل "هل هناك عروض خاصة لهذا المنتج؟").

عرض واجهة برمجة تطبيقات WiFi RTT قيد الاستخدام في التطبيق التجريبي Android WifiRttScan.

لمزيد من المعلومات، يُرجى مراجعة موقع Wi-Fi: النطاق باستخدام ميزة "مراسلة نصية في الوقت الفعلي".

دعم الصورة المقطوعة للشاشة

شاشة خيارات المطوّرين تعرض أحجام صور مقطوعة مختلفة

اختبار الصورة المقطوعة للشاشة باستخدام المحاكي

يتوافق Android 9 مع أحدث الشاشات التي تحتوي على قصاصات على شاشة للكاميرات ومكبرات الصوت تشير رسالة الأشكال البيانية DisplayCutout معرفة موقع وشكل المناطق غير الوظيفية حيث المحتوى. لتحديد وجود ومكان مناطق القطع هذه، استخدم getDisplayCutout() .

سمة تخطيط نافذة جديدة، layoutInDisplayCutoutMode، يسمح لتطبيقك بتخطيط المحتوى حول القواطع في الجهاز. يمكنك تحديد هذه السمة إلى إحدى القيم التالية:

يمكنك محاكاة صورة مقطوعة للشاشة على أي جهاز أو محاكي يعمل بنظام Android 9. على النحو التالي:

  1. فعِّل خيارات المطوّرين.
  2. في شاشة خيارات المطوِّر، انتقِل للأسفل إلى قسم الرسم. اختَر محاكاة شاشة بها صورة مقطوعة.
  3. اختَر حجم الصورة المقطوعة.

الإشعارات

يقدّم نظام Android 9 العديد من التحسينات على الإشعارات، وجميعها عبارة عن متوفّرة للمطوّرين الذين يستهدفون المستوى 28 من واجهة برمجة التطبيقات والمستويات الأعلى.

إشعارات المراسلة

نمط المراسلة مع إرفاق صورة.

إشعار المراسلة

أسلوب مراسلة مع الردود والمحادثات

للحصول على نموذج رمز برمجي يستخدم الإشعارات، بما في ذلك ميزات Android 9، يُرجى الاطّلاع على الأشخاص النموذج:

تجربة مراسلة محسَّنة

بدءًا من الإصدار 7.0 من نظام التشغيل Android (المستوى 24 من واجهة برمجة التطبيقات)، يمكنك إضافة إجراء للرد عليه. الرسائل أو إدخال نص آخر من الإشعار مباشرةً. تحسينات على Android 9 هذه الميزة مع التحسينات التالية:

  • دعم مبسَّط للمشاركين في المحادثة: Person يُستخدم الصف لتحديد الأشخاص المشاركين في محادثة، بما في ذلك الصور الرمزية ومعرّفات الموارد المنتظمة (URI). العديد من واجهات برمجة التطبيقات الأخرى، مثل addMessage()، تستفيد الآن من الفئة Person بدلاً من CharSequence. فئة Person أيضًا نمط تصميم Builder.

  • إتاحة الصور: يعرض Android 9 الآن الصور في "إشعارات المراسلة" على الهواتف. يمكنك استخدام setData() في الرسالة لعرض صورة. يوضح مقتطف الرمز التالي كيفية لإنشاء Person ورسالة تحتوي على صورة.

Kotlin

// Create new Person.
val sender = Person()
        .setName(name)
        .setUri(uri)
        .setIcon(null)
        .build()
// Create image message.
val message = Message("Picture", time, sender)
        .setData("image/", imageUri)
val style = Notification.MessagingStyle(getUser())
        .addMessage("Check this out!", 0, sender)
        .addMessage(message)

Java

// Create new Person.
Person sender = new Person()
        .setName(name)
        .setUri(uri)
        .setIcon(null)
        .build();
// Create image message.
Message message = new Message("Picture", time, sender)
        .setData("image/", imageUri);
Notification.MessagingStyle style = new Notification.MessagingStyle(getUser())
        .addMessage("Check this out!", 0, sender)
        .addMessage(message);
  • حفظ الردود كمسودات: يمكن لتطبيقك استرداد EXTRA_REMOTE_INPUT_DRAFT يرسله النظام عند إغلاق مستخدم لإشعار مراسلة عن غير قصد. يمكنك استخدام هذه الميزة الإضافية لملء الحقول النصية مسبقًا في التطبيق كي يتمكّن المستخدمون من إنهاء ردهم.

  • تحديد ما إذا كانت المحادثة عبارة عن محادثة جماعية: يمكنك استخدام setGroupConversation() لتحديد المحادثة عمدًا على أنها محادثة جماعية أو غير جماعية.

  • اضبط الإجراء الدلالي لهدف معيّن: setSemanticAction() إعطاء معنى دلالي لأحد الإجراءات، مثل "وضع علامة كمقروءة" و"حذف" و"الرد" وهكذا

  • الرد السريع: يتوافق Android 9 مع الردود المقترَحة نفسها المتاحة في تطبيق مراسلة. استخدام RemoteInput.setChoices() لتوفير صفيف من الاستجابات القياسية للمستخدم.

إعدادات القناة وعمليات البث وميزة "عدم الإزعاج"

قدَّم نظام Android 8.0 قنوات الإشعارات مما يسمح لك بإنشاء قناة مخصصة للمستخدم لكل نوع من الإشعارات التي تريد عرضها. يبسّط Android 9 إعدادات قناة الإشعارات من خلال التغييرات التالية:

  • حظر مجموعات القنوات: يمكن للمستخدمين الآن حظر مجموعات كاملة من القنوات ضمن إعدادات الإشعارات للتطبيق. يمكنك استخدام صفحة isBlocked() لتحديد متى يتم حظر مجموعة، وبالتالي لا ترسل أي الإشعارات للقنوات في تلك المجموعة.

    بالإضافة إلى ذلك، يمكن لتطبيقك الاستعلام عن إعدادات مجموعة القنوات الحالية باستخدام الجديد getNotificationChannelGroup() .

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

  • NotificationManager.Policy له ثلاث فئات جديدة ذات أولوية لميزة "عدم الإزعاج":

  • تتضمّن NotificationManager.Policy أيضًا سبعة ثوابت جديدة خاصة بـ "عدم الإزعاج" لمنع المقاطعة البصرية:

التوافق مع كاميرات متعدّدة وتحديثات الكاميرا

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

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

في Android 9، تستخدم الكاميرات المتعددة واجهة برمجة التطبيقات يتوافق مع الكاميرات الأحادية اللون للأجهزة المزوّدة FULL أو إمكانية LIMITED. يتم توفير الإخراج الأحادي اللون من خلال YUV_420_888 بتنسيق Y مع تدرج الرمادي، وU (Cb) كـ 128، وV (Cr) كـ 128.

يتيح Android 9 أيضًا إمكانية استخدام منفذ USB/UVC الخارجي. الكاميرات مفعَّلة الأجهزة المتوافقة.

برنامج فك ترميز الصور للملفات القابلة للرسم والصور النقطية

يوفّر Android 9 ImageDecoder تقدم طريقة حديثة لفك ترميز الصور. استخدام هذا الصف بدلاً من BitmapFactory وBitmapFactory.Options واجهات برمجة التطبيقات.

يتيح لك ImageDecoder إنشاء Drawable أو Bitmap من مخزن بايت للبايت، ملف أو معرف موارد منتظم (URI). لفك ترميز صورة، عليك أولاً createSource() مع مصدر الصورة المُشفَّرة. ثم اتصل decodeDrawable() أو decodeBitmap() من خلال تمرير ImageDecoder.Source لإنشاء عنصر Drawable أو Bitmap. لتغيير الإعدادات التلقائية، مرِّر OnHeaderDecodedListener إلى decodeDrawable() أو decodeBitmap(). مكالمتان (ImageDecoder) onHeaderDecoded() بالارتفاع والعرض الافتراضيين للصورة، بمجرد أن تكون معروفة. إذا كانت الصورة المرمّزة عبارة عن ملف GIF متحرك أو WebP، تعرض decodeDrawable() Drawable التي تعتبر مثيلاً للدالة AnimatedImageDrawable الصف.

تتوفّر طرق مختلفة يمكنك استخدامها لضبط خصائص الصورة:

  • لتوسيع نطاق الصورة التي تم فك ترميزها إلى حجم دقيق، مرِّر الأبعاد المستهدفة إلى setTargetSize() ويمكنك أيضًا تغيير حجم الصور باستخدام حجم عيّنة. تمرير حجم العينة مباشرة إلى setTargetSampleSize()
  • لاقتصاص صورة داخل نطاق الصورة التي تم تحجيمها، اطلب setCrop()
  • لإنشاء صورة نقطية قابلة للتغيير، عليك تمرير true إلى setMutableRequired()

يتيح لك ImageDecoder أيضًا إضافة تأثيرات مخصصة ومعقدة إلى الصور مثل الزوايا الدائرية أو على شكل أقنعة دائرية. استخدام setPostProcessor() مع مثيل PostProcessor الفئة لتنفيذ أي أوامر رسم تريدها.

Animation

يوفّر Android 9 AnimatedImageDrawable لرسم وعرض صور GIF وWebP المتحركة. يعمل AnimatedImageDrawable بشكل مشابه لـ AnimatedVectorDrawable لأنّ سلسلة العرض تحدّد الصور المتحركة في AnimatedImageDrawable. تستخدم سلسلة العرض أيضًا سلسلة تعليمات لفك ترميزها، حتى لا يكون فكّ الترميز تتداخل مع العمليات الأخرى في سلسلة العرض. ويسمح هذا التنفيذ في تطبيقك لعرض صورة متحركة بدون إدارة تحديثاته أو يتداخل مع الأحداث الأخرى في سلسلة واجهة المستخدم الخاصة بتطبيقك.

ويمكن فك ترميز AnimatedImageDrawable باستخدام مثيل ImageDecoder ما يلي: يعرض مقتطف الرمز كيفية استخدام ImageDecoder لفك ترميز AnimatedImageDrawable:

Kotlin

@Throws(IOException::class)
private fun decodeImage() {
    val decodedAnimation = ImageDecoder.decodeDrawable(
        ImageDecoder.createSource(resources, R.drawable.my_drawable))

    // Prior to start(), the first frame is displayed.
    (decodedAnimation as? AnimatedImageDrawable)?.start()
}

Java

private void decodeImage() throws IOException {
    Drawable decodedAnimation = ImageDecoder.decodeDrawable(
        ImageDecoder.createSource(getResources(), R.drawable.my_drawable));

    if (decodedAnimation instanceof AnimatedImageDrawable) {
        // Prior to start(), the first frame is displayed.
        ((AnimatedImageDrawable) decodedAnimation).start();
    }
}

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

فيديو VP9 بتقنية HDR وضغط صورة HEIF وواجهات برمجة تطبيقات الوسائط

يتوافق نظام التشغيل Android 9 مع معيار VP9 Profile 2 بنطاق عالي الديناميكية (HDR) حتى تتمكن من تقديم أفلام بتقنية HDR إلى المستخدمين من YouTube أو "أفلام Play" ومصادر أخرى على الأجهزة المزوّدة بتقنية النطاق العالي الديناميكية

يتيح Android 9 أيضًا إمكانية ترميز الصور باستخدام النسخة ذات الكفاءة العالية. تنسيق الملف (HEIF أو HEIC)، وهو ما يحسّن الضغط ويقلل من مساحة التخزين وبيانات الشبكة الاستخدام. يُسمح باستخدام عينات من صور HEIF الثابتة في MediaMuxer وMediaExtractor الصفوف. وبفضل توافق النظام الأساسي مع أجهزة Android 9، أصبح من السهل إرسال استخدام صور HEIF من خادم الخلفية. بعد التأكد من أن تطبيقك متوافقًا مع تنسيق البيانات هذا للمشاركة والعرض، لذا يُرجى تجربة HEIF. كتنسيق لتخزين الصور في تطبيقك. يمكنك تحويل jpeg إلى Heic باستخدام ImageDecoder أو BitmapFactory (الذي يحصل على صورة نقطية من ملف JPEG). يمكنك بعد ذلك استخدام HeifWriter لكتابة HEIF الصور الثابتة من مخازن بايت YUV أو مثيلات Surface أو Bitmap

تتوفر مقاييس الوسائط أيضًا من AudioTrack، AudioRecord, وMediaDrm صفًا.

يقدّم Android 9 طرقًا MediaDRM للحصول على المقاييس، HDCP ومستويات الأمان وعدد الجلسات، وإضافة المزيد من التحكم في مستويات الأمان ونقاط الوقف الآمنة. راجِع اختلاف واجهة برمجة التطبيقات. تقرير لمزيد من التفاصيل.

وفي Android 9، تضيف واجهة برمجة التطبيقات AAudio دعم العديد من سمات AAudioStream الإضافية، بما في ذلك الاستخدام والمحتوى والكتابة والإدخال المسبق. باستخدام هذه السمات، يمكنك إنشاء ساحات مشاركات التي تتعلق بتطبيقات VoIP أو كاميرات التسجيل. يمكنك أيضًا ضبط معرِّف الجلسة على ربط بث AAudio بتشكيلة فرعية يمكن أن تتضمن تأثيرات. يمكنك استخدام AudioEffect API للتحكّم في التأثيرات.

يوفِّر Android 9 AudioEffect واجهة برمجة التطبيقات لـ معالجة العوامل الديناميكية في هذا الصف، يمكنك إنشاء تأثيرات صوتية على مستوى القناة، بما في ذلك والمعادلة، والضغط متعدد النطاقات، والمحدد - عبر مراحل متعددة. تشير رسالة الأشكال البيانية عدد النطاقات والمراحل النشطة قابلة للتهيئة، ويمكن أن تكون معظم المعلمات التحكم في الوقت الفعلي.

حساسية تكلفة البيانات في Job Scheduler

بدءًا من نظام التشغيل Android 9، JobScheduler استخدام إشارات حالة الشبكة التي يوفرها مشغّلو شبكات الجوّال لتحسين عملية معالجة الوظائف المتعلقة بالشبكة.

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

عند إضافة وظائف، احرص على استخدام setEstimatedNetworkBytes() setPrefetch(), وsetRequiredNetwork() عندما يكون ذلك مناسبًا للمساعدة JobScheduler تتعامل مع العمل بشكل صحيح. عندما يتم تنفيذ مهمتك، تأكَّد من استخدام الكائن Network. تم إرجاعها بواسطة JobParameters.getNetwork() وإلا فستستخدم ضمنيًا الشبكة الافتراضية للجهاز التي قد لا يلبي متطلباتك، مما يؤدي إلى استخدام غير مقصود للبيانات.

واجهة برمجة التطبيقات للشبكات العصبية 1.1

تم إطلاق واجهة برمجة تطبيقات الشبكات العصبية في Android 8.1 (المستوى 27 لواجهة برمجة التطبيقات) لتسريع انتشار تعلُّم الآلة على الجهاز Android يوسّع Android 9 واجهة برمجة التطبيقات ويحسّنها، دعم لتسع عمليات جديدة:

المشكلة المعروفة: عند اجتياز ANEURALNETWORKS_TENSOR_QUANT8_ASYMM مقوّرات إلى ANEURALNETWORKS_PAD الذي يتوفر على نظام التشغيل Android 9 والإصدارات الأحدث قد لا يتطابق ناتج NNAPI مع إخراج جهاز ذي مستوى أعلى. أطر العمل التعليمية، مثل TensorFlow Lite إِنْتَ يجب أن يمرّ فقط ANEURALNETWORKS_TENSOR_FLOAT32 حتى يتم حل المشكلة.

بالإضافة إلى ذلك، تقدِّم واجهة برمجة التطبيقات أيضًا دالة جديدة، ANeuralNetworksModel_relaxComputationFloat32toFloat16()، تسمح لك بتحديد ما إذا كان يجب حساب ANEURALNETWORKS_TENSOR_FLOAT32 من خلال نطاق ودقة منخفضَين مثل النقطة العائمة بتنسيق IEEE 754 16 بت .

إطار عمل ميزة "الملء التلقائي"

ميزات عديدة في Android 9 توفِّر ميزة الملء التلقائي الخدمات التنفيذية لتعزيز تجربة المستخدم عند ملء النماذج. لمعرفة المزيد من المعلومات حول كيفية استخدام ميزات الملء التلقائي في تطبيقك، يُرجى الاطّلاع على دليل إطار عمل الملء التلقائي

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

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

تأكيد آمن لعمليات المُستخدِم على Android

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

في حال قبول المستخدم البيان، يتلقى ملف تخزين مفاتيح Android توقيع تشفير محمي من خلال مصادقة رسالة مجزّأة باستخدام مفتاح التعليمات البرمجية (HMAC). بعد أن يؤكّد Android Keystore صحة الرسالة، سيبدأ تطبيقك استخدام المفتاح الذي تم إنشاؤه من trustedConfirmationRequired في المفتاح الموثوق به بيئة التنفيذ (TEE) لتوقيع الرسالة التي قبلها المستخدم. تشير رسالة الأشكال البيانية يشير التوقيع، بثقة عالية للغاية، إلى أن المستخدم قد شاهد بيانك ووافق عليه.

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

للحصول على إرشادات حول إضافة ميزة "التأكيد الآمن" من Android، يُرجى الاطّلاع على حماية من Android التأكيد الدليل.

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

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

إذا كان تطبيقك يستخدم FingerprintManager لعرض مربع حوار المصادقة ببصمة الإصبع للمستخدمين، يمكنك التبديل إلى استخدام BiometricPrompt بدلاً من ذلك. يعتمد BiometricPrompt على النظام لعرض المصادقة . كما أنه يغيّر سلوكه للتكيّف مع نوع المقاييس الحيوية مصادقة اختارها المستخدم.

وحدة أمان الجهاز

يمكن للأجهزة المتوافقة التي تعمل بنظام التشغيل Android 9 أو الإصدارات الأحدث المثبَّتة: امتلاك StrongBox Keymaster، وهو تنفيذ لخوارزمية Keymaster HAL التي في وحدة أمان الجهاز. تحتوي الوحدة على ما يلي:

  • وحدة المعالجة المركزية الخاصة بها.
  • مساحة تخزين آمنة:
  • منشئ الأرقام العشوائية الحقيقي.
  • آليات إضافية لمقاومة التلاعب بالحِزم والتثبيت من مصدر غير مصرَّح به من التطبيقات.

عند التحقق من المفاتيح المخزنة في StrongBox Keymaster، يؤكد النظام مع بيئة التنفيذ الموثوقة (TEE).

لمعرفة المزيد من المعلومات حول استخدام Strongbox Keymaster، اطلع على أمان الأجهزة. الوحدة النمطية.

استيراد المفاتيح الآمنة إلى ملف تخزين المفاتيح

يوفّر Android 9 أمانًا إضافيًا لفك تشفير المفاتيح من خلال إضافة القدرة على استيراد المفاتيح المشفرة بأمان إلى ملف تخزين المفاتيح باستخدام تنسيق المفتاح بترميز ASN.1 يقوم Keymaster بعد ذلك بفك تشفير المفاتيح في ملف تخزين المفاتيح، ولذلك لا يظهر محتوى المفاتيح كنص عادي في ذاكرة مضيف الجهاز.

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

مخطط توقيع حزمة APK مع تغيير المفاتيح

يتيح نظام التشغيل Android 9 إمكانية استخدام الإصدار 3 من مخطّط توقيع حزمة APK. يحتوي هذا المخطط على الخيار لتضمين سجلّ صلاحية التغيير في خانة التوقيع لكل عملية توقيع. الشهادة. تتيح هذه الميزة توقيع تطبيقك بتوقيع جديد. الشهادة من خلال ربط شهادات التوقيع السابقة لملف APK بالشهادة التي تحمل الذي تم توقيعه الآن.

مزيد من المعلومات حول كيفية تدوير المفاتيح باستخدام apksigner

خيار السماح بفك تشفير المفاتيح على الأجهزة غير المقفلة فقط

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

لحماية مفتاح من فك التشفير عندما يكون الجهاز مقفلاً، فعِّل العلامة من خلال تمرير true إلى setUnlockedDeviceRequired() . بعد الانتهاء من هذه الخطوة، وعندما تكون شاشة المستخدم مقفلة، سيتم فشل محاولة فك تشفير البيانات أو توقيعها باستخدام هذا المفتاح. يتطلب الجهاز المُقفَل رقم التعريف الشخصي أو كلمة المرور أو بصمة الإصبع أو أي عامل موثوق به آخر قبل إجرائه الوصول إليه.

إتاحة التشفير القديم

تتوافق أجهزة Android 9 التي يتم شحنها مع Keymaster 4 مع Triple Data. خوارزمية التشفير أو Triple DES. إذا كان تطبيقك يعمل مع النظام القديم التي تتطلب Triple DES، استخدِم هذا النوع من الرموز عند إجراء التشفير بيانات الاعتماد الحساسة.

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

إيقاف WPS نهائيًا

تم إيقاف ميزة "إعداد Wi-Fi المحمي" (WPS) نهائيًا لأسباب أمنية.

النُسخ الاحتياطية من البيانات في جهاز Android

يوفّر Android 9 وظائف جديدة وخيارات المطوّرين ذات الصلة للنسخ الاحتياطي والاستعادة. تظهر تفاصيل هذه التغييرات في ما يلي الأقسام.

النُسخ الاحتياطية من التشفير من جهة العميل

يتيح نظام التشغيل Android 9 تشفير النُسخ الاحتياطية من البيانات في جهاز Android باستخدام سر العميل. يتم تفعيل هذا الدعم تلقائيًا في الحالات التالية: استيفاء الشروط التالية:

عند تفعيل إجراء الخصوصية هذا، سيتم ضبط رقم التعريف الشخصي أو النقش أو كلمة المرور للجهاز المطلوبة لاستعادة البيانات من النسخ الاحتياطية التي أنشأها جهاز المستخدم. للتعلّم لمزيد من المعلومات حول التكنولوجيا التي تكمن وراء هذه الميزة، يمكنك الاطّلاع على Google Cloud Key Vault المستند الموجز حول الخدمة

تحديد شروط الجهاز المطلوبة للاحتفاظ بنسخة احتياطية

إذا كانت بيانات التطبيق تتضمّن معلومات حساسة أو إعدادات مفضّلة، يمكن استخدام Android 9 القدرة على تحديد الجهاز الشروط التي يمكن بموجبها أن تكون بيانات التطبيق مضمَّنة في النسخة الاحتياطية لدى المستخدم، مثلاً عندما يكون من جهة العميل تفعيل التشفير أو إجراء عملية نقل محلية من جهاز إلى آخر

لمزيد من المعلومات حول الاحتفاظ بنسخة احتياطية من البيانات على أجهزة Android، راجع البيانات نظرة عامة على ميزة "الاحتفاظ بنسخة احتياطية"

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

تحسينات على ميزات تسهيل الاستخدام في Android 9 التي تجعل من السهل تقديم تجارب أفضل لمستخدمي تطبيقك.

دلالات التنقّل

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

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

عناوين الأجزاء المخصّصة لتسهيل الاستخدام

في الإصدار Android 8.1 (المستوى 27 من واجهة برمجة التطبيقات) والإصدارات الأقدم، لا يمكن دائمًا لخدمات تسهيل الاستخدام تحديد وقت تحديث جزء معين من الشاشة، مثل عندما يستبدل نشاط جزء جزءًا بجزء آخر. تتكون الأجزاء من عناصر واجهة مستخدم مجمعة منطقيًا ومترابطة مرئيًا والتي تشتمل عادةً على .

في الإصدار 9 من نظام Android، يمكنك تقديم عناوين جزء تسهيل الاستخدام أو عناوين يمكن التعرف عليها لهذه الأجزاء. إذا كان جزء يحتوي على عنوان جزء إمكانية الوصول، تتلقى خدمات إمكانية الوصول معلومات أكثر تفصيلاً عند تغيير الجزء. تتيح هذه الإمكانية للخدمات تقديم معلومات أكثر تفصيلاً للمستخدم حول ما تم تغييره في واجهة المستخدم

لتحديد عنوان الجزء، استخدم android:accessibilityPaneTitle . يمكنك أيضًا تحديث عنوان جزء واجهة المستخدم الذي تم استبداله في بيئة التشغيل باستخدام setAccessibilityPaneTitle(). على سبيل المثال، يمكنك تقديم عنوان لمنطقة محتوى Fragment.

التنقّل المستند إلى العنوان

إذا كان تطبيقك يعرض محتوى نصيًا يتضمن عناوين منطقية، اضبط android:accessibilityHeading إلى true لمثيلات View التي تمثّل هذه العناوين من بإضافة هذه العناوين، فأنت تسمح لخدمات تسهيل الاستخدام بمساعدة المستخدمين في التنقل مباشرةً من عنوان إلى آخر. يمكن لأي خدمة لتسهيل الاستخدام استخدام هذا القدرة على تحسين تجربة تجربة التنقّل في واجهة المستخدم

التنقّل بين المجموعة والمخرجات

تستخدم قارئات الشاشة بشكل تقليدي android:focusable إلى تحديد متى ينبغي له قراءة ViewGroup أو مجموعة من عناصر View كوحدة واحدة. بهذه الطريقة، من فهم المستخدمين أن وجهات النظر كانت مرتبطة منطقيًا ببعضها البعض.

في الإصدار Android 8.1 والإصدارات الأقدم، يجب وضع علامة على كل عنصر View داخل ViewGroup كعنصر لا يمكن التركيز عليه وViewGroup بحد ذاته يمكن التركيز عليه هذا النمط تسبب هذا الترتيب في جعل بعض مثيلات View قابلة للتركيز بطريقة جعل التنقل بلوحة المفاتيح أكثر إرهاقًا.

بدءًا من الإصدار 9 من نظام Android، يمكنك استخدام android:screenReaderFocusable بدلاً من السمة android:focusable في الحالات التي جعل كائن View قابلاً للتركيز عليه يؤدي إلى عواقب غير مرغوب فيها. قارئات الشاشة ركّز على كل العناصر التي حددت android:screenReaderFocusable أو android:focusable إلى true.

الإجراءات الملائمة

يتيح نظام التشغيل Android 9 إمكانية تنفيذ إجراءات ملائمة بالنيابة عن المستخدمين، وهي:

التفاعل مع التلميحات
تتيح لك الميزات المضافة في إطار عمل تسهيل الاستخدام الوصول إلى تلميحات في واجهة مستخدم التطبيق. استخدام getTooltipText() لقراءة نص التلميح، واستخدام ACTION_SHOW_TOOLTIP وACTION_HIDE_TOOLTIP لتوجيه مثيلات View لإظهار أو إخفاء التلميحات.
الإجراءات العامة المضافة
يوفّر Android 9 إمكانية تنفيذ إجراءين إضافيين للأجهزة في AccessibilityService الصف. يمكن لخدمتك مساعدة المستخدمين في قفل أجهزتهم وأخذ لقطات شاشة. باستخدام GLOBAL_ACTION_LOCK_SCREEN وGLOBAL_ACTION_TAKE_SCREENSHOT على التوالي.

تفاصيل تغيير النافذة

يسهِّل نظام Android 9 تتبُّع تحديثات نوافذ أحد التطبيقات عند استخدامه. لإعادة رسم نوافذ متعددة في وقت واحد. عندما TYPE_WINDOWS_CHANGED وقوع الحدث، فاستخدم getWindowChanges() واجهة برمجة التطبيقات لتحديد التغييرات التي طرأت على النوافذ. أثناء تحديث النوافذ المتعددة، فإن كل تنتج نافذة مجموعة الأحداث الخاصة بها. getSource() طريقة العرض الجذر للنافذة المرتبطة بكل حدث.

إذا حدّد أحد التطبيقات عناوين أجزاء تسهيل الاستخدام الخاصة به View، بإمكان الخدمة التعرّف على العناصر عند تحديث واجهة المستخدم للتطبيق. عندما TYPE_WINDOW_STATE_CHANGED وقوع الحدث، فاستخدم الأنواع التي تم إرجاعها بواسطة getContentChangeTypes() لتحديد التغييرات التي طرأت على النافذة. على سبيل المثال، يمكن لإطار العمل اكتشاف متى يكون للجزء عنوان جديد، أو عند اختفاء جزء.

الدوران

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

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

للحصول على مزيد من التفاصيل، يمكنك الاطلاع على السلوك المرتبط التغييرات.

شاشة جوّال دوّارة تعرض وضع التدوير الجديد الذي يتيح للمستخدمين تفعيل التدوير يدويًا

يتيح وضع التدوير الجديد للمستخدمين تشغيل التدوير يدويًا عند الحاجة باستخدام زر في شريط النظام.

نص

يوفّر Android 9 الميزات التالية المتعلّقة بالنص إلى النظام الأساسي:

  • النص المحسوب مسبقًا: صف واحد (PrecomputedText) يتحسّن أداء عرض النص من خلال تمكينك من حساب البيانات المطلوبة المعلومات في وقت مبكر. وتمكّن أيضًا تطبيقك من إيقاف تنسيق النص. سلسلة التعليمات الرئيسية.

  • المكبِّر: الفئة Magnifier هي التطبيق المصغَّر الذي يوفر واجهة برمجة تطبيقات للمكبّر، ما يتيح تجربة المكبِّر في جميع التطبيقات

  • Smart Linkify: يعزز Android 9 صف واحد (TextClassifier) التي تستفيد من التعلم الآلي لتحديد بعض الكيانات في النص المحدد واقتراح إجراءات. على سبيل المثال، بإمكان TextClassifier السماح لتطبيقك برصد أنّ المستخدم قد اختار رقم هاتف يمكن أن يقترح تطبيقك بعد ذلك أن إجراء المستخدم لمكالمة هاتفية باستخدام هذا الرقم. الميزات المتوفّرة في "TextClassifier" تستبدل وظائف الفئة Linkify.

  • تخطيط النص: تؤدي العديد من الطرق والسمات الملائمة إلى تسهيل وتنفيذ تصميم واجهة المستخدم لديك. للاطّلاع على التفاصيل، يُرجى مراجعة المستندات المرجعية TextView

تحويل ملفات DEX مسبقًا إلى صور بتنسيق ART

وقت تشغيل Android على الأجهزة التي تعمل بنظام التشغيل Android 9 أو الإصدارات الأحدث (ART) يعمل برنامج التحويل البرمجي مسبقًا (ART) على تحسين ملف Dalvik القابل للتنفيذ بشكل أكبر (DEX) عن طريق تحويل ملفات DEX الموجودة في حزمة التطبيق إلى تمثيلاً مكثفًا. يسمح هذا التغيير ببدء تشغيل تطبيقك بشكل أسرع واستخدام مساحة أقل على القرص وذاكرة وصول عشوائي.

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

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

يسمح لك Android 9 بتسجيل آثار النظام من جهازك، ثم مشاركة تقرير عن هذه التسجيلات مع فريق التطوير. هذا التقرير يدعم تنسيقات متعددة، بما في ذلك HTML.

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

لمزيد من المعلومات عن هذه الأداة، يُرجى الاطّلاع على مقالة تطبيق النظام على الجهاز. التي يجب تتبعها.