يقدّم Android 9 (المستوى 28 من واجهة برمجة التطبيقات) ميزات وإمكانات جديدة رائعة المستخدمين والمطورين. يعرض هذا المستند الميزات الجديدة للمطوّرين.
لمزيد من المعلومات عن واجهات برمجة التطبيقات الجديدة، يُرجى الاطّلاع على تقرير اختلاف واجهة برمجة التطبيقات أو الانتقال إلى مرجع واجهة برمجة تطبيقات Android. تأكد أيضًا من الاطلاع على التغييرات في السلوك في Android 9 للتعرّف على حول المجالات التي قد تؤثر فيها تغييرات النظام الأساسي في تطبيقاتك.
تحديد الموقع الجغرافي داخل المنزل مع تفعيل ميزة "مراسلة نصية في الوقت الفعلي" لشبكة Wi-Fi
يتوافق 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
,
يسمح لتطبيقك بتخطيط المحتوى حول القواطع في الجهاز. يمكنك تحديد
هذه السمة إلى إحدى القيم التالية:
LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
يمكنك محاكاة صورة مقطوعة للشاشة على أي جهاز أو محاكي يعمل بنظام Android 9. على النحو التالي:
- فعِّل خيارات المطوّرين.
- في شاشة خيارات المطوِّر، انتقِل للأسفل إلى قسم الرسم. اختَر محاكاة شاشة بها صورة مقطوعة.
- اختَر حجم الصورة المقطوعة.
الإشعارات
يقدّم نظام 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
له ثلاث فئات جديدة ذات أولوية لميزة "عدم الإزعاج":PRIORITY_CATEGORY_ALARMS
ويعطي الأولوية للمنبّهات.PRIORITY_CATEGORY_MEDIA
لمنح الأولوية للأصوات من مصادر الوسائط، مثل الوسائط والتنقّل الصوتي.PRIORITY_CATEGORY_SYSTEM
التي تعطي الأولوية لأصوات النظام.
تتضمّن
NotificationManager.Policy
أيضًا سبعة ثوابت جديدة خاصة بـ "عدم الإزعاج" لمنع المقاطعة البصرية:SUPPRESSED_EFFECT_FULL_SCREEN_INTENT
لمنع الإشعار من بدء نشاط ملء الشاشة.SUPPRESSED_EFFECT_LIGHTS
يحظر أضواء الإشعارات.SUPPRESSED_EFFECT_PEEK
لمنع الإشعارات من التمرير لفترة قصيرة إلى وضع العرض ("الظهور السريع").SUPPRESSED_EFFECT_STATUS_BAR
تمنع الإشعارات من الظهور في شريط الحالة على الأجهزة التي تدعم أشرطة الحالة.SUPPRESSED_EFFECT_BADGE
لحظر الشارات على الأجهزة المتوافقة. لمزيد من المعلومات، راجع تعديل شارة الإشعار:SUPPRESSED_EFFECT_AMBIENT
لحظر الإشعارات على الأجهزة المتوافقة مع شاشات الاستراحة.SUPPRESSED_EFFECT_NOTIFICATION_LIST
لمنع الإشعارات من الظهور في عرض القائمة على الأجهزة التي تتيح العرض على شكل قائمة، مثل مركز الإشعارات أو شاشة القفل.
التوافق مع كاميرات متعدّدة وتحديثات الكاميرا
على الأجهزة التي تعمل بنظام التشغيل 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 باستخدام سر العميل. يتم تفعيل هذا الدعم تلقائيًا في الحالات التالية: استيفاء الشروط التالية:
- يجب أن يكون المستخدم قد فعّل الاحتفاظ بنسخة احتياطية باستخدام Android 9 أو أعلى.
- قام المستخدم بتعيين شاشة قفل الجهاز يتطلب فتح القفل باستخدام رقم تعريف شخصي أو نقش أو كلمة مرور.
عند تفعيل إجراء الخصوصية هذا، سيتم ضبط رقم التعريف الشخصي أو النقش أو كلمة المرور للجهاز المطلوبة لاستعادة البيانات من النسخ الاحتياطية التي أنشأها جهاز المستخدم. للتعلّم لمزيد من المعلومات حول التكنولوجيا التي تكمن وراء هذه الميزة، يمكنك الاطّلاع على 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.
من خلال جمع بيانات التتبّع هذه، يمكنك تسجيل بيانات التوقيت ذات الصلة بمحتوى تطبيقك. العمليات وسلاسل المحادثات والاطّلاع على الأنواع الأخرى من الأجهزة ذات الأهمية العالمية الولايات.
لمزيد من المعلومات عن هذه الأداة، يُرجى الاطّلاع على مقالة تطبيق النظام على الجهاز. التي يجب تتبعها.