مستوى واجهة برمجة التطبيقات: 21
Android 5.0 (LOLLIPOP) ميزات جديدة للمستخدمين ومطوّري التطبيقات. يقدّم هذا المستند intro إلى أبرز واجهات برمجة التطبيقات الجديدة.
إذا كان لديك تطبيق منشور، احرص على الاطّلاع على تغييرات السلوك في Android 5.0 التي يجب مراعاتها في تطبيقك. قد تؤثر تغييرات السلوك هذه في تطبيقك على أجهزة Android 5.0، حتى إذا لم تكن تستخدِم واجهات برمجة تطبيقات جديدة أو تستهدِف وظائف جديدة.
للحصول على نظرة عامة على ميزات النظام الأساسي الجديدة، يمكنك بدلاً من ذلك الاطّلاع على أهم الميزات في Android Lollipop .
ابدأ التطوير
لبدء إنشاء تطبيقات لنظام Android 5.0، يجب أولاً الحصول حزمة تطوير البرامج (SDK) لنظام التشغيل Android. بعد ذلك، استخدِم مدير حِزم تطوير البرامج (SDK) لتنزيل نظام Android 5.0 SDK Platform وSystem Images.
تعديل مستوى واجهة برمجة التطبيقات المستهدَف
لتحسين تطبيقك بشكل أفضل على الأجهزة التي تعمل بنظام Android 5.0،
اضبط targetSdkVersion
على
"21"
، ثبِّت تطبيقك على صورة نظام Android
5.0، واختبره، ثم انشر التطبيق المعدَّل الذي يتضمّن
هذا التغيير.
يمكنك استخدام واجهات برمجة تطبيقات Android 5.0 مع إتاحة الإصدارات
الأقدم أيضًا من خلال إضافة شروط إلى الرمز البرمجي للتحقّق من مستوى واجهة برمجة التطبيقات للنظام
قبل تنفيذ واجهات برمجة التطبيقات غير المتوافقة مع minSdkVersion
.
لمعرفة المزيد من المعلومات حول الحفاظ على التوافق مع الأنظمة القديمة، يُرجى الاطّلاع على المقالة الدعم.
إصدارات أنظمة أساسية مختلفة
لمزيد من المعلومات حول طريقة عمل مستويات واجهة برمجة التطبيقات، يمكنك الاطّلاع على مقالة ما المقصود بواجهة برمجة التطبيقات؟ ما هو المستوى؟
تغييرات مهمة في السلوك
إذا سبق لك نشر تطبيق لنظام Android، يُرجى الانتباه إلى أنّ تطبيقك قد يتأثر بالتغييرات في الإصدار Android 5.0.
يُرجى الاطّلاع على التغييرات في الإصدار 5.0 من نظام التشغيل Android للحصول على المعلومات الكاملة.
واجهة المستخدم
دعم التصميم المتعدد الأبعاد
يدعم Android 5.0 التصميم المتعدد الأبعاد الجديد في Android والنمط. يمكنك إنشاء تطبيقات ذات تصميم متعدد الأبعاد تكون ديناميكية بصريًا تحتوي على انتقالات عناصر واجهة المستخدم التي تبدو طبيعية للمستخدمين. ويشمل هذا الدعم ما يلي:
- مظهر المواد
- عرض الظلال
- تطبيق
RecyclerView
المصغّر - تأثيرات الرسوم المتحركة والتصميم القابلة للرسم
- تأثيرات الصور المتحركة وتأثيرات انتقال النشاط في التصميم المتعدد الأبعاد
- صور متحركة لخصائص الملف الشخصي استنادًا إلى حالة الملف الشخصي
- تطبيقات مصغّرة لواجهة المستخدم وأشرطة التطبيقات القابلة للتخصيص مع لوحات ألوان يمكنك التحكّم فيها
- عناصر قابلة للرسم متحركة وغير متحركة استنادًا إلى رسومات متجهات XML
لمعرفة المزيد من المعلومات عن إضافة وظائف التصميم المتعدد الأبعاد إلى تطبيقك، يمكنك الاطّلاع على التصميم المتعدد الأبعاد:
عرض المستندات والأنشطة المتزامنة في شاشة "العناصر الأخيرة"
في الإصدارات السابقة، كانت
شاشة "التطبيقات المستخدَمة مؤخرًا"
لا تعرض سوى مهمة واحدة لكل تطبيق تفاعل معه المستخدِم
مؤخرًا. يمكن الآن لتطبيقك فتح المزيد من المهام حسب الحاجة لمزيد من الأنشطة المتزامنة للمستندات. تسهّل هذه الميزة إنجاز المهام المتعددة من خلال السماح للمستخدمين بالتبديل بسرعة بين الأنشطة والمستندات الفردية من شاشة التطبيقات التي استخدمتها مؤخرًا، مع توفير تجربة تبديل متسقة في جميع التطبيقات.
وقد تتضمن أمثلة هذه المهام المتزامنة علامات التبويب المفتوحة في موقع إلكتروني.
تطبيق متصفّح، مستندات في تطبيق إنتاجية، مطابقات متزامنة في
أو لعبة أو محادثات في تطبيق مراسلة. يمكن لتطبيقك إدارة مهامه.
من خلال الصف ActivityManager.AppTask
.
لإدراج فاصل منطقي كي يتعامل النظام مع نشاطك على أنّه مهمة جديدة، استخدِم FLAG_ACTIVITY_NEW_DOCUMENT
عند
بدء النشاط باستخدام startActivity()
. يمكنك أيضًا الحصول على هذا السلوك من خلال ضبط سمة documentLaunchMode
في عنصر
<activity>
على "intoExisting"
أو
"always"
في البيان.
لتجنُّب تشويش شاشة "التطبيقات المستخدَمة مؤخرًا"، يمكنك ضبط الحد الأقصى لعدد tasks من تطبيقك الذي يمكن أن يظهر في هذه الشاشة. للقيام بذلك، قم بتعيين
<application>
السمة android:maxRecents
. الحالي
الحد الأقصى الذي يمكن تحديده هو 50 مهمة لكل مستخدم (25 مهمة للأجهزة ذات ذاكرة الوصول العشوائي المنخفضة).
يمكن ضبط المهام في شاشة الأحدث على أن تستمر في جميع عمليات إعادة التشغيل. للتحكّم في
سلوك الاحتفاظ بالبيانات، استخدِم السمة
android:persistableMode
. يمكنك أيضًا تغيير
السمات المرئية لنشاط في شاشة "النشاطات الأخيرة"، مثل
لون النشاط وتصنيفه ورمزه، وذلك من خلال استدعاء الأسلوب
setTaskDescription()
.
تحديثات WebView
يعمل Android 5.0 على تحديث WebView
إلى Chromium M37، مع توفير تحسينات في الأمان والثبات
بالإضافة إلى إصلاح الأخطاء. تم تعديل سلسلة وكيل المستخدم التلقائية لتطبيق
WebView
الذي يعمل بنظام التشغيل Android 5.0
لدمج 37.0.0.0 كرقم الإصدار.
يعرّف هذا الإصدار فئة PermissionRequest
،
الذي يسمح لتطبيقك بمنح إذن WebView
للدخول إلى الموارد المحمية مثل الكاميرا والميكروفون، من خلال واجهات برمجة تطبيقات الويب
مثل getUserMedia(). يجب أن يتضمّن تطبيقك الميزات
أذونات Android لهذه الموارد لمنح الأذونات إلى
WebView
باستخدام طريقة onShowFileChooser()
الجديدة،
يمكنك الآن استخدام حقل نموذج إدخال في WebView
،
وتشغيل أداة اختيار ملفات لاختيار الصور والملفات من جهاز Android.
بالإضافة إلى ذلك، يدعم هذا الإصدار WebAudio WebGL و معايير WebRTC المفتوحة للاطّلاع على مزيد من المعلومات عن الميزات الجديدة المضمّنة في هذا الإصدار، يُرجى الاطّلاع على مقالة WebView لنظام التشغيل Android.
التقاط الشاشة ومشاركتها
يتيح لك Android 5.0 إضافة إمكانات التقاط الشاشة ومشاركة الشاشة إلى
تطبيقك مع واجهات android.media.projection
API الجديدة. تكون هذه الوظيفة مفيدة، على سبيل المثال، إذا كنت تريد تفعيل ميزة مشاركة الشاشة في أحد تطبيقات مؤتمرات الفيديو.
طريقة createVirtualDisplay()
الجديدة
يسمح للتطبيق بالتقاط محتوى الشاشة الرئيسية (الإعداد التلقائي
العرض) في كائن Surface
، ويمكن لتطبيقك بعد ذلك
إرسالها عبر الشبكة. لا تسمح واجهة برمجة التطبيقات إلا بالتقاط لقطات شاشة غير آمنة.
وليس من صوت النظام. لبدء التقاط الشاشة، يجب أن يتضمّن تطبيقك أولاً
تطلب إذن المستخدم من خلال تشغيل مربع حوار التقاط الشاشة باستخدام
Intent
التي تم الحصول عليها من خلال
createScreenCaptureIntent()
.
للحصول على مثال على كيفية استخدام واجهات برمجة التطبيقات الجديدة، اطّلِع على MediaProjectionDemo
الفئة في نموذج المشروع.
الإشعارات
إشعارات شاشة القفل
يمكن لشاشات القفل في الإصدار 5.0 من نظام التشغيل Android عرض الإشعارات. يمكن للمستخدمين اختيار ما إذا كانوا يريدون السماح بعرض محتوى الإشعارات الحسّاس على شاشة قفل آمنة من خلال الإعدادات.
يمكن لتطبيقك التحكّم في مستوى التفاصيل التي تظهر عندما تكون إشعاراته مفعَّلة.
المعروضة على شاشة القفل الآمنة. للتحكّم في مستوى الرؤية، اتصل بالرقم
setVisibility()
وحدد إحدى القيم التالية:
VISIBILITY_PRIVATE
: يعرض المعلومات الأساسية، مثل رمز الإشعار، ولكنه يخفي المحتوى الكامل للإشعار.VISIBILITY_PUBLIC
: يعرض المحتوى الكامل في الإشعار.VISIBILITY_SECRET
: لا يتم عرض أي شيء، بما في ذلك رمز الإشعار.
عندما يكون مستوى الرؤية هو VISIBILITY_PRIVATE
،
يمكنك أيضًا تقديم نسخة مخفية من الإشعار
محتوى يخفي تفاصيل شخصية على سبيل المثال، قد يعرض تطبيق SMS
إشعار يعرض "لديك 3 رسائل نصية جديدة" ولكن يخفي الرسالة
المحتوى والمرسلين. لتقديم هذا الإشعار البديل، عليك أولاً إنشاء
تم إرسال إشعار الاستبدال باستخدام Notification.Builder
. فعندما
إنشاء كائن الإشعار الخاص، وإرفاق إشعار الاستبدال
إليه من خلال
طريقة setPublicVersion()
.
البيانات الوصفية للإشعارات
يستخدم الإصدار 5.0 من نظام التشغيل Android البيانات الوصفية المرتبطة بإشعارات تطبيقك
لترتيب الإشعارات بشكل أكثر ذكاءً. لضبط البيانات الوصفية، استخدِم methods التالية في Notification.Builder
عند
إنشاء الإشعار:
setCategory()
: يُستخدم هذا الخيار لإعلام النظام بطريقة التعامل مع إشعارات التطبيقات عندما يكون الجهاز في وضع الأولوية (على سبيل المثال، إذا كان الإشعار يمثّل مكالمة واردة أو رسالة فورية أو إنذارًا).setPriority()
: يُستخدَم هذا الرمز لتمييز الإشعار بأنّه أكثر أو أقل أهمية من الإشعارات العادية. الإشعارات التي تم ضبط حقل الأولوية لها علىPRIORITY_MAX
أو تظهرPRIORITY_HIGH
في نافذة عائمة صغيرة إذا كان الإشعار أيضًا يصدر صوتًا أو اهتزازًا.addPerson()
: يتيح لك هذا الخيار إضافة مستخدم واحد أو أكثر يتعلق بإشعار معيّن. يمكن لتطبيقك استخدام هذه المعلومات للإشارة إلى النظام بأنّه يجب تجميع الإشعارات الواردة من الأشخاص المحدّدين معًا، أو ترتيب إشعارات هؤلاء الأشخاص على أنّها أكثر أهمية.
الرسومات
إتاحة استخدام OpenGL ES 3.1
يضيف نظام التشغيل Android 5.0 واجهات Java وتوافقًا أصليًا مع OpenGL ES 3.1. تتضمن الوظائف الأساسية الجديدة المتوفرة في OpenGL ES 3.1 ما يلي:
- أدوات تظليل الحوسبة
- عناصر مخطِّط الألوان المنفصلة
- أوامر الرسم غير المباشرة
- مواد النسيج المستندة إلى عيّنات متعددة والنماذج
- تحسينات على لغة التظليل
- إضافات لأوضاع الدمج المتقدّمة وتصحيح الأخطاء
- التوافق مع الأنظمة القديمة مع الإصدارين 2.0 و3.0 من OpenGL ES
يتم توفير واجهة Java لـ OpenGL ES 3.1 على Android مع
GLES31
. عند استخدام OpenGL ES 3.1، احرص على
الإفصاح عنه في ملف البيان باستخدام العلامة
<uses-feature>
والسمة android:glEsVersion
. مثلاً:
<manifest> <uses-feature android:glEsVersion="0x00030001" /> ... </manifest>
لمزيد من المعلومات عن استخدام OpenGL ES، بما في ذلك كيفية التحقق من إصدار OpenGL ES المتوافق مع الجهاز في وقت التشغيل، راجِع دليل واجهة برمجة التطبيقات OpenGL ES.
حزمة إضافات Android
بالإضافة إلى OpenGL ES 3.1، يوفر هذا الإصدار حزمة إضافات
واجهات Java ودعم أصلي لوظائف الرسومات المتقدمة. هذه
يتعامل Android مع الإضافات كحزمة واحدة. (إذا كانت
تتوفّر إضافة واحدة (ANDROID_extension_pack_es31a
)، ويمكن لتطبيقك
افتراض أن جميع الإضافات في الحزمة موجودة وتفعيل لغة التظليل
الميزات مع عبارة #extension
واحدة).
تتيح حزمة الإضافات ما يلي:
- ضمان توفُّر برنامج تحويل الشرائح لوحدات تخزين برنامج تحويل الشرائح والصور والعناصر الأساسية (تتوفّر ميزة برنامج تحويل الشرائح اختياريًا في OpenGL ES 3.1).
- ألوان تشويقية وتظليل هندسي
- تنسيق ضغط بنية ASTC (LDR)
- الاستيفاء والتظليل لكل عينة
- أوضاع دمج مختلفة لكل مرفق لون في ذاكرة التخزين المؤقت للإطار
ويتم توفير واجهة Java لحزمة الإضافات مع
GLES31Ext
في بيان التطبيق، يمكنك توضيح ما يلي:
يجب ألا يتم تثبيت تطبيقك إلا على الأجهزة المتوافقة مع حزمة الإضافات.
مثلاً:
<manifest> <uses-feature android:name=“android.hardware.opengles.aep” android:required="true" /> ... </manifest>
الوسائط
واجهة برمجة التطبيقات Camera API لإمكانيات الكاميرا المتقدّمة
يقدّم Android 5.0 الميزة الجديدة
android.hardware.camera2
واجهة برمجة التطبيقات (API) لتسهيل التقاط الصور ومعالجة الصور بدقة بالغة. يمكنك الآن
الوصول آليًا إلى أجهزة الكاميرا المتاحة للنظام باستخدام getCameraIdList()
والاتصال بجهاز معيّن باستخدام openCamera()
.
لبدء التقاط الصور، عليك إنشاء CameraCaptureSession
.
وتحديد عناصر Surface
لإرسال الصور التي تم التقاطها.
يمكن ضبط CameraCaptureSession
لالتقاط لقطات فردية أو صور متعددة في وضع "التسلسل".
ليتم إعلامك عند التقاط صور جديدة، نفِّذ
مستمِع من CameraCaptureSession.CaptureCallback
وتعيينه في طلب الالتقاط. الآن عندما يكمل النظام طلب التقاط
الصورة، يتلقّى مستمع CameraCaptureSession.CaptureCallback
مكالمة إلى
onCaptureCompleted()
، ويقدّم لك البيانات الوصفية لالتقاط الصورة في CaptureResult
.
تتيح فئة CameraCharacteristics
لتطبيقك معرفة ميزات الكاميرا المتاحة على الجهاز. تمثّل سمة
INFO_SUPPORTED_HARDWARE_LEVEL
للجسم مستوى وظائف الكاميرا.
- تدعم جميع الأجهزة على الأقل
مستوى جهاز واحد (
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY
) يوفّر إمكانات مكافئة تقريبًا لقيمةCamera
متوقفة نهائيًا واجهة برمجة التطبيقات. - يمكن استخدام الميزات اليدوية في الأجهزة التي تتوافق مع مستوى جهاز
INFO_SUPPORTED_HARDWARE_LEVEL_FULL
. التحكّم في الالتقاط والمعالجة بعد المعالجة، والتقاط صور عالية الدقة بمعدلات عرض إطارات مرتفعة.
لمعرفة كيفية استخدام الإصدار الجديد
الكاميرا
واجهة برمجة التطبيقات، يُرجى الرجوع إلى تنفيذ Camera2Basic
وCamera2Video
في هذا الإصدار.
تشغيل الصوت
يتضمن هذا الإصدار التغييرات التالية على
AudioTrack
:
- يمكن لتطبيقك الآن تقديم بيانات صوتية بتنسيق النقطة العائمة
(
ENCODING_PCM_FLOAT
). يتيح ذلك نطاقًا ديناميكيًا أكبر ودقة أكثر اتساقًا ومساحة أكبر للتحسين. تكون العمليات الحسابية ذات النقطة العائمة مفيدة بشكل خاص أثناء العمليات الحسابية الوسيطة. تستخدم نقاط نهاية التشغيل تنسيق أعداد صحيحة للبيانات الصوتية، وبعمق بت أقل. (في Android 5.0، لا تزال أجزاء من المسار الداخلي تستخدم النقطة الثابتة.) - يمكن لتطبيقك الآن توفير بيانات صوتية مثل
ByteBuffer
في بالتنسيق نفسه المقدَّم منMediaCodec
. WRITE_NON_BLOCKING
إلى تبسيط التخزين المؤقت وسلاسل المحادثات المتعددة لبعض التطبيقات.
عنصر التحكّم في تشغيل الوسائط
استخدِم واجهات برمجة التطبيقات الجديدة للإشعارات والوسائط لضمان أن يتعرّف واجهة مستخدم النظام على تشغيل الوسائط وأن يتمكّن من استخراج صورة الألبوم وعرضها.
أصبح التحكّم في تشغيل الوسائط في واجهة المستخدم والخدمة أسهل الآن باستخدام الفئتَين الجديدتَين
MediaSession
و
MediaController
.
تستبدل فئة MediaSession
الجديدة
فئة RemoteControlClient
المتوقّفة نهائيًا وتوفّر
مجموعة واحدة من طرق الاستدعاء لمعالجة عناصر التحكّم في التشغيل وأزرار الوسائط.
إذا كان تطبيقك يتيح تشغيل الوسائط وكان يعمل على نظام التشغيل Android
التلفزيون أو
منصة Wear، استخدِم
درجة واحدة (MediaSession
) للتعامل مع خدمة النقل
عناصر التحكم باستخدام نفس طرق معاودة الاتصال.
يمكنك الآن إنشاء تطبيق خاص بك لوحدة التحكُّم في الوسائط باستخدام
صف واحد (MediaController
). توفّر هذه الفئة
طريقة آمنة لمراقبة تشغيل الوسائط والتحكّم فيه من عملية واجهة المستخدم في تطبيقك.
عند إنشاء وحدة تحكّم، يجب تحديد MediaSession.Token
.
حتى يتمكّن تطبيقك من التفاعل مع MediaSession
المحدَّد.
باستخدام طريقتَي MediaController.TransportControls
،
يمكنك إرسال أوامر مثل play()
،
stop()
,
skipToNext()
,
وsetRating()
للتحكم في تشغيل الوسائط في تلك الجلسة. باستخدام وحدة التحكم، يمكنك أيضًا
تسجيل كائن MediaController.Callback
في
والاستماع إلى بيانات التعريف وتغييرات الحالة خلال الجلسة.
بالإضافة إلى ذلك، يمكنك إنشاء إشعارات غنية تتيح التحكم في التشغيل
مرتبط بجلسة إعلامية مع Notification.MediaStyle
الجديد
الصف.
تصفُّح الوسائط
يتيح نظام التشغيل Android 5.0 للتطبيقات تصفُّح مكتبة محتوى الوسائط
في تطبيق آخر، وذلك من خلال واجهة برمجة التطبيقات الجديدة
android.media.browse
. لعرض محتوى الوسائط في تطبيقك، وسِّع فئة
MediaBrowserService
. يجب أن يتيح لك تنفيذ
MediaBrowserService
الوصول إلى
MediaSession.Token
حتى تتمكّن التطبيقات من تشغيل محتوى الوسائط
الذي يتم تقديمه من خلال خدمتك.
للتفاعل مع خدمة متصفّح وسائط، استخدِم فئة
MediaBrowser
. تحديد المكوِّن
لـ MediaSession
عند إنشاء
مثيل MediaBrowser
باستخدام مثيل المتصفّح هذا،
يمكن لتطبيقك بعد ذلك الاتصال بالخدمة المرتبطة والحصول على MediaSession.Token
لتشغيل المحتوى المعروض
من خلال هذه الخدمة.
مساحة التخزين
اختيار الدليل
يوسِّع Android 5.0 إطار عمل الوصول إلى مساحة التخزين للسماح للمستخدمين بتحديد شجرة فرعية للدليل بالكامل، مما يمنح التطبيقات الإذن بالقراءة/الكتابة إلى جميع المستندات المضمنة بدون طلب تأكيد من المستخدم لكل عنصر.
لتحديد شجرة فرعية لدليل، قم بإنشاء وإرسال
OPEN_DOCUMENT_TREE
والنية. يعرض النظام جميع
تتوفّر DocumentsProvider
مثيلات تتيح اختيار الأشجار الفرعية.
للسماح للمستخدم بالتصفح وتحديد دليل. يمثل معرّف الموارد المنتظم (URI) المعروض
الوصول إلى الشجرة الفرعية المحددة. يمكنك بعد ذلك استخدام buildChildDocumentsUriUsingTree()
وbuildDocumentUriUsingTree()
بالإضافة إلى
query()
لاستكشاف الشجرة الفرعية.
تتيح لك طريقة createDocument()
الجديدة إنشاء مستندات أو أدلة جديدة في أي مكان.
تحت الشجرة الفرعية. لإدارة المستندات الحالية، استخدم
renameDocument()
و
deleteDocument()
التحقق من COLUMN_FLAGS
للتحقق من دعم موفّر الخدمة لهذه المكالمات قبل إصدارها.
إذا كنت تنفّذ DocumentsProvider
وأردت
لإتاحة اختيار الشجرة الفرعية، يجب تنفيذ isChildDocument()
وتضمين FLAG_SUPPORTS_IS_CHILD
.
في COLUMN_FLAGS
.
يقدم Android 5.0 أيضًا أدلة جديدة خاصة بالحزم على
مساحة تخزين مشتركة يمكن لتطبيقك من خلالها وضع ملفات الوسائط لتضمينها في
MediaStore
تعرض الدالة getExternalMediaDirs()
مسارات إلى هذه
الأدلة على كل أجهزة التخزين المشتركة. على غرار
getExternalFilesDir()
,
لا يحتاج تطبيقك إلى أذونات إضافية للوصول إلى المسارات المعروضة. تشير رسالة الأشكال البيانية
بشكل دوري عن الوسائط الجديدة في هذه الأدلة، ولكن يمكنك أيضًا
يمكنك استخدام MediaScannerConnection
للبحث بشكل صريح عن التطبيقات الجديدة.
المحتوى.
الشبكة اللاسلكية والاتصال
اتصالات الشبكة المتعددة
يوفّر Android 5.0 واجهات برمجة تطبيقات جديدة متعددة الشبكات تتيح لتطبيقك والبحث ديناميكيًا عن الشبكات المتاحة ذات الإمكانيات المحددة لإنشاء صلة بها. تكون هذه الوظيفة مفيدة عندما يكون تطبيقك تتطلّب شبكة متخصّصة، مثل شبكة SUPL أو رسالة وسائط متعددة أو شبكة فوترة مشغّل شبكة الجوّال أو إذا كنت ترغب في إرسال البيانات باستخدام نوع معيّن من بروتوكولات النقل.
لاختيار شبكة والاتصال بها ديناميكيًا من تطبيقك، اتبع الخطوات التالية الخطوات:
- أنشئ
ConnectivityManager
. - استخدِم الفئة
NetworkRequest.Builder
لإنشاء عنصرNetworkRequest
وتحديد ميزات الشبكة ونوع وسيلة النقل التي يهتم بها تطبيقك - للبحث عن شبكات مناسبة، يمكنك استدعاء
requestNetwork()
أوregisterNetworkCallback()
، وضبط العنصرNetworkRequest
وتنفيذConnectivityManager.NetworkCallback
. يمكنك استخدامrequestNetwork()
إذا كنت تريد التبديل بشكل نشط إلى شبكة مناسبة عند رصدها. استلام الإشعارات للشبكات التي تم فحصها فقط بدون التبديل النشط، استخدم طريقةregisterNetworkCallback()
بدلاً من ذلك.
عندما يكتشف النظام شبكة مناسبة، فإنه يتصل بالشبكة
يستدعي
onAvailable()
معاودة الاتصال. يمكنك استخدام عنصر Network
من طلب إعادة الاتصال للحصول على
معلومات إضافية عن الشبكة، أو لتوجيه الزيارات لاستخدام
الشبكة المحدّدة.
بلوتوث منخفض الطاقة
وفّر نظام التشغيل Android 4.3 إمكانات استخدام البلوتوث المنخفض الطاقة (Bluetooth LE) في الدور المركزي. في نظام Android 5.0، يمكن لجهاز Android الآن جهاز ملحق بالبلوتوث منخفض الطاقة يمكن للتطبيقات استخدام هذه الإمكانية للتعريف بتواجدها على الأجهزة المجاورة. على سبيل المثال، يمكنك إنشاء تطبيقات تسمح للجهاز بالعمل كمقياس خطوات أو جهاز مراقبة الصحة ونقل بياناته إلى جهاز آخر مزوّد بتقنية Bluetooth LE.
تتيح واجهات برمجة التطبيقات الجديدة لنظام android.bluetooth.le
لتطبيقاتك بث الإعلانات والبحث عن الردود وإنشاء اتصالات بأجهزة بلوتوث LE المجاورة. لاستخدام ميزتَي الإعلان والمسح الضوئي الجديدتَين، أضِف الإذن
BLUETOOTH_ADMIN
في البيان. عندما يُجري المستخدمون تحديثًا لتطبيقك أو ينزّلونه من "متجر Play"،
يُطلب منهم منح تطبيقك الإذن التالي:
"معلومات الاتصال عبر البلوتوث: يسمح هذا الإذن للتطبيق بالتحكّم في البلوتوث،
بما في ذلك البث إلى أجهزة البلوتوث المجاورة أو الحصول على معلومات عنها".
لبدء عرض الإعلانات باستخدام بروتوكول Bluetooth LE كي تتمكّن الأجهزة الأخرى من اكتشاف
تطبيقك، يمكنك الاتصال بـ
startAdvertising()
وإرسال عملية تنفيذ لفئة
AdvertiseCallback
. كائن معاودة الاتصال
تلقّي تقرير بنجاح العملية الإعلانية أو إخفاقها.
يقدّم الإصدار 5.0 من Android فئة ScanFilter
حتى تتمكّن
من البحث عن
الأنواع المحدّدة من الأجهزة التي تهمّها فقط. لبدء البحث عن أجهزة بلوتوث
LE، يمكنك الاتصال بـ startScan()
وإرسال قائمة بالفلاتر. في استدعاء الطريقة، يجب عليك أيضًا تقديم
تنفيذ ScanCallback
للإبلاغ عند
تم العثور على إعلان Bluetooth LE.
تحسينات على تقنية NFC
يضيف Android 5.0 هذه التحسينات لإتاحة عرض عدد أكبر من الميزات الاستخدام المرن لتقنية NFC:
- تتوفّر ميزة Android Beam الآن في قائمة المشاركة.
- يمكن لتطبيقك استدعاء شعاع Android على جهاز المستخدم لمشاركة البيانات من خلال
يَتِمُّ الْآنَ الِاتِّصَالْ بِـ
invokeBeam()
. ويؤدي ذلك إلى تجنُّب حاجة المستخدم إلى النقر يدويًا على الجهاز بجانب جهاز آخر مزوّد بتقنية NFC لإكمال عملية نقل البيانات. - يمكنك استخدام طريقة
createTextRecord()
الجديدة لإنشاء سجلّ NDEF يحتوي على بيانات نصية بترميز UTF-8. - إذا كنت تطوّر تطبيقًا للدفع، يمكنك الآن
تسجيل معرّف تطبيق NFC (AID) ديناميكيًا من خلال الاتصال
registerAidsForService()
يمكنك أيضًا استخدامsetPreferredService()
لضبط خدمة محاكاة البطاقات المفضّلة التي يجب استخدامها عندما يكون نشاط معيّن في المقدّمة.
مشروع فولتا
بالإضافة إلى الميزات الجديدة، يؤكد Android 5.0 على التحسينات التي تم إجراؤها على البطارية حياة. استخدام واجهات برمجة التطبيقات والأداة الجديدة لفهم وتحسين فعالية تطبيقك استهلاكنا.
جدولة المهام
يوفّر Android 5.0 JobScheduler
واجهة برمجة تطبيقات تتيح لك تحسين عمر البطارية من خلال تحديد مهام تشغيل النظام
بشكل غير متزامن في وقت لاحق أو في ظل شروط محددة (مثل عند
شحن الجهاز). جدولة الوظيفة مفيدة في حالات مثل:
- يتضمن التطبيق عملاً غير موجه للمستخدمين ويمكنك تأجيله.
- يتضمّن التطبيق الإجراء الذي تفضِّل تنفيذه عند توصيل الوحدة بمصدر طاقة.
- يتضمّن التطبيق مهمة تتطلّب الوصول إلى الشبكة أو الاتصال بشبكة Wi-Fi. الاتصال.
- يحتوي التطبيق على عدد من المهام التي تريد تنفيذها كمجموعة في جدول زمني منتظم.
يتم تضمين وحدة عمل في عنصر JobInfo
.
يحدّد هذا العنصر معايير الجدولة.
استخدِم فئة JobInfo.Builder
لضبط كيفية تنفيذ
المهمة المُجدوَلة. يمكنك جدولة المهمة لتنفيذها ضمن متطلّبات محددة
الشروط، مثل:
- البدء عندما يكون الجهاز قيد الشحن
- البدء عند اتصال الجهاز بشبكة لا تفرض تكلفة استخدام
- بدء التطبيق عندما يكون الجهاز في وضع الخمول
- يجب إنهاء العملية قبل موعد نهائي محدّد أو بأقل تأخير
على سبيل المثال، يمكنك إضافة رمز برمجي مثل هذا لتشغيل مهمتك على شبكة غير محدودة:
Kotlin
val uploadTask: JobInfo = JobInfo.Builder( jobId, serviceComponent /* JobService component */ ).run { setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED) build() } val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler jobScheduler.schedule(uploadTask)
Java
JobInfo uploadTask = new JobInfo.Builder(jobId, serviceComponent /* JobService component */) .setRequiredNetworkCapabilities(JobInfo.NETWORK_TYPE_UNMETERED) .build(); JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(uploadTask);
إذا كانت طاقة الجهاز ثابتة (أي تم توصيله بالكهرباء لمزيد من من دقيقتين ووصل مستوى شحن البطارية إلى المستوى الصحي)، سيشغِّل النظام أي مهمة مجدولة وجاهزة للتشغيل، حتى إذا كانت المهمة الموعد النهائي.
للاطّلاع على مثال على كيفية استخدام واجهة برمجة التطبيقات JobScheduler
،
يُرجى الرجوع إلى نموذج تنفيذ JobSchedulerSample
في هذا الإصدار.
أدوات المطوّرين لمعرفة استخدام البطارية
الأمر dumpsys batterystats
الجديد ينشئ نتائج مثيرة للاهتمام
بيانات إحصائية حول استخدام البطارية على أحد الأجهزة، ويتم تنظيمها حسب رقم تعريف المستخدم الفريد
(المعرّف الفريد) تشمل الإحصاءات ما يلي:
- سجلّ الأحداث المتعلّقة بالبطارية
- الإحصاءات العامة للجهاز
- الاستخدام التقريبي للطاقة لكل UID ومكون النظام
- مللي ثانية لكل حزمة على الأجهزة الجوّالة لكل تطبيق
- الإحصاءات المجمّعة للمعرّف الفريد للنظام
- الإحصاءات المجمّعة للمعرّف الفريد للتطبيق
يمكنك استخدام الخيار --help
للتعرّف على الخيارات المختلفة
تخصيص الإخراج. على سبيل المثال، لطباعة استخدام البطارية
لحزمة تطبيق معينة منذ آخر مرة تم فيها شحن الجهاز، شغِّل هذا
:
$ adb shell dumpsys batterystats --charged <package-name>
يمكنك استخدام صفحة
مؤسِّس البطارية
على مخرج الأمر dumpsys
إنشاء تصور HTML للأحداث المتعلقة بالطاقة من السجلات. هذا النمط
التي تتيح لك فهم أي بطارية وتشخيصها بسهولة
المشكلات ذات الصلة.
استخدام Android في مكان العمل وفي المؤسسات التعليمية
إدارة الحسابات المُدارة
يوفر Android 5.0 وظائف جديدة لتشغيل التطبيقات ضمن بيئة مؤسسية. حاسمة يمكن لمشرف الجهاز بدء عملية توفير المتطلبات اللازمة لإضافة مشاركة مشتركة ولكن منفصلة الملف الشخصي المُدار بالجهاز، إذا كان المستخدم لديه حساب شخصي حالي. تظهر التطبيقات المرتبطة بالملفات الشخصية المُدارة بجانب التطبيقات غير المُدارة في "مشغّل التطبيقات" وشاشة الإشعارات الحديثة والإشعارات للمستخدم.
لبدء عملية الإعداد المُدار، أرسِل
ACTION_PROVISION_MANAGED_PROFILE
في Intent
. إذا كان
الاتصال ناجحًا، يشغِّل النظام ميزة callback
onProfileProvisioningComplete()
.
يمكنك بعد ذلك الاتصال برقم setProfileEnabled()
ل
تفعيل هذا الملف الشخصي المُدار.
ويتم تلقائيًا تفعيل مجموعة فرعية صغيرة فقط من التطبيقات في الملف الشخصي المُدار.
يمكنك تثبيت تطبيقات إضافية في الملف الشخصي المُدار من خلال الاتصال
enableSystemApp()
إذا كنت تطوِّر أحد تطبيقات "مشغّل التطبيقات"، يمكنك استخدام الفئة الجديدة "LauncherApps
" للحصول على قائمة بالأنشطة القابلة للتشغيل.
للمستخدم الحالي وأي ملفات شخصية مُدارة مرتبطة به. يمكن أن يُبرز مشغّل التطبيقات
التطبيقات المُدارة بشكل مرئي من خلال إلحاق شارة عمل بالرمز المخصّص للعرض
. لاسترداد الرمز الذي يحمل شارة، اتصل بالرقم
getUserBadgedIcon()
.
للاطّلاع على كيفية استخدام الوظيفة الجديدة، يُرجى الرجوع إلى BasicManagedProfile
نموذج التنفيذ في هذا الإصدار.
مالك الجهاز
يتيح نظام التشغيل Android 5.0 إمكانية نشر تطبيق "مالك الجهاز". ومالك
الجهاز هو نوع متخصص من
مشرفي الجهاز
الذين لديهم إمكانية إضافية لإنشاء مستخدمين ثانويين وإزالتهم و
ضبط الإعدادات العامة على الجهاز. يمكن لتطبيق مالك الجهاز استخدام methods في فئة DevicePolicyManager
للتحكّم بدقّة في الإعدادات والأمان والتطبيقات على الأجهزة المُدارة.
يمكن أن يكون للجهاز مالك واحد نشط واحد فقط في كل مرة.
لنشر مالك جهاز وتفعيله، عليك نقل بيانات NFC من تطبيق برمجة إلى الجهاز عندما يكون الجهاز في حالة عدم إتاحة الربط . تُرسِل عملية نقل البيانات هذه المعلومات نفسها الواردة في نية التوفير описанة في التوفير المُدار.
تثبيت الشاشة
يقدّم نظام التشغيل Android 5.0 واجهة برمجة تطبيقات جديدة لتثبيت الشاشة تتيح لك بشكل مؤقت منع المستخدمين من مغادرة مهمتك أو مقاطعتهم بالإشعارات. يمكن استخدام هذا الإجراء، على سبيل المثال، إذا كنت تُطوّر تطبيقًا تعليميًا لتلبية متطلبات التقييمات العالية الخطورة على Android، أو تطبيقًا مخصّصًا لغرض واحد أو تطبيق kiosk. بعد أن يفعّل تطبيقك ميزة تثبيت الشاشة، لا يمكن للمستخدمين الاطّلاع على الإشعارات أو الوصول إلى التطبيقات الأخرى أو العودة إلى الشاشة الرئيسية، إلى أن يخرج تطبيقك من الوضع.
هناك طريقتان لتفعيل ميزة تثبيت الشاشة:
- يدويًا: يمكن للمستخدمين تفعيل تثبيت الشاشة في الإعدادات > الأمان > تثبيت الشاشة، واختيار المهام المطلوب تنفيذها تثبيت من خلال لمس رمز الدبوس الأخضر في شاشة الإشعارات الأخيرة.
- برمجيًا: لتفعيل ميزة تثبيت الشاشة
برمجيًا، يمكنك استدعاء
startLockTask()
من تطبيقك. إذا لم يكن التطبيق المُرسِل للطلب مالك الجهاز، سيُطلَب من المستخدم confirm (تأكيد). يمكن لتطبيق مالك الجهاز استدعاء الأسلوبsetLockTaskPackages()
لتفعيل إمكانية تثبيت التطبيقات بدون خطوة تأكيد المستخدم.
عند تفعيل ميزة قفل المهام، يحدث السلوك التالي:
- شريط الحالة فارغ، وإشعارات المستخدم ومعلومات الحالة مخفي.
- يتم إخفاء زرَّي "الصفحة الرئيسية" و"التطبيقات المستخدَمة مؤخرًا".
- ولا يمكن للتطبيقات الأخرى بدء أنشطة جديدة.
- يمكن للتطبيق الحالي بدء أنشطة جديدة، ما دام ذلك لا يؤدي إلى إنشاء مهام جديدة.
- عندما يطلب مالك الجهاز تثبيت الشاشة، يظل المستخدم مقفلًا
في تطبيقك إلى أن يطلب التطبيق
stopLockTask()
. - إذا فعّل تطبيق آخر غير مالك الجهاز ميزة "تثبيت الشاشة" أو فعّلها المستخدم مباشرةً، يمكن للمستخدم الخروج من التطبيق من خلال الضغط مع الاستمرار على زرَّي "الرجوع" و"التطبيقات المستخدَمة مؤخرًا".
إطار الطباعة
عرض ملف PDF كصورة نقطية
يمكنك الآن تحويل صفحات مستندات PDF إلى صور نقطية لطباعتها باستخدام
الفئة الجديدة PdfRenderer
. يجب تحديد
ParcelFileDescriptor
الذي يمكن البحث عنه (أي المحتوى
يمكن الوصول إليه عشوائيًا) والذي يكتب عليه النظام المحتوى القابل للطباعة.
يمكن لتطبيقك الحصول على صفحة لعرضها باستخدام
openPage()
، ثم الاتصال
render()
لتحويل PdfRenderer.Page
المفتوحة إلى صورة نقطية. إِنْتَ
يمكنك أيضًا تعيين معلمات إضافية إذا كنت تريد تحويل جزء فقط من
المستند إلى صورة نقطية (على سبيل المثال، لتنفيذ
عرض مقسّم
لتكبير المستند).
للاطّلاع على مثال حول كيفية استخدام واجهات برمجة التطبيقات الجديدة، يُرجى مراجعة PdfRendererBasic
.
كعينة.
النظام
إحصاءات استخدام التطبيق
يمكنك الآن الوصول إلى سجلّ استخدام التطبيقات على جهاز Android باستخدام
واجهة برمجة التطبيقات الجديدة android.app.usage
. توفّر واجهة برمجة التطبيقات هذه تفاصيل الاستخدام
المعلومات من البيانات التي تم تجاهلها
طريقة getRecentTasks()
.
لاستخدام واجهة برمجة التطبيقات هذه، عليك أولاً الإفصاح عن
إذن "android.permission.PACKAGE_USAGE_STATS"
في ملف البيان.
على المستخدم أيضًا تفعيل إذن الوصول إلى هذا التطبيق من خلال الإعدادات > الأمان > التطبيقات
مع إذن الاستخدام.
يجمع النظام بيانات الاستخدام لكل تطبيق، ويجمّع البيانات على فترات يومية وأسبوعية وشهرية وسنوية. الحد الأقصى للمدة أن النظام يحتفظ بهذه البيانات على النحو التالي:
- البيانات اليومية: 7 أيام
- البيانات الأسبوعية: 4 أسابيع
- البيانات الشهرية: 6 أشهر
- البيانات السنوية: عامان
بالنسبة إلى كل تطبيق، يسجّل النظام البيانات التالية:
- آخر مرة تم فيها استخدام التطبيق
- إجمالي مدة بقاء التطبيق في المقدّمة خلال ذلك الفاصل الزمني (حسب اليوم أو الأسبوع أو الشهر أو السنة)
- تسجيل الطابع الزمني عند نقل مكوّن (يتم تحديده من خلال اسم الحزمة والنشاط) إلى المقدّمة أو الخلفية خلال اليوم
- تسجيل الطابع الزمني عند تغيير إعدادات الجهاز (مثلاً عند تغيير اتجاه الجهاز بسبب التدوير)
الاختبار وإمكانية الوصول
تحسينات على الاختبار وإمكانية الوصول
ويضيف Android 5.0 الدعم التالي للاختبار إمكانية الوصول:
getWindowAnimationFrameStats()
الجديد وgetWindowContentFrameStats()
طرق التقاط إحصاءات الإطارات لرسوم النافذة المتحركة والمحتوى. تتيح لك هذه الطرق كتابة اختبارات الأدوات لتقييم ما إذا كان التطبيق يعرض اللقطات بمعدّل تكرار كافٍ لإعادة التحميل من أجل توفير تجربة سلسة للمستخدم.-
executeShellCommand()
تنفيذ أوامر واجهة الأوامر من اختبار الأدوات. تشير رسالة الأشكال البيانية يشبه تنفيذ الأمر تشغيلadb shell
من مضيف متصلة بالجهاز، مما يتيح لك استخدام الأدوات المستندة إلى واجهة المستخدم، مثلdumpsys
وam
وcontent
وpm
- خدمات تسهيل الاستخدام وأدوات الاختبار التي تستخدم واجهات برمجة التطبيقات المخصّصة لتسهيل الاستخدام
(مثل
UiAutomator
) استرداد معلومات تفصيلية حول خصائص النوافذ في الشاشة التي يمكن للمستخدمين المبصرين التفاعل معها. لاسترداد قائمةAccessibilityWindowInfo
عناصر، عليك طلب العنصر الجديدgetWindows()
. - تتيح لك فئة
AccessibilityNodeInfo.AccessibilityAction
الجديدة تحديد إجراءات عادية أو مخصّصة لتنفيذها علىAccessibilityNodeInfo
. تحلّ فئةAccessibilityNodeInfo.AccessibilityAction
الجديدة محل واجهات برمجة التطبيقات ذات الصلة بالإجراءات والتي كانت متوفّرة سابقًا فيAccessibilityNodeInfo
. - يقدّم نظام التشغيل Android 5.0 إمكانية التحكّم بشكل أدق في عملية تحويل النص إلى كلام في
تطبيقك. تسمح فئة
Voice
الجديدة لتطبيقك باستخدام ملفّات تعريف الأصوات المرتبطة بلغات معيّنة وتقييم الجودة والمهلة والمَعلمات الخاصة بمحرك تحويل النص إلى كلام.
أداة IME
التبديل بسهولة بين لغات الإدخال
واعتبارًا من نظام التشغيل Android 5.0، يمكن للمستخدمين التبديل بسهولة بين
الإدخال الكل
أدوات تحرير الطرق (IME) التي تتيحها المنصة. يؤدي تنفيذ الإجراء المخصّص للتبديل (عادةً ما يكون النقر على رمز الكرة الأرضية على لوحة المفاتيح المتوفّرة على الشاشة) إلى التبديل بين كل تطبيقات IME هذه. يتم تنفيذ هذا التغيير في السلوك من خلال
shouldOfferSwitchingToNextInputMethod()
.
علاوة على ذلك، يتحقق إطار العمل الآن مما إذا كان أداة IME التالية تتضمن
على الإطلاق (وبالتالي، ما إذا كان أداة IME هذه تتيح التبديل إلى
أداة IME بعده). إنّ
لن يستطيع محرر أسلوب الإدخال (IME) الذي يستخدم آلية التبديل التبديل إلى أداة IME بدون وجود واحدة. يتم تنفيذ هذا
التغيير في السلوك باستخدام الأسلوب
switchToNextInputMethod()
.
للاطّلاع على مثال حول كيفية استخدام واجهات برمجة التطبيقات المُحدّثة لتبديل IME، يُرجى الرجوع إلى مقالة تم تعديل نموذج تنفيذ لوحة المفاتيح الإلكترونية في هذا الإصدار. لمزيد من المعلومات حول كيفية تنفيذ التبديل بين أدوات IME، راجع إنشاء أسلوب إدخال:
بيانات البيان
الميزات المطلوبة التي يمكن الإفصاح عنها
القيم التالية متاحة الآن في
<uses-feature>
حتى يتسنى لك التأكد من أن تطبيقك مثبّت فقط على الأجهزة التي
توفير الميزات التي يحتاجها تطبيقك.
FEATURE_AUDIO_OUTPUT
FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING
FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR
FEATURE_CAMERA_CAPABILITY_RAW
FEATURE_CAMERA_LEVEL_FULL
FEATURE_GAMEPAD
FEATURE_LIVE_TV
FEATURE_MANAGED_USERS
FEATURE_LEANBACK
FEATURE_OPENGLES_EXTENSION_PACK
FEATURE_SECURELY_REMOVES_USERS
FEATURE_SENSOR_AMBIENT_TEMPERATURE
FEATURE_SENSOR_HEART_RATE_ECG
FEATURE_SENSOR_RELATIVE_HUMIDITY
FEATURE_VERIFIED_BOOT
FEATURE_WEBVIEW
أذونات المستخدمين
أصبح الإذن التالي متوافقًا الآن مع العنصر
<uses-permission>
لإدراج الأذونات التي يتطلبها تطبيقك للوصول إلى واجهات برمجة تطبيقات معيّنة.
BIND_DREAM_SERVICE
: عند استهداف المستوى 21 أو أعلى من واجهة برمجة التطبيقات، يتطلب إذن الوصول إلى Daydream هذا الإذن لضمان أنّه لا يمكن للنظام إلا الربط به.