واجهات برمجة تطبيقات Android 5.0

مستوى واجهة برمجة التطبيقات: 21

Android 5.0 (LOLLIPOP) ميزات جديدة للمستخدمين ومطوّري التطبيقات. يقدم هذا المستند مقدمة عن أبرز واجهات برمجة التطبيقات الجديدة.

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

لإلقاء نظرة عامة على الميزات الجديدة في المنصة، اطّلِع على Android Lollipop الأماكن المميّزة.

ابدأ التطوير

لبدء إنشاء تطبيقات لنظام Android 5.0، يجب أولاً الحصول حزمة تطوير البرامج (SDK) لنظام التشغيل Android. بعد ذلك، استخدِم SDK Manager. لتنزيل النظام الأساسي لحزمة تطوير البرامج (SDK) لنظام التشغيل Android 5.0 وصور النظام.

تعديل مستوى واجهة برمجة التطبيقات المستهدَف

لتحسين تطبيقك بشكل أفضل على الأجهزة التي تعمل بنظام التشغيل Android 5.0، ضبط targetSdkVersion على "21"، يمكنك تثبيت تطبيقك على جهاز Android الإصدار 5.0 من نظام التشغيل، ثم اختبره، ثم انشر التطبيق المُحدَّث هذا التغيير.

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

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

تغييرات مهمّة في السلوك

إذا سبق لك نشر تطبيق لنظام Android، يُرجى الانتباه إلى أنّ تطبيقك قد يتأثر بالتغييرات في الإصدار Android 5.0.

يُرجى الاطّلاع على تغييرات Android 5.0 للحصول على معلومات كاملة.

واجهة المستخدم

دعم التصميم المتعدد الأبعاد

يدعم Android 5.0 التصميم المتعدد الأبعاد الجديد في Android والأسلوب. يمكنك إنشاء تطبيقات ذات تصميم متعدد الأبعاد تكون ديناميكية بصريًا تحتوي على انتقالات عناصر واجهة المستخدم التي تبدو طبيعية للمستخدمين. يشمل هذا الدعم ما يلي:

  • المظهر المتعدد الأبعاد
  • عرض الظلال
  • تطبيق "RecyclerView" المصغّر
  • رسومات متحركة وتأثيرات تصميم قابلة للرسم
  • تأثيرات الصور المتحركة وتأثيرات انتقال النشاط في التصميم المتعدد الأبعاد
  • صور متحركة لخصائص الملف الشخصي استنادًا إلى حالة الملف الشخصي
  • تطبيقات مصغّرة قابلة للتخصيص لواجهة مستخدم وأشرطة تطبيقات من خلال لوحات ألوان يمكنك التحكّم بها
  • عناصر قابلة للرسم متحركة وغير متحركة استنادًا إلى رسومات متجهات XML

لمعرفة المزيد من المعلومات عن إضافة وظائف التصميم المتعدد الأبعاد إلى تطبيقك، يمكنك الاطّلاع على التصميم المتعدد الأبعاد:

المستندات والأنشطة المتزامنة في شاشة الأحدث

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

لإدراج فاصل منطقي بحيث يتعامل النظام مع نشاطك على أنّه نشاط جديد مهمة، يمكنك استخدام FLAG_ACTIVITY_NEW_DOCUMENT عند وإطلاق النشاط باستخدام startActivity(). ويمكنك أيضًا الحصول على هذا السلوك من خلال ضبط <activity> تصنيف documentLaunchMode للعنصر إلى "intoExisting" أو "always" في بيان التطبيق.

لتجنب تكديس الشاشة الحديثة، يمكنك تعيين الحد الأقصى المهام من تطبيقك والتي يمكن أن تظهر في تلك الشاشة. للقيام بذلك، قم بتعيين <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. الفصل في نموذج المشروع.

الإشعارات

إشعارات شاشة القفل

تتمتع شاشات القفل في الإصدار Android 5.0 بإمكانية مشاركة العرض الإشعارات. يمكن للمستخدمين اختيار ما إذا كانوا يريدون السماح بذلك من خلال الإعدادات عرض محتوى الإشعارات الحساسة على شاشة قفل آمنة.

يمكن لتطبيقك التحكّم في مستوى التفاصيل التي تظهر عندما تكون إشعاراته مفعَّلة. المعروضة على شاشة القفل الآمنة. للتحكّم في مستوى الرؤية، اتصل setVisibility() و حدد إحدى القيم التالية:

  • VISIBILITY_PRIVATE: عرض المعلومات الأساسية، مثل رمز الإشعار، ولكنه يخفي المحتوى الكامل الخاص بالإشعار
  • VISIBILITY_PUBLIC: يعرض المحتوى الكامل الخاص بالإشعار.
  • VISIBILITY_SECRET: لا تعرض أي بيانات، باستثناء رمز الإشعار.

عندما يكون مستوى الرؤية هو VISIBILITY_PRIVATE، يمكنك أيضًا تقديم نسخة مخفية من الإشعار محتوى يخفي تفاصيل شخصية على سبيل المثال، قد يعرض تطبيق SMS إشعار يعرض "لديك 3 رسائل نصية جديدة" ولكن يخفي الرسالة المحتوى والمرسلين. لتقديم هذا الإشعار البديل، عليك أولاً إنشاء تم إرسال إشعار الاستبدال باستخدام Notification.Builder. فعندما إنشاء كائن الإشعار الخاص، وإرفاق إشعار الاستبدال إليه من خلال طريقة setPublicVersion().

البيانات الوصفية للإشعارات

يستخدم Android 5.0 البيانات الوصفية المرتبطة بإشعارات تطبيقك لترتيب الإشعارات بشكل أكثر ذكاءً. لإعداد البيانات الوصفية، اطلب الطرق التالية في Notification.Builder عند إنشاء الإشعار:

  • setCategory(): يخبر هذا الإعداد النظام بكيفية التعامل مع إشعارات التطبيقات عند جهازك في وضع الأولوية (على سبيل المثال، إذا كان الإشعار يمثل مكالمة واردة أو رسالة فورية أو تنبيه).
  • setPriority(): يؤدي إلى وضع علامة على الإشعار بأنّه أكثر أو أقل أهمية من الإشعارات العادية. الإشعارات التي تم ضبط حقل الأولوية لها على PRIORITY_MAX أو تظهر PRIORITY_HIGH في نافذة عائمة صغيرة إذا كان الإشعار أيضًا يصدر صوتًا أو اهتزازًا.
  • addPerson(): يتيح لك هذا الخيار إضافة مستخدم واحد أو أكثر يتعلق بإشعار معيّن. ويمكن أن يستخدم تطبيقك هذه المعلومات لإرسال إشارة إلى النظام بأنّه يجب تجميع البيانات معًا. إشعارات من الأشخاص المحددين، أو ترتيب الإشعارات من هؤلاء الأشخاص على أنها أكثر أهمية.

الرسومات

التوافق مع OpenGL ES 3.1

Android 5.0 يضيف واجهات Java ودعمًا أصليًا لبرنامج OpenGL الإسبانية 3.1. تتضمن الوظائف الأساسية الجديدة المتوفرة في OpenGL ES 3.1 ما يلي:

  • أدوات تظليل الحوسبة
  • فصل عناصر أداة التظليل
  • أوامر الرسم غير المباشرة
  • زخارف متعددة النماذج والاستنسل
  • تحسينات على لغة التظليل
  • إضافات لأوضاع الدمج المتقدّمة وتصحيح الأخطاء
  • التوافق مع الأنظمة القديمة مع الإصدارين 2.0 و3.0 من OpenGL ES

يتم توفير واجهة جافا لبرنامج 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>

الوسائط

واجهة برمجة التطبيقات للكاميرا لتحسين إمكانات الكاميرا

يقدّم 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 أو رسالة وسائط متعددة أو شبكة فوترة مشغّل شبكة الجوّال أو إذا كنت ترغب في إرسال البيانات باستخدام نوع معيّن من بروتوكولات النقل.

لاختيار شبكة والاتصال بها ديناميكيًا من تطبيقك، اتبع الخطوات التالية الخطوات:

  1. إنشاء ConnectivityManager
  2. استخدِم الفئة NetworkRequest.Builder لإنشاء عنصر NetworkRequest وتحديد ميزات الشبكة ونوع وسيلة النقل التي يهتم بها تطبيقك
  3. للبحث عن شبكات مناسبة، يمكنك الاتصال على 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). كائن معاودة الاتصال تلقّي تقرير بنجاح العملية الإعلانية أو إخفاقها.

يقدّم Android 5.0 فئة ScanFilter، لذا يمكن لتطبيقك فحصها للعثور على الأنواع المحددة من الأجهزة التي يهتم بها. لبدء البحث عن بلوتوث أجهزة LE، الاتصال بالرقم startScan() وتمريره في قائمة عوامل التصفية. في استدعاء الطريقة، يجب عليك أيضًا تقديم تنفيذ ScanCallback للإبلاغ عند تم العثور على إعلان Bluetooth LE.

تحسينات NFC

يضيف Android 5.0 هذه التحسينات لإتاحة عرض عدد أكبر من الميزات الاستخدام المرن لتقنية NFC:

  • يتوفر شعاع Android الآن في قائمة مشاركة.
  • يمكن لتطبيقك استدعاء شعاع 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. إذا كانت تم بنجاح، يقوم النظام بتشغيل معاودة الاتصال "onProfileProvisioningComplete()" يمكنك بعد ذلك الاتصال بـ setProfileEnabled() من أجل تفعيل هذا الملف الشخصي المُدار.

ويتم تلقائيًا تفعيل مجموعة فرعية صغيرة فقط من التطبيقات في الملف الشخصي المُدار. يمكنك تثبيت تطبيقات إضافية في الملف الشخصي المُدار من خلال الاتصال enableSystemApp()

إذا كنت تطوِّر أحد تطبيقات "مشغّل التطبيقات"، يمكنك استخدام الفئة الجديدة "LauncherApps" للحصول على قائمة بالأنشطة القابلة للتشغيل. للمستخدم الحالي وأي ملفات شخصية مُدارة مرتبطة به. بإمكان "مشغّل التطبيقات" إجراء ما يلي: التطبيقات المُدارة بارزة من الناحية المرئية من خلال إلحاق شارة عمل بالرمز القابل للرسم. لاسترداد الرمز الذي يحمل الشارة، اتصل getUserBadgedIcon()

للاطّلاع على كيفية استخدام الوظيفة الجديدة، يُرجى الرجوع إلى مقالة نموذج تنفيذ واحد (BasicManagedProfile) في هذا الإصدار

مالك الجهاز

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

لنشر مالك الجهاز وتنشيطه، يجب إجراء عملية نقل بيانات عبر NFC. من تطبيق برمجة إلى الجهاز عندما يكون الجهاز غير متوفر الولاية. يرسل نقل البيانات هذا المعلومات نفسها الواردة في الغرض من توفير المتطلبات اللازمة كما هو موضَّح في إدارة الحسابات المُدارة.

تثبيت الشاشة

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

هناك طريقتان لتنشيط تثبيت الشاشة:

  • يدويًا: يمكن للمستخدمين تفعيل تثبيت الشاشة في الإعدادات > الأمان > تثبيت الشاشة، واختيار المهام المطلوب تنفيذها تثبيت من خلال لمس رمز الدبوس الأخضر في شاشة الإشعارات الأخيرة.
  • آليًا: لتفعيل تثبيت الشاشة الاتصال آليًا بـ startLockTask() من تطبيقك. إذا لم يكن التطبيق الذي قدّم الطلب مالك الجهاز، سيُطلَب من المستخدم للتأكيد. يمكن لتطبيق مالك الجهاز الاتصال 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 الجديدة لتطبيقك بما يلي: استخدام الملفات الصوتية المرتبطة بلغات محددة والجودة ووقت الاستجابة والتقييم والمعلمات الخاصة بمحرك تحويل النص إلى كلام.

محرِّر أسلوب الإدخال

سهولة التبديل بين لغات الإدخال

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

علاوة على ذلك، يتحقق إطار العمل الآن مما إذا كان أداة IME التالية تتضمن على الإطلاق (وبالتالي، ما إذا كان أداة IME هذه تتيح التبديل إلى أداة IME بعده). إنّ لن يستطيع محرر أسلوب الإدخال (IME) الذي يستخدم آلية التبديل التبديل إلى أداة IME بدون وجود واحدة. هذا النمط التغيير في السلوك من قبل switchToNextInputMethod() .

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

بيانات البيان

الميزات المطلوبة التي يمكن الإفصاح عنها

القيم التالية متاحة الآن في <uses-feature> حتى يتسنى لك التأكد من أن تطبيقك مثبّت فقط على الأجهزة التي توفير الميزات التي يحتاجها تطبيقك.

أذونات المستخدمين

الإذن التالي متاح الآن في <uses-permission> لتوضيح الأذونات التي يتطلبها تطبيقك للوصول إلى واجهات برمجة تطبيقات معيّنة.

  • BIND_DREAM_SERVICE: عند استهداف واجهة برمجة التطبيقات من المستوى 21 أو أعلى، هذا الإذن مطلوب من خدمة Daydream، لضمان عدم ارتباطه سوى النظام.