مستوى واجهة برمجة التطبيقات: 14
Android 4.0 (ICE_CREAM_SANDWICH
)
هو إصدار رئيسي للمنصة يضيف مجموعة متنوعة من الميزات الجديدة للمستخدمين ومطوّري التطبيقات. إلى جانب جميع الميزات وواجهات برمجة التطبيقات الجديدة التي تتم مناقشتها أدناه، يُعد Android 4.0 مهمًا
إصدار النظام الأساسي لأنه يوفر مجموعة شاملة من واجهات برمجة التطبيقات ومظاهر الهولووغرافيا من الإصدار Android 3.x
إلى شاشات أصغر. بصفتك مطوّر تطبيقات، أصبح لديك الآن نظام أساسي واحد وإطار عمل موحّد لواجهة برمجة التطبيقات
التي تمكّنك من تطوير تطبيقك ونشره باستخدام حزمة APK واحدة توفر
تجربة مستخدم محسّنة للهواتف المحمولة والأجهزة اللوحية وغيرها، عند تشغيل نفس الإصدار من
نظام التشغيل Android: الإصدار 4.0 (المستوى 14 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث
تتوفّر منصّة Android 4.0 للمطوّرين كأحد المكونات التي يمكن تنزيلها لحزمة تطوير البرامج (SDK) لنظام التشغيل Android. تتضمن المنصة القابلة للتنزيل مكتبة Android وصورة نظام، بالإضافة إلى مجموعة من مظاهر و أخرى. لبدء تطوير التطبيقات أو اختبارها وفقًا للإصدار Android 4.0، عليك استخدِم "مدير حزمة تطوير البرامج (SDK) لنظام التشغيل Android" لتنزيل النظام الأساسي في حزمة تطوير البرامج (SDK) الخاصة بك.
نظرة عامة على واجهة برمجة التطبيقات
تقدم الأقسام أدناه نظرة عامة فنية على واجهات برمجة التطبيقات الجديدة في Android 4.0.
واجهات برمجة التطبيقات لوسائل التواصل الاجتماعي في "مقدّم جهات الاتصال"
تم تعديل واجهات برمجة تطبيقات جهات الاتصال التي حدّدها مقدّم خدمة ContactsContract
لتتيح استخدام ميزات جديدة ذات صلة بالشبكات الاجتماعية، مثل الملف الشخصي الخاص بمالك الجهاز
وإمكانية دعوة جهات اتصال فردية إلى الشبكات الاجتماعية المثبّتة على
الجهاز.
الملف الشخصي للمستخدم
يتضمّن Android الآن ملفًا شخصيًا يمثّل مالك الجهاز، كما هو محدّد في جدول
ContactsContract.Profile
. التطبيقات الاجتماعية التي تحافظ على هوية المستخدم
يمكن أن تساهم في بيانات الملف الشخصي للمستخدم من خلال إنشاء إدخال ContactsContract.RawContacts
جديد داخل ContactsContract.Profile
. وهذا يعني أن جهات الاتصال الأولية التي تمثل مستخدم الجهاز
لا تنتمي إلى جدول جهات الاتصال الأولية التقليدية التي يحددها معرّف الموارد المنتظم (URI) ContactsContract.RawContacts
؛ بدلاً من ذلك، يجب إضافة جهة اتصال أولية للملف الشخصي في
الجدول في CONTENT_RAW_CONTACTS_URI
. بعد ذلك، يتم تجميع بيانات
جهات الاتصال الأوّلية في هذا الجدول في الملف الشخصي الوحيد المرئي للمستخدم والمُصنَّف باسم "أنا".
تتطلّب إضافة جهة اتصال جديدة غير معالجة للملف التجاري إذن android.Manifest.permission#WRITE_PROFILE. وبالمثل، لتتمكن من قراءتها من الملف الشخصي يجب طلب الإذن android.Manifest.permission#READ_PROFILE. ومع ذلك، من المفترض ألا تحتاج معظم التطبيقات إلى قراءة الملف الشخصي للمستخدم، حتى عند المساهمة ببيانات في الملف الشخصي. إنّ قراءة الملف الشخصي للمستخدم هو إذن حسّاس، ومن المفترض أن يكون المستخدمون مشكّكين في التطبيقات التي تطلبه.
نيّة الدعوة
يسمح إجراء الهدف INVITE_CONTACT
لتطبيق ما.
لاستدعاء إجراء يشير إلى أن المستخدم يريد إضافة جهة اتصال إلى إحدى الشبكات الاجتماعية. يستخدم التطبيق الذي تلقّى الدعوة هذا الإذن لدعوة جهة الاتصال المحدّدة إلى تلك الشبكة الاجتماعية. وستكون معظم التطبيقات هي الجهة المستلِمة لهذه العملية. على سبيل المثال، يُنشئ تطبيق "الأشخاص" المضمّن نية الدعوة عندما يختار المستخدم "إضافة ربط" لتطبيق اجتماعي معيّن مُدرَج في تفاصيل الاتصال الخاصة بمستخدم.
لعرض تطبيقك في قائمة "إضافة ربط"، يجب أن يقدّم تطبيقك محوِّل مزامنة لمحاولة
مزامنة معلومات جهات الاتصال من شبكتك الاجتماعية. بعد ذلك، عليك إعلام النظام بأنّ
تطبيقك يستجيب لطلب INVITE_CONTACT
من خلال
إضافة سمة inviteContactActivity
إلى ملف إعدادات المزامنة في تطبيقك، مع
اسم مؤهَّل بالكامل للنشاط الذي يجب أن يبدئه النظام عند إرسال طلب الدعوة.
يمكن للنشاط الذي يبدأ بعد ذلك استرداد عنوان URI لجهة الاتصال المعنية من ملف intent
وتنفيذ الأعمال اللازمة لدعوة جهة الاتصال هذه إلى الشبكة أو إضافة الشخص إلى
اتصالات المستخدم.
الصور الكبيرة
يتيح Android الآن استخدام الصور العالية الدقة لجهات الاتصال. الآن، عند إضافة صورة إلى
سجلّ جهات اتصال، يعالجها النظام لإنشاء صورة مصغّرة بحجم 96×96 (كما كان يفعل في السابق) و"صورة عرض" بحجم 256×256 يتم تخزينها في مساحة تخزين جديدة للصور المستندة إلى الملفات (قد تختلف الأبعاد الدقيقة التي يختارها
النظام في المستقبل). يمكنك إضافة صورة كبيرة إلى جهة اتصال من خلال وضع
صورة في عمود PHOTO
المعتاد من
صف البيانات، والذي سيعالجه النظام بعد ذلك في الصورة المصغّرة المناسبة ويعرض
السجلات.
ملاحظات حول استخدام ميزة "جهات الاتصال"
تتيح لك واجهات برمجة التطبيقات الجديدة في ContactsContract.DataUsageFeedback
المساعدة في تتبُّع عدد المرات التي يستخدم فيها المستخدم طُرقًا معيّنة للتواصل مع الأشخاص، مثل عدد المرات التي يستخدم فيها
كل رقم هاتف أو عنوان بريد إلكتروني. تساعد هذه المعلومات في تحسين ترتيب كل جهة اتصال
مرتبطة بكل شخص وتقديم اقتراحات أفضل للاتصال بكل شخص.
موفِّر التقويم
تسمح لك واجهات برمجة التطبيقات الجديدة للتقويم التي تتيح لك قراءة وإضافة وتعديل وحذف التقاويم والأحداث والحضور التذكيرات والتنبيهات التي يتم تخزينها في "موفّر التقويم".
يمكن لمجموعة متنوعة من التطبيقات والتطبيقات المصغّرة استخدام واجهات برمجة التطبيقات هذه لقراءة أحداث التقويم وتعديلها. ومع ذلك، تُعدّ بعض حالات الاستخدام الأكثر إقناعًا هي محولات المزامنة التي تُزامن تقويم المستخدم من خدمات تقويم أخرى مع مقدّم التقويم، وذلك لتقديم موقع موحّد لجميع أحداث المستخدم. على سبيل المثال، تتم مزامنة أحداث "تقويم Google" مع مقدّم التقويم من خلال محوِّل مزامنة "تقويم Google"، ما يتيح عرض هذه الأحداث باستخدام تطبيق "تقويم Google" المضمّن في Android.
نموذج البيانات للتقاويم والمعلومات المتعلقة بالحدث في "موفِّر التقويم" هو
المحددة بواسطة CalendarContract
. يتم تخزين جميع بيانات التقويم الخاصة بالمستخدم في
عدد من الجداول التي تحدّدها فئات فرعية مختلفة من CalendarContract
:
- يحتوي جدول
CalendarContract.Calendars
على معلومات متعلقة بالتقويم. يحتوي كل صف في هذا الجدول على تفاصيل تقويم واحد، مثل الاسم واللون ومعلومات المزامنة وما إلى ذلك. - يحتوي جدول
CalendarContract.Events
على معلومات خاصة بالحدث. ويحتوي كل صف في هذا الجدول على معلومات عن حدث واحد، مثل عنوان الحدث وموقعه الجغرافي ووقت البدء ووقت الانتهاء وما إلى ذلك يمكن أن يحدث الحدث مرة واحدة أو بشكل متكرّر لمرات متعددة. يتم تخزين المدعوين والتذكيرات والخصائص الموسّعة في جداول منفصلة، ويتم استخدام_ID
للحدث لربطها بالحدث. - يحتوي جدول
CalendarContract.Instances
على وقتَي البدء والانتهاء لمرّات وقوع حدث معيّن. يمثل كل صف في هذا الجدول موضع ورود واحد. بالنسبة إلى الأحداث لمرة واحدة، يتمّ ربط النُسخ بالأحداث بشكلٍ مباشر. بالنسبة إلى الأحداث المتكرّرة، يتم إنشاء صفوف متعددة تلقائيًا لتتوافق مع مرّات تكرار هذا الحدث. - يحتوي جدول
CalendarContract.Attendees
على الحاضر أو الضيف في الحدث. المعلومات. يمثل كل صف ضيفًا واحدًا لأحد الأحداث. ويحدد نوع الضيف الذي الشخص وردة الشخص على الحدث. - يحتوي جدول
CalendarContract.Reminders
على بيانات التنبيهات/الإشعارات. يمثّل كل صف تنبيهًا واحدًا لحدث معيّن. يمكن أن يكون للحدث تذكيرات متعددة. عدد يتم تحديد تذكيرات لكل حدث فيMAX_REMINDERS
، والذي يتم ضبطه من خلال محوّل المزامنة الذي يمتلك التقويم المحدد. يتم تحديد التذكيرات بعدد الدقائق قبل بدء الحدث، وتحديد طريقة التنبيه، مثل استخدام تنبيه أو رسالة إلكترونية أو رسالة قصيرة لتذكير العميل. - يحتوي الجدول
CalendarContract.ExtendedProperties
على حقول بيانات غير شفافة يستخدمه محوّل المزامنة. لا يتخذ الموفّر أي إجراء بشأن العناصر في هذا الجدول باستثناء الحذف عند حذف الأحداث ذات الصلة بها.
للوصول إلى بيانات تقويم أحد المستخدمين من خلال "موفِّر التقويم"، يجب أن يطلب التطبيق
إذن READ_CALENDAR
(للإذن بالقراءة)
WRITE_CALENDAR
(لإمكانية الوصول للكتابة).
نية الحدث
إذا كان كل ما تريد فعله هو إضافة حدث إلى تقويم المستخدم، يمكنك استخدام نية ACTION_INSERT
مع البيانات التي حدّدها Events.CONTENT_URI
لبدء
نشاط في تطبيق "تقويم Google" ينشئ أحداثًا جديدة. لا يتطلّب استخدام النية أي
إذن، ويمكنك تحديد تفاصيل الحدث باستخدام الإضافات التالية:
Events.TITLE
: اسم حدث-
CalendarContract.EXTRA_EVENT_BEGIN_TIME
: وقت بدء الحدث بالملي ثانية من الحقبة CalendarContract.EXTRA_EVENT_END_TIME
: الحدث وقت الانتهاء بالمللي ثانية من الحقبةEvents.EVENT_LOCATION
: الموقع الجغرافي للحدثEvents.DESCRIPTION
: الحدث وصفIntent.EXTRA_EMAIL
: عناوين البريد الإلكتروني للمستخدمين المطلوب دعوتهمEvents.RRULE
: قاعدة تكرار الفعاليةEvents.ACCESS_LEVEL
: ما إذا كان الحدث خاصًا أو عامًاEvents.AVAILABILITY
: ما إذا كانت الفترة الزمنية لهذا الحدث تسمح بجدولة أحداث أخرى في الوقت نفسه
موفِّر البريد الصوتي
يسمح مقدّم خدمة البريد الصوتي الجديد للتطبيقات بإضافة رسائل البريد الصوتي إلى الجهاز، وذلك لعرض جميع رسائل البريد الصوتي للمستخدم في عرض مرئي واحد. على سبيل المثال، من الممكن أن يكون لدى المستخدم مصادر بريد صوتي متعددة، مثل مصدر من مقدّم خدمة الهاتف ومصادر أخرى من خدمة نقل الصوت عبر بروتوكول الإنترنت (VoIP) أو خدمات بديله أخرى للنقل الصوتي. يمكن لهذه التطبيقات استخدام واجهات برمجة التطبيقات لمزوّدي خدمة البريد الصوتي لإضافة رسائل البريد الصوتي إلى الجهاز. تشير رسالة الأشكال البيانية بعد ذلك يقدم تطبيق الهاتف المدمج جميع رسائل البريد الصوتي إلى المستخدم في عرض تقديمي موحد. وعلى الرغم من أن تطبيق الهاتف على النظام هو التطبيق الوحيد الذي يمكنه قراءة جميع رسائل البريد الصوتي، حيث يمكن لكل تطبيق يقدم رسائل البريد الصوتي قراءة التطبيقات التي أضافها إلى النظام (ولكن لا يمكنه قراءة رسائل البريد الصوتي من الخدمات الأخرى).
بما أنّ واجهات برمجة التطبيقات لا تسمح حاليًا للتطبيقات التابعة لجهات خارجية بقراءة جميع الرسائل الصوتية من النظام، فإنّ التطبيقات التابعة لجهات خارجية التي يجب أن تستخدم واجهات برمجة التطبيقات للرسائل الصوتية هي فقط تلك التي تتضمّن رسائل صوتية لإرسالها إلى المستخدم.
تحدّد فئة VoicemailContract
موفّر المحتوى للخدمة
Voicemail Provder. توفّر الفئتان الفرعيتان VoicemailContract.Voicemails
وVoicemailContract.Status
جداول يمكن للتطبيقات فيها
إدراج بيانات البريد الصوتي لتخزينها على الجهاز. للحصول على مثال على تطبيق مقدّم خدمة بريد صوتي، يمكنك الاطّلاع على
العرض التمهيدي لتطبيق مقدّم خدمة بريد صوتي
.
وسائط متعددة
يضيف Android 4.0 العديد من واجهات برمجة التطبيقات الجديدة للتطبيقات التي تتفاعل مع الوسائط مثل الصور ومقاطع الفيديو والموسيقى.
تأثيرات الوسائط
يتيح لك إطار عمل جديد لتأثيرات الوسائط تطبيق مجموعة متنوعة من التأثيرات المرئية على الصور والفيديوهات. على سبيل المثال، تتيح لك تأثيرات الصورة إصلاح العين الحمراء بسهولة، وتحويل الصورة إلى تدرج الرمادي، يمكنك ضبط السطوع وضبط تشبّع اللون وتدوير الصورة وتطبيق تأثير عين السمكة وغير ذلك الكثير. ينفِّذ النظام جميع عمليات معالجة التأثيرات على وحدة معالجة الرسومات للحصول على أفضل أداء.
لتحقيق أفضل أداء، يتم تطبيق التأثيرات مباشرةً على زخارف OpenGL، لذا يجب أن يحتوي تطبيقك على سياق OpenGL صالح قبل أن يتمكّن من استخدام واجهات برمجة التطبيقات الخاصة بالتأثيرات. القوام التي تطبق عليها قد تكون التأثيرات من الصور النقطية أو مقاطع الفيديو أو حتى الكاميرا. ومع ذلك، هناك بعض القيود التي يجب أن تتوافق الزخارف مع:
- يجب أن تكون مرتبطة بملف
GL_TEXTURE_2D
texture image - يجب أن تحتوي على مستوى صور mipmap واحد على الأقل.
يحدِّد عنصر Effect
تأثير وسائط واحدًا يمكنك تطبيقه على
إطار صورة. إليك الخطوات الأساسية لإنشاء Effect
:
- استدعاء
EffectContext.createWithCurrentGlContext()
من سياق OpenGL ES 2.0 - استخدِم القيمة
EffectContext
المعروضة للاتصال بـEffectContext.getFactory()
، ما يؤدي إلى عرض مثيلEffectFactory
. - استخدِم
createEffect()
مع تمرير اسم أثر من @link android.media.effect.EffectFactory}، مثلEFFECT_FISHEYE
أوEFFECT_VIGNETTE
.
يمكنك تعديل مَعلمات أحد التأثيرات من خلال استدعاء setParameter()
وضبط اسم المَعلمة وقيمتها. يقبل كل نوع من التأثيرات
مَعلمات مختلفة يتم توثيقها باسم التأثير. على سبيل المثال، تتضمن الدالة EFFECT_FISHEYE
معلَمة واحدة للسمة scale
تشويه.
لتطبيق تأثير على نسيج، استخدِم apply()
في
Effect
وأدخِل نسيج الإدخال وعرضه وارتفاعه ونسيج المخرج
. يجب ربط نسيج الإدخال بGL_TEXTURE_2D
صورة نسيج (يحدث ذلك عادةً من خلال استدعاء الدالة glTexImage2D()
). يمكنك تقديم مستويات mipmap متعددة. إذا لم يتم ربط زخرفة الإخراج بـ
زخرفة صورة، سيتم ربطها تلقائيًا بالتأثير كـ GL_TEXTURE_2D
ومع مستوى mipmap واحد (0)، والذي سيكون له القيمة نفسها
الحجم كمدخل.
نضمن لك توافق جميع التأثيرات المدرَجة في EffectFactory
.
ومع ذلك، لا تتوافق بعض التأثيرات الإضافية المتوفرة من المكتبات الخارجية مع جميع الأجهزة،
لذا يجب عليك أولاً التحقق مما إذا كان التأثير المطلوب من المكتبة الخارجية مدعومًا من خلال استدعاء،
isEffectSupported()
العميل الذي يستخدم جهاز التحكّم عن بُعد
يسمح RemoteControlClient
الجديد لمشغّلات الوسائط بتفعيل التشغيل.
عناصر التحكم من برامج التحكم عن بعد مثل شاشة قفل الجهاز. يمكن لمشغّلات الوسائط أيضًا عرض
معلومات عن الوسائط التي يتم تشغيلها حاليًا لعرضها على جهاز التحكّم عن بُعد، مثل معلومات
الأغنية وصورة الألبوم.
لتفعيل عملاء التحكّم عن بُعد لمشغّل الوسائط، أنشئ مثيلًا من RemoteControlClient
باستخدام وظيفته المُنشئة، مع تمريرها PendingIntent
يبث ACTION_MEDIA_BUTTON
. يجب أن يُفصح الإجراء أيضًا عن مكوّن BroadcastReceiver
الصريح في تطبيقك الذي يعالج الحدث ACTION_MEDIA_BUTTON
.
لتحديد مدخلات عناصر التحكّم في الوسائط التي يمكن للمشغّل التعامل معها، يجب استدعاء setTransportControlFlags()
في
RemoteControlClient
، مع تمرير مجموعة من علامات FLAG_KEY_MEDIA_*
، مثل
FLAG_KEY_MEDIA_PREVIOUS
وFLAG_KEY_MEDIA_NEXT
.
عليك بعد ذلك تسجيل RemoteControlClient
من خلال تمريره إلى MediaManager.registerRemoteControlClient()
.
بعد التسجيل، سيتلقى مستقبِل البث الذي أعلنت فيه عند إنشاء مثيل لـ RemoteControlClient
ACTION_MEDIA_BUTTON
الأحداث عند الضغط على زر من وحدة التحكم عن بُعد. يتضمّن الطلب الذي تتلقّاه الرمز KeyEvent
لمفتاح الوسائط الذي تم الضغط عليه، ويمكنك استرجاعه من الطلب باستخدام الرمز getParcelableExtra(Intent.EXTRA_KEY_EVENT)
.
لعرض معلومات عن الوسائط قيد التشغيل على جهاز التحكّم عن بُعد، يُرجى الاتصال بـ editMetaData()
وإضافة البيانات الوصفية إلى الجهاز الذي تم إرجاعه
RemoteControlClient.MetadataEditor
يمكنك توفير صورة نقطية لأعمال الوسائط الفنية،
معلومات عددية مثل الوقت المنقضي ومعلومات نصية مثل عنوان المقطع الصوتي. للحصول على
معلومات عن المفاتيح المتاحة، اطّلِع على علامات METADATA_KEY_*
في MediaMetadataRetriever
.
للحصول على نموذج لتنفيذ ذلك، اطّلِع على Random Music Player الذي يقدّم منطق التوافق الذي يتيح تشغيل برنامج التحكّم عن بُعد على أجهزة Android 4.0 مع مواصلة التوافق مع الأجهزة التي تعمل بالإصدار 2.1 من Android.
مشغّل الوسائط
- يتطلب بث الوسائط على الإنترنت من
MediaPlayer
الآن الحصول على إذنINTERNET
. إذا كنت تستخدمMediaPlayer
لتشغيل محتوى من الإنترنت، احرص على إضافة إذنINTERNET
إلى ملف البيان، وإلا لن تعمل ميزة تشغيل الوسائط اعتبارًا من الإصدار Android 4.0. - تتيح لك أداة
setSurface()
تحديدSurface
ليعمل كمصدر فيديو. - يتيح لك
setDataSource()
إرسال عناوين HTTP إضافية مع طلبك، والتي يمكن أن تكون مفيدة للبث المباشر عبر بروتوكول HTTP(S) - أصبح البث المباشر عبر بروتوكول HTTP(S) يتعامل الآن مع ملفات تعريف ارتباط HTTP في جميع الطلبات
أنواع الوسائط
يتيح نظام التشغيل Android 4.0 إمكانية استخدام العناصر التالية:
- الإصدار 3 من بروتوكول البث المباشر عبر HTTP/HTTPS
- ترميز الصوت AAC الأولي لـ ADTS
- صور WEBP
- فيديو Matroska
لمزيد من المعلومات، يُرجى الاطّلاع على تنسيقات الوسائط المتوافقة.
الكاميرا
تشتمل الفئة Camera
الآن على واجهات برمجة تطبيقات لرصد الوجوه والتحكّم فيها.
مجالات التركيز وقياس الأداء.
التعرّف على الوجه
يمكن لتطبيقات الكاميرا الآن تحسين قدراتها باستخدام واجهات برمجة التطبيقات لميزة "التعرّف على الوجوه" في Android، والتي لا التعرّف على وجه الشخص فقط، ولكن أيضًا مع ملامح وجه محددة، مثل العينين والفم.
لرصد الوجوه في تطبيق الكاميرا، عليك تسجيل Camera.FaceDetectionListener
من خلال الاتصال على setFaceDetectionListener()
. يمكنك بعد ذلك بدء
عرض الكاميرا وبدء رصد الوجوه من خلال الاتصال بالرقم startFaceDetection()
.
عندما يرصد النظام وجهًا واحدًا أو أكثر في مشهد الكاميرا، يستدعي معاودة الاتصال عبر onFaceDetection()
في
تنفيذ Camera.FaceDetectionListener
، بما في ذلك مصفوفة من
Camera.Face
عناصر
يوفّر مثيل من فئة Camera.Face
معلومات مختلفة عن
الوجه الذي تم رصده، بما في ذلك:
- تمثّل هذه السمة
Rect
حدودًا للوجه بالنسبة إلى صورة الكاميرا. مجال الرؤية الحالي - عدد صحيح بين 1 و100 يشير إلى مدى ثقة النظام في أن الكائن وجه بشري
- رقم تعريف فريد حتى تتمكّن من تتبُّع الوجوه المتعددة
- عدّة عناصر
Point
تشير إلى مكان العينين والفم
ملاحظة: قد لا تكون ميزة "التعرّف على الوجه" متاحة على بعض
الأجهزة، لذا عليك التحقّق من ذلك من خلال الاتصال بالرقم getMaxNumDetectedFaces()
والتأكّد من أنّ قيمة
القيمة المعروضة أكبر من صفر. قد لا تتيح بعض الأجهزة أيضًا تحديد العينين والفم،
وفي هذه الحالة، ستكون هذه الحقول في عنصر Camera.Face
فارغة.
مناطق التركيز والقياس
يمكن الآن لتطبيقات الكاميرا التحكّم في المناطق التي تستخدِمها الكاميرا للتركيز وقياس تعادل الصعوبة
ودرجة الإضاءة التلقائية. تستخدم كلتا الميزتين فئة Camera.Area
الجديدة لتحديد
منطقة العرض الحالي للكاميرا التي ينبغي التركيز عليها أو قياسها. ويحدِّد مثال الفئة Camera.Area
حدود المنطقة باستخدام Rect
ووزن المنطقة، ويمثّل ذلك مستوى أهمية ذلك.
المساحة، مقارنة بالمناطق الأخرى في الاعتبار - بعدد صحيح.
قبل ضبط إما منطقة التركيز أو منطقة قياس حصة القراءة المجانية، عليك أولاً طلب getMaxNumFocusAreas()
أو getMaxNumMeteringAreas()
، على التوالي. إذا كان الناتج صفرًا،
لا يتيح الجهاز الميزة المقابلة.
لتحديد مناطق التركيز أو القياس التي تريد استخدامها، ما عليك سوى طلب setFocusAreas()
أو setMeteringAreas()
. يأخذ كل منها List
من Camera.Area
من العناصر التي تشير إلى المناطق التي يجب مراعاتها
للتركيز أو قياس درجة الحرارة. على سبيل المثال، يمكنك تنفيذ ميزة تسمح للمستخدم بتحديد
منطقة التركيز من خلال لمس منطقة في المعاينة، ثم ترجمة هذا النص إلى كائن Camera.Area
وطلب تركيز الكاميرا على هذه المنطقة من المشهد
سيتم تعديل التركيز أو الإضاءة في تلك المنطقة باستمرار مع تغيُّر المشهد في المنطقة.
التركيز التلقائي المستمر للصور
يمكنك الآن تفعيل ميزة "التركيز التلقائي المستمر" (CAF) عند التقاط الصور. لتفعيل ميزة CAF في
تطبيق الكاميرا، عليك ضبط القيمة FOCUS_MODE_CONTINUOUS_PICTURE
على setFocusMode()
. عندما تكون مستعدًا للالتقاط
صورة، الاتصال برقم autoFocus()
. يتلقّى جهاز Camera.AutoFocusCallback
مكالمة فورية للإشارة إلى ما إذا تم تحقيق
التركيز. لاستئناف عملية CAF بعد تلقّي مكالمة المعاودة، يجب الاتصال بالرقم cancelAutoFocus()
.
ملاحظة: تتوفّر أيضًا ميزة التركيز التلقائي المستمر عند التقاط
فيديو باستخدام FOCUS_MODE_CONTINUOUS_VIDEO
، والتي تمت إضافتها
في المستوى 9 من واجهة برمجة التطبيقات.
ميزات الكاميرا الأخرى
- أثناء تسجيل الفيديو، يمكنك الآن الاتصال بـ
takePicture()
لحفظ صورة بدون مقاطعة جلسة الفيديو. قبل إجراء ذلك، عليك الاتصال برقمisVideoSnapshotSupported()
للتأكّد من أنّ الجهاز يتوافق مع هذه الميزة. - يمكنك الآن قفل التعرض التلقائي للضوء وموازنة اللون الأبيض باستخدام
setAutoExposureLock()
وsetAutoWhiteBalanceLock()
لمنع حدوث ذلك. هذه الخصائص من التغيير. - يمكنك الآن الاتصال برقم
setDisplayOrientation()
أثناء تشغيل ميزة "معاينة الكاميرا". في السابق، كان بإمكانك تسمية هذا قبل بدء المعاينة فقط، ولكن يمكنك الآن تغيير الاتجاه في أي وقت.
أهداف بث الكاميرا
Camera.ACTION_NEW_PICTURE
: يشير ذلك إلى أنّ المستخدم التقط صورة جديدة. يستدعي تطبيق "الكاميرا" المدمج هذه بث المحتوى بعد التقاط صورة، ويجب أن تبثّ تطبيقات الكاميرا التابعة لجهات خارجية هذا الهدف أيضًا بعد التقاط صورة.Camera.ACTION_NEW_VIDEO
: يشير ذلك إلى أنّ المستخدم قد سجّل فيديو جديدًا. يستدعي تطبيق "الكاميرا" المدمج هذه بثه بعد تسجيل الفيديو ويجب أن تبثّ تطبيقات الكاميرا التابعة لجهات خارجية هذا الهدف أيضًا بعد التقاط فيديو.
شعاع Android (NDEF Push باستخدام NFC)
ميزة شعاع Android هي ميزة جديدة في NFC تتيح لك إرسال رسائل NDEF من جهاز إلى أخرى (عملية تعرف أيضًا باسم "NDEF Push"). تبدأ عملية نقل البيانات عندما يكون جهازان يعملان بنظام التشغيل Android ومتوافقان مع تقنية Android Beam قريبَين من بعضهما (بمسافة 4 سم تقريبًا)، ويكون عادةً ظهرهما ملاصقًا. يمكن أن تحتوي البيانات داخل رسالة NDEF على أي بيانات ترغب في مشاركتها بين الأجهزة. على سبيل المثال، يشارك تطبيق "الأشخاص" جهات الاتصال، ويشارك YouTube الفيديوهات، ويشارك المتصفّح عناوين URL باستخدام تقنية Android Beam.
لنقل البيانات بين الأجهزة باستخدام تقنية Android Beam، عليك إنشاء NdefMessage
يحتوي على المعلومات التي تريد مشاركتها عندما يكون نشاطك في
المقدّمة. عليك حينئذٍ تمرير NdefMessage
إلى النظام في واحد من اثنين
الطرق:
- حدِّد رمزًا واحدًا
NdefMessage
للدفع أثناء النشاط:يمكنك الاتصال بالرقم
setNdefPushMessage()
في أي وقت لضبط الرسالة التي تريد إرسالها. على سبيل المثال، يمكنك استدعاء هذه الطريقة ونقْلNdefMessage
إليها أثناء طريقةonCreate()
لنشاطك. ومن ثم، عندما يتم تفعيل شعاع Android مع جهاز آخر أثناء وجود النشاط في المقدّمة، يرسل النظامNdefMessage
إلى الجهاز الآخر. - ويمكنك تحديد قيمة
NdefMessage
التي سيتم إرسالها عند بدء "شعاع Android":تنفيذ
NfcAdapter.CreateNdefMessageCallback
، حيث يتم تنفيذcreateNdefMessage()
تُرجع الطريقةNdefMessage
الذي تريد إرساله. بعد ذلك، عليك تمرير تنفيذNfcAdapter.CreateNdefMessageCallback
إلىsetNdefPushMessageCallback()
.في هذه الحالة، عندما يتم تفعيل ميزة Android Beam مع جهاز آخر أثناء تنفيذ نشاطك في المقدّمة، يتصل النظام بتطبيق
createNdefMessage()
لاستردادNdefMessage
الذي تريد إرساله. ويسمح لك ذلك بتحديدNdefMessage
الذي سيتم إرساله فقط عند بدء شعاع Android، في حال وجود المحتوى الرسالة طوال عمر النشاط.
في حال أردت تشغيل رمز معيّن بعد أن يرسل النظام رمز NDEF بنجاح
إلى الجهاز الآخر، يمكنك تنفيذ NfcAdapter.OnNdefPushCompleteCallback
وضبطها من خلال setNdefPushCompleteCallback()
. سيجري النظام
ثم الاتصال بالرقم onNdefPushComplete()
عند تسليم الرسالة.
على جهاز الاستقبال، يرسل النظام رسائل NDEF Push بطريقة مماثلة لتلك التي يتم إرسالها عبر تقنية NFC العادية.
. يستدعي النظام هدفًا باستخدام ACTION_NDEF_DISCOVERED
إجراء لبدء نشاط، إمّا بعنوان URL أو من نوع MIME تم ضبطه وفقًا لأول NdefRecord
في NdefMessage
بالنسبة إلى النشاط الذي تريد
الردّ عليه، يمكنك الإفصاح عن فلاتر الأهداف لعناوين URL أو أنواع MIME التي تهمّ تطبيقك. لمزيد من المعلومات،
معلومات حول Tag Dispatch، راجع دليل مطوّري برامج NFC.
إذا كنت تريد أن يحمل NdefMessage
معرّفًا مميّزًا على الإنترنت، يمكنك الآن استخدام الأسلوب المفيد
createUri
لإنشاء NdefRecord
جديد استنادًا إلى سلسلة أو عنصر Uri
. إذا كان عنوان URI هو
تنسيقًا خاصًا تريد أن يحصل عليه تطبيقك أيضًا أثناء حدث شعاع Android،
فلتر أهداف لنشاطك باستخدام نظام URI نفسه لتلقي
رسالة NDEF واردة.
يجب أيضًا تمرير "سجلّ تطبيق Android" مع NdefMessage
لضمان معالجة تطبيقك لرسالة NDEF الواردة، حتى إذا كانت التطبيقات الأخرى تُفلتر بحثًا عن إجراء النية نفسه. يمكنك إنشاء سجلّ لتطبيق Android من خلال
استدعاء createApplicationRecord()
وإرسال اسم حزمة تطبيقك إليه. عندما يتلقّى الجهاز الآخر رسالة NDEF التي تتضمّن
سجلّ التطبيق وتحتوي تطبيقات متعدّدة على أنشطة تعالج النية المحدّدة،
يرسل النظام الرسالة دائمًا إلى النشاط في تطبيقك (استنادًا إلى سجلّ التطبيق المطابق). إذا لم يكن تطبيقك مثبّتًا حاليًا على الجهاز المستهدَف، يستخدم
النظام سجلّ تطبيق Android لتشغيل Google Play وتوجيه المستخدم إلى
التطبيق لتثبيته.
إذا كان تطبيقك لا يستخدم واجهات برمجة التطبيقات NFC لإرسال رسائل NDEF Push، سيوفّر Android في هذه الحالة السلوك التلقائي: عندما يكون تطبيقك في المقدّمة على أحد الأجهزة وتكون ميزة شعاع Android باستخدام جهاز آخر يعمل بنظام التشغيل Android، فسيتلقّى الجهاز الآخر رسالة NDEF سجلّ تطبيق Android الذي يحدّد تطبيقك إذا كان التطبيق مثبّتًا على الجهاز المستلِم، سيشغّله النظام. وإذا لم يكن مثبّتًا، سيفتح Google Play وينقل العميل إلى تطبيقك لتثبيته.
يمكنك الاطّلاع على مزيد من المعلومات حول ميزة "شعاع Android" وميزات NFC الأخرى في دليل المطوّر أساسيات NFC. للاطّلاع على بعض الأمثلة على الرموز البرمجية باستخدام ميزة Android Beam، يمكنك الاطّلاع على الإصدار التجريبي من Android Beam.
اتصال بين أجهزة Wi-Fi
يتيح نظام التشغيل Android الآن عمليات الربط بين الأجهزة باستخدام شبكة Wi-Fi (الند للند) بين أجهزة Android وأنواع الأجهزة الأخرى (بما يتوافق مع برنامج اعتماد Wi-Fi Direct™ الذي ينظّمه تحالف Wi-Fi) بدون نقطة اتصال أو اتصال بالإنترنت. يوفّر إطار عمل Android مجموعة من واجهات برمجة التطبيقات لتقنية Wi-Fi P2P تتيح لك اكتشاف الأجهزة الأخرى والاتصال بها عندما يكون كل جهاز متوافقًا مع تقنية Wi-Fi P2P، ثم التواصل عبر اتصال سريع على مسافات أطول بكثير من اتصالات البلوتوث.
تحتوي الحزمة الجديدة android.net.wifi.p2p
على جميع واجهات برمجة التطبيقات لإجراء اتصالات بين الأجهزة المتكافئة
باستخدام شبكة Wi-Fi. الصف الأساسي الذي عليك العمل معه هو WifiP2pManager
، ويمكنك الحصول عليه من خلال الاتصال بـ getSystemService(WIFI_P2P_SERVICE)
. يتضمّن WifiP2pManager
واجهات برمجة تطبيقات تتيح لك إجراء ما يلي:
- يمكنك إعداد تطبيقك للاتصالات من مستخدم إلى آخر من خلال الاتصال على
initialize()
. - التعرّف على الأجهزة المجاورة من خلال الاتصال بالرقم
discoverPeers()
- يمكنك بدء اتصال P2P من خلال الاتصال برقم
connect()
. - والمزيد
هناك العديد من الواجهات والفئات الأخرى اللازمة أيضًا، مثل:
- تتيح لك واجهة
WifiP2pManager.ActionListener
تلقّي callbacks عند نجاح أو تعذُّر عملية مثل اكتشاف الأجهزة المشابهة أو الاتصال بها. - تتيح لك واجهة
WifiP2pManager.PeerListListener
تلقّي معلومات عن الأجهزة المتجاورة التي تم رصدها. توفّر معاودة الاتصالWifiP2pDeviceList
، يمكنك من خلاله استرداد كائنWifiP2pDevice
لكل جهاز ضمن النطاق والحصول على معلومات مثل اسم الجهاز وعنوانه ونوع الجهاز وإعدادات WPS التي يتوافق معها الجهاز وغير ذلك - تتيح لك واجهة
WifiP2pManager.GroupInfoListener
ما يلي: تلقي معلومات حول مجموعة P2P. توفر عملية الاسترداد كائنWifiP2pGroup
، يوفر معلومات عن المجموعة مثل المالك واسم الشبكة وعبارة المرور. - تتيح لك واجهة
WifiP2pManager.ConnectionInfoListener
تلقي معلومات حول الاتصال الحالي. توفّر عملية معاودة الاتصال كائنWifiP2pInfo
، يحتوي على معلومات مثل ما إذا كانت المجموعة قد تم الفريق ومن هو مالك المجموعة.
لاستخدام واجهات برمجة التطبيقات لشبكة Wi-Fi P2P، يجب أن يطلب تطبيقك أذونات المستخدمين التالية:
ACCESS_WIFI_STATE
CHANGE_WIFI_STATE
INTERNET
(على الرغم من أنّ تطبيقك لا يرتبط من الناحية الفنية بالإنترنت، فإن الاتصال بأقران Wi-Fi P2P باستخدام مقابس جافا القياسية يتطلب الإنترنت إذن).
يبث نظام Android أيضًا العديد من الإجراءات المختلفة أثناء أحداث معيّنة من شبكة Wi-Fi P2P:
WIFI_P2P_CONNECTION_CHANGED_ACTION
: تغيّرت حالة اتصال P2P . ينقل هذا المسارEXTRA_WIFI_P2P_INFO
مع كائنWifiP2pInfo
وEXTRA_NETWORK_INFO
معNetworkInfo
. الخاص بك.WIFI_P2P_STATE_CHANGED_ACTION
: تم تغيير حالة الدفع من جهاز إلى جهاز بين مفعّل وغير مفعّل. أن يتضمّنEXTRA_WIFI_STATE
معWIFI_P2P_STATE_DISABLED
أوWIFI_P2P_STATE_ENABLED
WIFI_P2P_PEERS_CHANGED_ACTION
: قائمة التطبيقات المشابهة الأجهزة التي تغيرت.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION
: تغيّرت تفاصيل هذا الجهاز.
اطّلِع على مستندات "WifiP2pManager
" للحصول على مزيد من المعلومات. كذلك
على
العرض التوضيحي لـ Wi-Fi P2P
نموذج تطبيق.
أجهزة الصحة التي تتضمّن بلوتوث
يتيح نظام التشغيل Android الآن استخدام أجهزة "ملف الإعدادات الصحية" عبر البلوتوث، ما يتيح لك إنشاء تطبيقات تستخدم تقنية البلوتوث للتواصل مع الأجهزة الصحية المزوّدة بهذه التقنية، مثل أجهزة مراقبة معدل ضربات القلب، ومقاييس ضغط الدم، وأجهزة قياس الحرارة، والمقاييس.
على غرار سماعات الرأس العادية وأجهزة الملف الشخصي A2DP، يجب الاتصال بـ getProfileProxy()
باستخدام BluetoothProfile.ServiceListener
ونوع الملف الشخصي HEALTH
لإنشاء اتصال بالملف الشخصي.
خادم وكيل.
بعد الحصول على الوكيل الخاص بملف السجلّ الصحي (كائن BluetoothHealth
)، يتضمن الاتصال بالأجهزة الصحية المقترنة والتواصل معها فئات ملف السجلّ الصحي الجديدة التالية:
BluetoothHealthCallback
: يجب توسيع نطاق هذه الفئة وتنفيذ methods methods لتلقّي آخر المعلومات عن التغييرات في حالة تسجيل التطبيق وحالة قناة Bluetooth.BluetoothHealthAppConfiguration
: أثناء عمليات معاودة الاتصال علىBluetoothHealthCallback
، سيظهر لك نسخة من هذا الكائن، وهي نسخة مطابقة له. لتوفير معلومات الإعداد حول جهاز السلامة عبر البلوتوث المتاح، والذي يجب استخدامه لإجراء عمليات مختلفة مثل بدء الاتصالات وإنهائها باستخدام واجهات برمجة تطبيقاتBluetoothHealth
.
لمزيد من المعلومات حول استخدام "ملف الصحة في البلوتوث"، يُرجى الاطّلاع على مستندات BluetoothHealth
.
تسهيل الاستخدام
يُحسِّن نظام التشغيل Android 4.0 من إمكانية استخدام المستخدمين الذين يعانون من ضعف البصر من خلال توفير وضع استكشاف باللمس جديد وواجهات برمجة تطبيقات موسّعة تتيح لك تقديم مزيد من المعلومات حول عرض المحتوى أو تطوير خدمات متقدمة لإمكانية الاستخدام.
وضع الاستكشاف باللمس
يمكن للمستخدمين الذين يعانون من فقدان البصر الآن استكشاف الشاشة من خلال لمس الشاشة وسحب إصبع على سطحها
للاستماع إلى أوصاف صوتية للمحتوى. نظرًا لأن وضع الاستكشاف باللمس يعمل كـ
المؤشر الافتراضي، فإنه يسمح لقارئات الشاشة بتحديد النص الوصفي بنفس طريقة
يمكن للقراء الوصول إليها عندما يتنقل المستخدم باستخدام لوحة التحكم أو كرة التتبع - من خلال قراءة المعلومات المتوفرة
بواسطة "android:contentDescription
" و"setContentDescription()
" بعد إجراء محاكاة "التمرير" فعالية. لذلك،
نريد تذكيرك بضرورة تقديم نص وصفي للعروض في
تطبيقك، خاصةً ImageButton
وEditText
ImageView
وغيرها من التطبيقات المصغّرة التي قد لا تحتوي بشكلٍ طبيعي على
نص وصفي.
إمكانية الوصول إلى طرق العرض
لتحسين المعلومات المتاحة لخدمات إمكانية الوصول مثل برامج قراءة الشاشة، يمكنك
تنفيذ طرق معاودة الاتصال الجديدة لأحداث تسهيل الاستخدام في مكوّنات View
المخصّصة
تجدر الإشارة أولاً إلى أنّ سلوك طريقة sendAccessibilityEvent()
قد تغيّر في Android.
4.0. كما هو الحال مع الإصدار السابق من Android، عندما يفعّل المستخدم خدمات إمكانية الوصول على الجهاز
وحدث إدخال مثل النقر أو التمرير، فسيتم إرسال إشعار إلى العرض ذي الصلة
sendAccessibilityEvent()
في السابق، كان يؤدي
تنفيذ sendAccessibilityEvent()
إلى بدء AccessibilityEvent
وإرساله إلى AccessibilityManager
. يتضمّن السلوك الجديد بعض طرق callback
الإضافية التي تسمح للعرض وعناصره الرئيسية بإضافة المزيد من المعلومات السياقية إلى الحدث:
- عند الاستدعاء، تُحيل الطريقتان
sendAccessibilityEvent()
وsendAccessibilityEventUnchecked()
إلىonInitializeAccessibilityEvent()
.قد تحتاج عمليات التنفيذ المخصّصة لعنصر
View
إلى تنفيذonInitializeAccessibilityEvent()
لشدّ معلومات إضافية حول تسهيل الاستخدام إلىAccessibilityEvent
، ولكن يجب أيضًا استدعاء التنفيذ الفائق لتوفير معلومات تلقائية، مثل وصف المحتوى العادي وقائمة العناصر وغير ذلك. ومع ذلك، يجب عدم إضافة محتوى نصي إضافي في هذه الدالة، وسيتم ذلك بعد ذلك. - بعد الإعداد، إذا كان الحدث من بين أنواع متعددة يجب تعبئتها بمعلومات
نصية، تتلقّى طريقة العرض بعد ذلك طلبًا للاتصال بـ
dispatchPopulateAccessibilityEvent()
، الذي يحيل إلىonPopulateAccessibilityEvent()
دالة الاستدعاء.عادةً ما تؤدي عمليات التنفيذ المخصّصة لـ
View
إلى تنفيذonPopulateAccessibilityEvent()
لإضافة المزيد إرسال محتوى نصي إلىAccessibilityEvent
إذا كان نصandroid:contentDescription
ناقصًا أو غير كافية. لإضافة المزيد من الوصف النصي إلىAccessibilityEvent
، يُرجى الاتصال برقمgetText()
.add()
. - في هذه المرحلة، يُرسِل
View
الحدث إلى أعلى التسلسل الهرمي للعرض من خلال استدعاءrequestSendAccessibilityEvent()
في العرض الرئيسي. وتتاح لكل طريقة عرض رئيسية فرصة تعزيز معلومات إمكانية الوصول من خلال إضافةAccessibilityRecord
، حتى يصل في النهاية إلى العرض الجذر، الذي يرسل الحدث إلىAccessibilityManager
معsendAccessibilityEvent()
.
بالإضافة إلى الطرق الجديدة أعلاه، التي تكون مفيدة عند تمديد الفئة View
، يمكنك أيضًا اعتراض عمليات استدعاء الحدث على أي View
من خلال تمديد AccessibilityDelegate
وضبطه على العرض باستخدام
setAccessibilityDelegate()
عند إجراء ذلك، تعمل كل طريقة إمكانية وصول في طريقة العرض على تأجيل الاستدعاء إلى الطريقة المقابلة في
للمفوض. على سبيل المثال، عندما تتلقّى طريقة العرض استدعاء onPopulateAccessibilityEvent()
، يتم تمريره إلى
بالطريقة نفسها في View.AccessibilityDelegate
. أي طرق لم يتم التعامل معها من خلال
يُعاد المفوَّض إلى العرض للتعرّف على السلوك التلقائي. ويتيح لك ذلك تجاوز
الطرق اللازمة لأي طريقة عرض محددة بدون تمديد الفئة View
.
إذا أردت الحفاظ على التوافق مع إصدارات Android التي تسبق 4.0، مع دعم أيضًا في واجهات برمجة التطبيقات الجديدة المخصّصة لتسهيل الاستخدام، يمكنك إجراء ذلك باستخدام أحدث إصدار من الإصدار 4 من library (في الحزمة المتوافقة، r4) باستخدام مجموعة من فئات الأدوات التي توفّر واجهات برمجة التطبيقات الجديدة لتسهيل الاستخدام في واجهة برمجة تطبيقات التصميم.
خدمات إمكانية الدخول
إذا كنت بصدد تطوير خدمة تسهيل الاستخدام، تم توسيع نطاق المعلومات حول أحداث تسهيل الاستخدام المختلفة بشكل كبير لإتاحة ملاحظات أكثر تقدمًا حول تسهيل الاستخدام للمستخدمين. ويُرجى العلم أنّه على وجه الخصوص، يتم إنشاء الأحداث استنادًا إلى تركيبة العرض، ما يقدّم معلومات أفضل عن السياق ويسمح لخدمات تسهيل الاستخدام بالتنقّل في التسلسلات الهرميّة للعرض للحصول على معلومات إضافية عن العرض و التعامل مع الحالات الخاصة.
إذا كنت تُطوّر خدمة تسهيل الاستخدام (مثل قارئ شاشة)، يمكنك الوصول إلى معلومات إضافية عن المحتوى والتنقّل في التسلسلات الهرميّة للعرض باتّباع الإجراء التالي:
- عند تلقّي
AccessibilityEvent
من أحد التطبيقات، يمكنك استدعاءAccessibilityEvent.getRecord()
لاستردادAccessibilityRecord
محدد (قد يكون هناك العديد من السجلات الملحقة بـ حدث). - من
AccessibilityEvent
أوAccessibilityRecord
فردي، يمكنك الاتصال بـgetSource()
لاسترداد عنصرAccessibilityNodeInfo
.تمثّل
AccessibilityNodeInfo
عقدة واحدة لمحتوى النافذة بتنسيق يسمح لك بطلب معلومات حول تسهيل الاستخدام العقدة. يصف عنصرAccessibilityNodeInfo
الذي يتم إرجاعه منAccessibilityEvent
مصدر الحدث، في حين يصف المصدر منAccessibilityRecord
السلف لمصدر الحدث. - باستخدام
AccessibilityNodeInfo
، يمكنك طلب معلومات عنها، أو استدعاءgetParent()
أوgetChild()
للتنقّل في التسلسل الهرمي للعرض، وحتى إضافة طرق عرض فرعية إلى العقدة.
لكي ينشر تطبيقك نفسه للنظام كخدمة تسهيل الاستخدام، عليه
الإفصاح عن ملف إعدادات XML يتوافق مع AccessibilityServiceInfo
. لمزيد من المعلومات حول إنشاء
لتسهيل الاستخدام، يمكنك الاطّلاع على AccessibilityService
وSERVICE_META_DATA
للحصول على معلومات حول إعدادات XML.
واجهات برمجة التطبيقات الأخرى المخصصة لتسهيل الاستخدام
إذا كنت مهتمًا بحالة تسهيل الاستخدام في الجهاز، يتضمّن AccessibilityManager
بعض واجهات برمجة التطبيقات الجديدة، مثل:
AccessibilityManager.AccessibilityStateChangeListener
هي واجهة تتيح لك تلقّي مكالمة تلقائية عند تفعيل ميزة تسهيل الاستخدام أو إيقافها.- يوفّر
getEnabledAccessibilityServiceList()
معلومات عن خدمات تسهيل الاستخدام التي تم تفعيلها حاليًا. - يقول
isTouchExplorationEnabled()
: ما إذا كان وضع الاستكشاف باللمس مُفعَّلاً أم لا.
خدمات المدقّق الإملائي
يتيح إطار عمل جديد للمدقق الإملائي للتطبيقات إنشاء المدقق الإملائي بطريقة تشبه
إطار عمل أسلوب الإدخال (لأدوات IME). لإنشاء مدقّق إملائي جديد، يجب تنفيذ خدمة تمتد من فئة SpellCheckerService
وتمتد من فئة SpellCheckerService.Session
لتقديم اقتراحات إملائية استنادًا إلى النص المقدَّم من خلال طرق الاستدعاء في الواجهة. في طرق معاودة الاتصال SpellCheckerService.Session
، يجب إرجاع
الاقتراحات الإملائية كعناصر SuggestionsInfo
يجب أن تُفصح التطبيقات التي تتضمّن خدمة تدقيق إملائي عن إذن BIND_TEXT_SERVICE
على النحو المطلوب من الخدمة.
يجب أن تحدِّد الخدمة أيضًا فلتر أهداف باستخدام <action
android:name="android.service.textservice.SpellCheckerService" />
كإجراء الهدف، ويجب أن تشمل
عنصر <meta-data>
يحدِّد معلومات الضبط لمدقِّق
الإملاء.
مشاهدة نموذج تطبيق المدقق الإملائي النموذج تطبيق برنامج المدقق الإملائي كمثال للرمز.
محركات تحويل النص إلى كلام
تم تطوير واجهات برمجة التطبيقات لتحويل النص إلى كلام (TTS) في Android بشكل كبير بما يسمح للتطبيقات تنفيذ محركات تحويل النص إلى كلام المخصصة بسهولة أكبر، في حين أن التطبيقات التي تريد استخدام محرك تحويل النص إلى كلام يكون لها اثنين من واجهات برمجة التطبيقات الجديدة لاختيار محرك.
استخدام محركات تحويل النص إلى كلام
في الإصدارات السابقة من Android، كان بإمكانك استخدام فئة TextToSpeech
لتنفيذ عمليات تحويل النص إلى كلام باستخدام محرّك تحويل النص إلى كلام الذي يوفّره النظام أو ضبط
محرّك مخصّص باستخدام setEngineByPackageName()
. في الإصدار 4.0 من Android، تم
إيقاف طريقة setEngineByPackageName()
نهائيًا ويمكنك الآن تحديد المحرّك المطلوب استخدامه من خلال مُنشئ TextToSpeech
جديد يقبل اسم حزمة محرّك تحويل النص إلى كلام.
يمكنك أيضًا الاستعلام عن محركات تحويل النص إلى كلام المتاحة من خلال getEngines()
. تعرض هذه الطريقة قائمة بكائنات TextToSpeech.EngineInfo
، التي تتضمّن بيانات وصفية مثل
والأيقونة والتسمية واسم الحزمة.
إنشاء محركات لتحويل النص إلى كلام
في السابق، كانت المحركات المخصّصة تتطلّب إنشاء المحرّك باستخدام ملف header معدّل بدون مستندات. يتوفر في Android 4.0 مجموعة كاملة من واجهات برمجة التطبيقات لإطار العمل لإنشاء محركات تحويل النص إلى كلام.
يتطلب الإعداد الأساسي تنفيذ TextToSpeechService
بحيث
يستجيب لهدف INTENT_ACTION_TTS_SERVICE
. تشير رسالة الأشكال البيانية
يحدث العمل الأساسي لمحرك تحويل النص إلى كلام أثناء معاودة الاتصال بـ onSynthesizeText()
في إحدى الخدمات
التي تمتد إلى TextToSpeechService
. يقدّم النظام لهذه الطريقة سمتَين:
SynthesisRequest
: يحتوي هذا القسم على بيانات مختلفة، بما في ذلك النص الذي سيتم تحويله إلى كلام، واللغة، وسرعة الكلام، ودرجة الصوت.SynthesisCallback
: هذه هي الواجهة التي من خلالها محرك تحويل النص إلى كلام (TTS) يرسل البيانات الكلامية الناتجة كبث صوت. يجب أن يستدعي المحرّك أولاًstart()
للإشارة إلى أنّ المحرّك جاهز للتسليم الصوت، ثم الاتصال بـaudioAvailable()
، وتمريرها البيانات الصوتية في مخزن بايت. بعد أن يُرسل المحرّك كل المحتوى الصوتي من خلال المخزّن المؤقت، اتصل بالرقمdone()
.
والآن بعد أن أصبح إطار العمل يتيح استخدام واجهة برمجة تطبيقات فعلية لإنشاء محركات تحويل النص إلى كلام، أصبح التوافق مع التعليمات البرمجية الأصلية تمت إزالة تنفيذه. ابحث عن مشاركة مدوّنة عن طبقة التوافق التي يمكنك استخدامها لتحويل محرّكات تحويل النص إلى كلام القديمة إلى إطار العمل الجديد.
للحصول على مثال على محرك تحويل النص إلى كلام يستخدم واجهات برمجة التطبيقات الجديدة، اطّلِع على نموذج تطبيق Text To Speech Engine.
إحصاءات استخدام الشبكة
يمنح الإصدار 4.0 من نظام التشغيل Android المستخدمين إمكانية الاطّلاع بدقة على مقدار بيانات الشبكة التي تستخدمها تطبيقاتهم. يوفر تطبيق "الإعدادات" عناصر تحكم تسمح للمستخدمين بإدارة الحدود القصوى لاستخدام بيانات الشبكة. إيقاف استخدام بيانات الخلفية لتطبيقات فردية. لتجنب تعطيل المستخدمين وصول التطبيق إلى البيانات من الخلفية، ينبغي لك وضع استراتيجيات لاستخدام البيانات الاتصال بكفاءة وتعديل الاستخدام بناءً على نوع الاتصال المتاح.
إذا كان التطبيق يجري العديد من معاملات الشبكة، فينبغي عليك تقديم إعدادات المستخدم التي
السماح للمستخدمين بالتحكّم في عادات البيانات في تطبيقك، مثل عدد مرات مزامنة التطبيق للبيانات، وما إذا كان
إجراء عمليات التحميل/التنزيل فقط عند الاتصال بشبكة Wi-Fi أو عند استخدام البيانات أثناء التجوال وما إلى ذلك. باستخدام هذه
عناصر التحكّم المتاحة لهم، يقلّ احتمال إيقاف المستخدمين للتطبيق إمكانية الوصول إلى البيانات
تقترب من حدودها القصوى، لأنّها تستطيع بدلاً من ذلك التحكّم بدقة في مقدار البيانات التي يستخدمها تطبيقك.
إذا قدّمت نشاطًا مفضّلاً يتضمّن هذه الإعدادات، يجب تضمين فلتر أهداف للإجراء ACTION_MANAGE_NETWORK_USAGE
في بيان ملفه. مثلاً:
<activity android:name="DataPreferences" android:label="@string/title_preferences"> <intent-filter> <action android:name="android.intent.action.MANAGE_NETWORK_USAGE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
يشير فلتر الأهداف هذا للنظام إلى أن هذا هو النشاط الذي يتحكم في استخدام البيانات للتطبيق. وبالتالي، عندما يفحص المستخدم مقدار البيانات التي يستخدمها تطبيقك تطبيق "الإعدادات"، قسم "عرض إعدادات التطبيق" الذي يشغِّل نشاط التفضيلات حتى يتسنى للمستخدم تحسين مقدار البيانات التي يستخدمها تطبيقك.
يجب الانتباه أيضًا إلى أنّ getBackgroundDataSetting()
أصبح الآن
متوقّفة نهائيًا وتعرض القيمة "صواب" دائمًا، لذا استخدِم getActiveNetworkInfo()
بدلاً منها. قبل محاولة إجراء أي معاملات على الشبكة، يجب دائمًا الاتصال بـ getActiveNetworkInfo()
للحصول على NetworkInfo
الذي يمثّل الشبكة الحالية وإجراء طلب بحث على isConnected()
للتحقّق مما إذا كان الجهاز متصلاً بالشبكة. يمكنك بعد ذلك التحقق من خصائص الاتصال الأخرى، مثل ما إذا كان الجهاز
أثناء التجوال أو الاتصال بشبكة Wi-Fi.
Enterprise
يوسِّع Android 4.0 إمكانات تطبيقات المؤسسات من خلال الميزات التالية.
خدمات شبكة VPN
يتيح VpnService
الجديد للتطبيقات إنشاء شبكة VPN (شبكة افتراضية خاصة) خاصة بها، وتشغيلها كService
. تنشئ خدمة VPN واجهة
شبكة افتراضية بعنوانها وقواعد توجيه خاصة بها وتُجري جميع عمليات القراءة والكتابة باستخدام
واصف الملفات.
لإنشاء خدمة VPN، يمكنك استخدام ميزة VpnService.Builder
التي تتيح لك تحديد.
عنوان الشبكة وخادم نظام أسماء النطاقات ومسار الشبكة والمزيد. عند اكتمال العملية، يمكنك إنشاء
الواجهة من خلال الاتصال بـ establish()
، ما يؤدي إلى عرض ParcelFileDescriptor
.
يمكن أن تؤدي خدمة VPN إلى اعتراض الحِزم، ما يؤثر في الأمان. وبناءً على ذلك، إذا كنت تستخدم VpnService
، يجب أن تطلب خدمتك BIND_VPN_SERVICE
لضمان أنّه لا يمكن للنظام إلّا الربط بها (يتم منح النظام فقط هذا الإذن، ولا يمكن للتطبيقات طلبه). لاستخدام خدمة VPN بعد ذلك،
على المستخدمين تفعيلها يدويًا في إعدادات النظام.
سياسات الأجهزة
يمكن للتطبيقات التي تدير قيود الجهاز الآن إيقاف الكاميرا باستخدام setCameraDisabled()
وخاصية USES_POLICY_DISABLE_CAMERA
(يتم تطبيقها باستخدام عنصر <disable-camera />
في ملف ضبط السياسة).
إدارة الشهادات
توفّر فئة KeyChain
الجديدة واجهات برمجة تطبيقات تتيح لك استيراد البيانات والوصول إليها.
الشهادات في مخزن مفاتيح النظام. تعمل الشهادات على تبسيط عملية تثبيت كلّ من شهادات العميل
(للتحقّق من هوية المستخدم) وشهادات هيئة إصدار الشهادات (للتحقق من هوية الخادم). يمكن للتطبيقات، مثل متصفّحات الويب أو برامج البريد الإلكتروني، الوصول إلى الشهادات المثبّتة
لمصادقة المستخدمين على الخوادم. يمكنك الاطّلاع على KeyChain
.
وثائق لمزيد من المعلومات.
أجهزة استشعار الجهاز
تمت إضافة نوعَين جديدَين من أجهزة الاستشعار في Android 4.0:
TYPE_AMBIENT_TEMPERATURE
: جهاز استشعار الحرارة يوفّر درجة الحرارة المحيطة (الغرفة) بالدرجات المئوية.TYPE_RELATIVE_HUMIDITY
: جهاز استشعار للرطوبة يوفر الرطوبة المحيطة (الغرفة) النسبية كنسبة مئوية.
إذا كان الجهاز يحتوي على كل من جهازَي استشعار TYPE_AMBIENT_TEMPERATURE
وTYPE_RELATIVE_HUMIDITY
، يمكنك استخدامهما لحساب نقطة التكثُّف.
والرطوبة المطلقة.
تم التوقّف نهائيًا عن استخدام جهاز استشعار الحرارة السابق TYPE_TEMPERATURE
. يجب استخدام أداة استشعار TYPE_AMBIENT_TEMPERATURE
بدلاً من ذلك.
بالإضافة إلى ذلك، تم تحسين ثلاث أدوات استشعار اصطناعية في Android إلى حد كبير، وأصبحت
وقت الاستجابة وإنتاج أكثر سلاسة. وتشمل هذه الأجهزة أداة استشعار الجاذبية (TYPE_GRAVITY
) وأداة استشعار متجه الدوران (TYPE_ROTATION_VECTOR
) وأداة استشعار التسارع الخطي (TYPE_LINEAR_ACCELERATION
). وتعتمد أدوات الاستشعار المحسَّنة على أداة استشعار الجيرسكوب لتحسين أدائها، لذا لا تظهر أدوات الاستشعار إلا على الأجهزة التي تحتوي على أداة استشعار الجيرسكوب.
شريط الإجراءات
تم تعديل ActionBar
لتتوافق مع العديد من السلوكيات الجديدة. معظم الأقسام
والأهم من ذلك، يدير النظام حجم شريط الإجراءات وتهيئته بسلاسة عند تشغيله على
الشاشات الأصغر حجمًا بهدف توفير تجربة مثالية للمستخدم على جميع أحجام الشاشات. على سبيل المثال،
عندما تكون الشاشة ضيّقة (مثلاً عندما يكون الهاتف الجوّال في الوضع العمودي)، تظهر علامات تبويب التنقل في
شريط الإجراءات في "شريط مُجمَّع" يظهر مباشرةً أسفل شريط الإجراءات الرئيسي. يمكنك
والاشتراك أيضًا في "شريط الإجراءات المقسم"، والذي يضع جميع بنود العمل في شريط منفصل أسفل
الشاشة عندما تكون الشاشة ضيقة.
شريط الإجراءات المُقسَّم
إذا كان شريط الإجراءات يتضمّن عدة عناصر إجراءات، لن يتسع بعضها في شريط الإجراءات على
شاشة ضيّقة، لذلك سيضع النظام المزيد منها في قائمة الخيارات الإضافية. ومع ذلك، يتيح لك الإصدار 4.0 من Android تفعيل ميزة "تقسيم شريط الإجراءات" حتى يظهر المزيد من عناصر الإجراءات على الشاشة في شريط منفصل في أسفل الشاشة. لتفعيل شريط الإجراءات المُقسَّم، أضِف android:uiOptions
مع "splitActionBarWhenNarrow"
إلى علامة
<application>
أو علامات <activity>
الفردية
في ملف البيان. عند تفعيل هذا الخيار، سيضيف النظام شريطًا إضافيًا أسفل
لجميع بنود العمل عندما تكون الشاشة صغيرة (لن تظهر أي بنود عمل في
شريط الإجراءات).
إذا كنت تريد استخدام علامات التبويب الخاصة بالتنقّل التي يوفّرها ActionBar.Tab
API،
ولكنّك لا تحتاج إلى شريط الإجراءات الرئيسي في الأعلى (إذا كنت تريد أن تظهر علامات التبويب فقط في الأعلى)، يمكنك تفعيل
شريط الإجراءات المُقسَّم كما هو موضّح أعلاه، كما يمكنك استدعاء setDisplayShowHomeEnabled(false)
لإيقاف
رمز التطبيق في شريط الإجراءات. ومع عدم بقاء أي شيء في شريط الإجراءات الرئيسي،
- كل ما تبقى هو علامات تبويب التنقل في الأعلى وبنود العمل في
أسفل الشاشة.
أنماط شريط الإجراءات
إذا كنت تريد تطبيق نمط مخصّص على شريط الإجراءات، يمكنك استخدام سمات النمط الجديدة backgroundStacked
وbackgroundSplit
لتطبيق خلفية
قابلة للرسم أو لون على الشريط المُكدَّس والشريط المُقسَّم، على التوالي. يمكنك أيضًا ضبط هذه الأنماط عند
وقت التشغيل باستخدام setStackedBackgroundDrawable()
وsetSplitBackgroundDrawable()
.
موفّر الإجراءات
تتيح لك الفئة ActionProvider
الجديدة إنشاء معالج متخصص
وبنود العمل. يمكن لموفّر الإجراءات تحديد عرض إجراء وسلوك إجراء تلقائي وقائمة فرعية
لكل عنصر إجراء مرتبط به. عندما تريد إنشاء عنصر إجراء يحتوي على
سلوكيات ديناميكية (مثل عرض إجراء متغيّر أو إجراء تلقائي أو قائمة فرعية)، يُعدّ توسيع ActionProvider
حلًا جيدًا لإنشاء مكوّن قابل لإعادة الاستخدام، بدلاً من
معالجة عمليات تحويل عناصر الإجراءات المختلفة في المقتطف أو النشاط.
على سبيل المثال، ShareActionProvider
هو إضافة لـ ActionProvider
تسهِّل "المشاركة". الإجراء من شريط الإجراءات. بدلاً من استخدام
بند العمل التقليدي الذي يستدعي نية ACTION_SEND
، يمكنك
استخدام مقدّم الإجراءات هذا لتقديم عرض إجراء يتضمّن قائمة منسدلة بالتطبيقات التي تعالج
نية ACTION_SEND
. عندما يختار المستخدم تطبيقًا لاستخدامه
للإجراء، يتذكر ShareActionProvider
هذا التحديد ويعرضه
في عرض الإجراء لوصول أسرع إلى المشاركة مع ذلك التطبيق.
لتعريف مقدّم إجراء لعنصر إجراء، أدرِج السمة android:actionProviderClass
في عنصر <item>
لقائمة خيارات نشاطك، مع اسم فئة مقدّم الإجراء
كقيمة. مثلاً:
<item android:id="@+id/menu_share" android:title="Share" android:showAsAction="ifRoom" android:actionProviderClass="android.widget.ShareActionProvider" />
في onCreateOptionsMenu()
طريقة الاستدعاء الخاصة بنشاطك، استرجع مثيلًا لمقدّم الإجراءات من عنصر القائمة واضبط
الهدف:
Kotlin
override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.options, menu) val shareActionProvider = menu.findItem(R.id.menu_share)?.actionProvider as? ShareActionProvider // Set the share intent of the share action provider. shareActionProvider?.setShareIntent(createShareIntent()) ... return super.onCreateOptionsMenu(menu) }
Java
public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.options, menu); ShareActionProvider shareActionProvider = (ShareActionProvider) menu.findItem(R.id.menu_share).getActionProvider(); // Set the share intent of the share action provider. shareActionProvider.setShareIntent(createShareIntent()); ... return super.onCreateOptionsMenu(menu); }
للحصول على مثال لاستخدام ShareActionProvider
، اطّلِع على ActionBarShareActionProviderActivity في ApiDemos.
طرق عرض الإجراءات القابلة للطي
يمكن الآن لبنود الإجراءات التي توفر عرض الإجراءات التبديل بين حالة عرض الإجراء
حالة بند العمل التقليدي. في السابق، كانت أجهزة SearchView
متاحة فقط.
قابلة للتصغير عند استخدامها كعرض إجراء، ولكن يمكنك الآن إضافة عرض إجراء لأي بند عمل
التبديل بين الحالة الموسّعة (عرض الإجراء مرئي) والحالة المصغّرة (عنصر الإجراء هو
مرئية).
للإشارة إلى أنّ عنصر الإجراء الذي يحتوي على عرض إجراء قابل للطي، أدرِج العلامة “collapseActionView"
في سمة android:showAsAction
لعنصر <item>
في ملف XML الخاص بالقائمة.
لتلقي استدعاءات عند تبديل طريقة عرض الإجراء بين موسّعة ومصغَّر، سجّل
مثيل MenuItem.OnActionExpandListener
مع MenuItem
المعني من خلال استدعاء setOnActionExpandListener()
. عليك عادةً إجراء ذلك أثناء معاودة الاتصال "onCreateOptionsMenu()
".
للتحكّم في عرض الإجراء القابل للتصغير، يمكنك الاتصال بـ collapseActionView()
وexpandActionView()
على
MenuItem
المعنية.
عند إنشاء عرض إجراءات مخصّص، يمكنك أيضًا تنفيذ واجهة CollapsibleActionView
الجديدة لتلقّي عمليات الاستدعاء عند توسيع العرض ونقله إلى الوضع المصغر.
واجهات برمجة التطبيقات الأخرى لشريط الإجراءات
- يتيح لك الخيار
setHomeButtonEnabled()
تحديد ما إذا كان الرمز/الشعار يعمل كزر للانتقال إلى الشاشة الرئيسية أو "لأعلى" (أدخِل "true" لجعله يعمل ك botão). - يتيح لك العنصران
setIcon()
وsetLogo()
تحديد رمز شريط الإجراءات أو شعاره أثناء التشغيل. - يتيح لك العنصر
Fragment.setMenuVisibility()
تفعيل أو إيقاف مستوى ظهور عناصر قائمة الخيارات التي يُعلن عنها المقتطف. يكون ذلك مفيدًا إذا تم تمت إضافة الجزء إلى النشاط، ولكنه غير مرئي، لذا يجب أن تكون عناصر القائمة مخفي. FragmentManager.invalidateOptionsMenu()
يتيح لك إلغاء صلاحية قائمة خيارات النشاط أثناء حالات مختلفة من دورة حياة المقتطف حيث قد لا يكون استخدام الطريقة المكافئة منActivity
متاحًا.
واجهة المستخدم وطريقة العرض
يقدّم نظام التشغيل Android 4.0 مجموعة متنوعة من طرق العرض الجديدة ومكونات واجهة المستخدم الأخرى.
GridLayout
GridLayout
هي مجموعة جديدة من العروض تضع العروض الفرعية في شبكة مستطيلة
. على عكس TableLayout
، يعتمد GridLayout
على مستوى ثابت
العرض الهرمي ولا تستفيد من طرق العرض الوسيطة مثل صفوف الجدول لتوفير البنية
بدلاً من ذلك، تحدد العناصر الفرعية الصفوف والأعمدة التي يجب أن تشغلها (يمكن أن تمتد الخلايا إلى عدة
الصفوف و/أو الأعمدة)، وبشكل افتراضي يتم وضعها بشكل تسلسلي عبر صفوف وأعمدة الشبكة.
يحدِّد اتجاه GridLayout
ما إذا كان سيتم عرض العناصر الثانوية المتسلسلة تلقائيًا أفقيًا أو عموديًا. يمكن تحديد المساحة بين العناصر الفرعية إما باستخدام
نماذج لعرض Space
الجديد أو من خلال ضبط مَعلمات الهامش ذات الصلة
على العناصر الفرعية.
الاطّلاع على ApiDemos
للعينات التي تستخدم GridLayout
.
عرض الهيئة
TextureView
هي طريقة عرض جديدة تتيح لك عرض بث محتوى، مثل
فيديو أو مشهد OpenGL. على الرغم من تشابهها مع SurfaceView
، تُعتبر السمة TextureView
فريدة من حيث أنّها تعمل كعرض عادي، بدلاً من إنشاء
نافذة منفصلة، لكي تتمكّن من التعامل معها كأي عنصر View
آخر. على سبيل المثال:
يمكنك تطبيق عمليات تحويل أو تحريكها باستخدام ViewPropertyAnimator
لضبط تعتيمها باستخدام setAlpha()
.
يُرجى العِلم أنّ TextureView
لا تعمل إلا داخل نافذة مُسرَّعة بالأجهزة.
لمزيد من المعلومات، اطّلِع على مستندات "TextureView
".
تبديل التطبيق المصغّر
تطبيق Switch
المصغّر الجديد هو خيار يمكن للمستخدم سحبه إلى أحد الوضعَين
الجانب أو الآخر (أو النقر فقط) لتبديل خيار بين حالتين.
يمكنك استخدام السمتَين android:textOn
وandroid:textOff
لتحديد النص الذي
يظهر على مفتاح التبديل عند ضبطه على وضع "تفعيل" أو "إيقاف". تشمل السمة android:text
أيضًا
وضع تسمية بجانب مفتاح التبديل.
للاطّلاع على نموذج عن مفاتيح التحكّم، يُرجى مراجعة ملف التنسيق switches.xml. ومفاتيح التبديل ذات الصلة .
القوائم المنبثقة
طرح نظام التشغيل Android 3.0 الرمز PopupMenu
لإنشاء قوائم سياقية قصيرة تظهر فجأة عند نقطة ربط تحدّدها (عادةً عند نقطة العنصر المحدّد). Android 4.0 ممتد
PopupMenu
مع بعض الميزات المفيدة:
- يمكنك الآن بسهولة توسيع محتوى قائمة منبثقة من مورد قائمة بتنسيق XML باستخدام
inflate()
، مع تمريرها بمعرّف مورد القائمة. - يمكنك الآن أيضًا إنشاء "
PopupMenu.OnDismissListener
" يتلقّى رد الاتصال عند تجاهل القائمة.
التفضيلات
تشكّل فئة TwoStatePreference
مجردة جديدة الأساس ل
الإعدادات المفضّلة التي توفّر خيار اختيار من حالتَين. SwitchPreference
الجديد هو إضافة إلى TwoStatePreference
يوفّر أداة Switch
في
عرض الإعدادات المفضّلة للسماح للمستخدمين بتفعيل إعداد أو إيقافه بدون الحاجة إلى فتح شاشة أو مربّع حوار إضافيَين لعرض الإعدادات المفضّلة. على سبيل المثال، يستخدم تطبيق "الإعدادات" SwitchPreference
لإعدادات Wi-Fi والبلوتوث.
مظاهر النظام
أصبح الآن المظهر التلقائي لجميع التطبيقات التي تستهدف الإصدار 4.0 من نظام التشغيل Android هو المظهر
"التلقائي على الجهاز": Theme.DeviceDefault
، وذلك من خلال ضبط targetSdkVersion
أو
minSdkVersion
على
“14"
أو إصدار أحدث. قد يكون هذا
مظهر داكن اللون أو مظهر داكن مختلف يحدده الجهاز المحدد.
نضمن عدم تغيير مجموعة المظاهر Theme.Holo
من جهاز إلى آخر عند تشغيل الإصدار نفسه من Android. إذا طبّقت بشكل صريح
أيًا من مظاهر Theme.Holo
على الأنشطة، يمكنك
الوثوق بأنّ هذه المظاهر لن تغيّر الأسلوب على الأجهزة المختلفة ضمن الإصدار نفسه
من النظام الأساسي.
إذا أردت أن يندمج تطبيقك مع المظهر العام للجهاز (مثلاً عندما يكون لدى مصنّعين أصليين مختلفين
تقدّم مظاهر تلقائية مختلفة للنظام)، فيجب تطبيق المظاهر بشكل صريح من مجموعة Theme.DeviceDefault
.
زر قائمة الخيارات
بدءًا من الإصدار 4.0 من Android، لن تتطلّب الهواتف الجوّالة زرّ "القائمة". ومع ذلك، لا داعي للقلق بشأن ذلك إذا كان تطبيقك الحالي يقدّم قائمة خيارات ويتوقع توفُّر زر القائمة. لضمان استمرار عمل التطبيقات الحالية على النحو المتوقَّع، يوفّر النظام زر القائمة الظاهر على الشاشة للتطبيقات التي تم تصميمها لإصدارات Android القديمة.
للحصول على أفضل تجربة للمستخدم، يجب أن تستخدم التطبيقات الجديدة والمحدّثة ActionBar
بدلاً من ذلك لتوفير إمكانية الوصول إلى عناصر القائمة وضبط targetSdkVersion
على
"14"
للاستفادة من أحدث السلوكيات التلقائية للإطار.
عناصر التحكّم في إذن الوصول إلى واجهة مستخدم النظام
منذ الأيام الأولى لنظام Android، كان النظام يدير مكوّن واجهة مستخدم يُعرف باسم شريط الحالة ، والذي يظهر في أعلى أجهزة الهواتف الجوّالة لتقديم معلومات مثل إشارة شبكة الجوّال والوقت والإشعارات وما إلى ذلك. أضاف Android 3.0 شريط النظام للجهاز اللوحي الأجهزة، الموجودة في الجزء السفلي من الشاشة لتوفير عناصر التحكم في تنقل النظام (الصفحة الرئيسية، وما إلى ذلك) وأيضًا واجهة للعناصر التي يوفرها شريط الحالة بشكل تقليدي. ضِمن Android 4.0، يوفر النظام نوعًا جديدًا من واجهة مستخدم النظام يسمى شريط التنقل. يمكنك اعتبار شريط التنقّل نسخة معدَّلة من شريط النظام المصمّم للهواتف المحمولة، فهو يقدّم عناصر تحكّم في التنقّل للأجهزة التي لا تتضمّن عناصر تحكّم في الأجهزة للتنقّل في النظام، ولكنه لا يقدّم واجهة مستخدم الإشعارات وعناصر التحكّم في الإعدادات في شريط النظام. وبناءً على ذلك، فإن الجهاز الذي يوفر التنقل على شريط الحالة في الأعلى أيضًا.
حتى يومنا هذا، يمكنك إخفاء شريط الحالة على الهواتف الجوّالة باستخدام العلامة FLAG_FULLSCREEN
. وفي Android 4.0، كانت واجهات برمجة التطبيقات التي تتحكم
تم تعديل إذن الوصول إلى شريط النظام ليعكس سلوك كل من شريط النظام بشكل أفضل.
وشريط التنقل:
- تحلّ العلامة
SYSTEM_UI_FLAG_LOW_PROFILE
محلّ علامةSTATUS_BAR_HIDDEN
. عند ضبط هذه العلامة، يتم تفعيل وضع "منخفض المستوى" لشريط النظام أو شريط التنقّل. يتم أيضًا تعتيم أزرار التنقل والعناصر الأخرى في شريط النظام. جارٍ التفعيل يساعد هذا الإجراء في إنشاء المزيد من الألعاب الغامرة بدون تشتيت الانتباه أثناء التنقّل داخل النظام. الأزرار. - تستبدل العلامة
SYSTEM_UI_FLAG_VISIBLE
العلامةSTATUS_BAR_VISIBLE
لطلب ظهور شريط النظام أو شريط التنقّل. SYSTEM_UI_FLAG_HIDE_NAVIGATION
هو علامة جديدة تطلب إخفاء شريط التنقّل بالكامل. ويُرجى العلم بأنّ هذه الميزة لا تعمل إلا مع شريط التنقّل. تستخدمها بعض الهواتف المحمولة (لا يخفي شريط النظام على الأجهزة اللوحية). شريط التنقل شريط العودة إلى العرض فور تلقي النظام لإدخال المستخدم. وبالتالي، يكون هذا الوضع مفيدًا بشكل أساسي لتشغيل الفيديوهات أو في الحالات الأخرى التي تتطلّب استخدام الشاشة بالكامل ولكن ليس هناك حاجة إلى إدخال المستخدم.
يمكنك ضبط كل علامة من هذه العلامات لشريط النظام وشريط التنقّل من خلال استدعاء setSystemUiVisibility()
في أي عرض في نشاطك. يجمع
مدير النوافذ جميع العلامات من جميع طرق العرض في نافذتك ويجمعها ويطبقها على واجهة مستخدم النظام ما دامت نافذتك هي العنصر الذي يتلقّى الإدخال. عندما تفقد النافذة إمكانية الإدخال
عندما ينتقل المستخدم بعيدًا عن تطبيقك أو يظهر مربّع حوار) يتوقف عن التأثير.
وبالمثل، إذا أزلت طرق العرض هذه من التدرج الهرمي لطريقة العرض، لن تنطبق العلامات عليها بعد ذلك.
لمزامنة أحداث أخرى في نشاطك مع تغييرات إذن الوصول إلى واجهة مستخدم النظام (لبعض
على سبيل المثال، إخفاء شريط الإجراءات أو عناصر تحكم واجهة المستخدم الأخرى عند إخفاء واجهة مستخدم النظام)، يجب تسجيل
View.OnSystemUiVisibilityChangeListener
سيتم إرسال إشعار عند ظهوره
تغيير شريط النظام أو شريط التنقل
يمكنك الاطّلاع على فئة OverscanActivity لعرض توضيحي للخيارات المختلفة لواجهة مستخدم النظام.
إطار عمل الإدخال
يضيف نظام التشغيل Android 4.0 إمكانية استخدام أحداث تمرير مؤشر الماوس وأحداث جديدة لزرّ قلم الشاشة وزرار الماوس.
أحداث التمرير
تتيح الفئة View
الآن ميزة "التمرير". الأحداث لتفعيل تفاعلات أكثر فائدةً
من خلال استخدام أجهزة المؤشر (مثل الماوس أو الأجهزة الأخرى التي تؤدي إلى عرض محتوى على الشاشة)
).
لتلقّي أحداث التمرير على طريقة عرض، نفِّذ View.OnHoverListener
و
سجِّله لدى setOnHoverListener()
. عند تمرير مؤشر الماوس
الحدث الذي يحدث على شاشة العرض، يتلقّى المستمع مكالمة إلى onHover()
، مع تقديم View
تلقّيت الحدث وMotionEvent
التي تصف نوع حدث التمرير
الذي حدث. يمكن أن يكون حدث التمرير واحدًا مما يلي:
من المفترض أن يعرض View.OnHoverListener
قيمة صحيحة من onHover()
إذا كان يعالج حدث التمرير. إذا كان
يعرض المستمع خطأ false، فسيتم إرسال حدث التمرير إلى طريقة العرض الرئيسية كالمعتاد.
إذا كان تطبيقك يستخدم أزرارًا أو عناصر واجهة مستخدم أخرى تغيّر مظهرها استنادًا إلى
الحالة الحالية، يمكنك الآن استخدام السمة android:state_hovered
في عنصر قابل للرسم في قائمة الحالات لتوفير
عنصر قابل للرسم لخلفية مختلفة عندما يمرّ مؤشر الماوس فوق العرض.
للاطّلاع على عرض توضيحي لأحداث التمرير فوق العناصر الجديدة، اطّلِع على فئة Hover في ApiDemos.
أحداث قلم الشاشة وأزرار الماوس
يقدّم Android الآن واجهات برمجة تطبيقات لتلقّي الإدخال من جهاز إدخال قلم الشاشة، مثل محوِّل رقمي أو جهاز خارجي للأجهزة اللوحية أو شاشة لمس تتيح استخدام قلم الشاشة.
يعمل الإدخال باستخدام قلم الشاشة بطريقة مشابهة للإدخال باللمس أو الماوس. عندما يكون قلم الشاشة ملامسًا مع جهاز التحويل الرقمي، تتلقّى التطبيقات أحداثًا باللمس تمامًا كما هو الحال عند استخدام أحد الإصبعين المس الشاشة. عندما يكون قلم الشاشة معلقًا فوق أداة التحويل الرقمي، تتلقّى التطبيقات أحداث التمرير فوق الشاشة تمامًا كما لو كان يتم تحريك مؤشر الماوس على الشاشة بدون الضغط على أي أزرار .
يمكن لتطبيقك التمييز بين إدخالات الإصبع والماوس وقلم الشاشة والممحاة من خلال الاستعلام عن
"نوع الأداة" المرتبطة بكل مؤشر في MotionEvent
باستخدام getToolType()
. في ما يلي أنواع الأدوات المحدّدة حاليًا: TOOL_TYPE_UNKNOWN
وTOOL_TYPE_FINGER
TOOL_TYPE_MOUSE
، TOOL_TYPE_STYLUS
،
وTOOL_TYPE_ERASER
. من خلال الاستعلام عن نوع الأداة، يمكن لتطبيقك
يمكنه اختيار التعامل مع الإدخال بقلم الشاشة بطرق مختلفة بدءًا من الإدخال بالإصبع أو الماوس.
يمكن لتطبيقك أيضًا الاستعلام عن أزرار الماوس أو قلم الشاشة التي يتم الضغط عليها عن طريق الاستعلام عن "الزر
الولاية لـ MotionEvent
باستخدام getButtonState()
. حالات الزرّ المحدّدة حاليًا هي: BUTTON_PRIMARY
وBUTTON_SECONDARY
وBUTTON_TERTIARY
وBUTTON_BACK
وBUTTON_FORWARD
. للتيسير، يتم استخدام زري الماوس للخلف والأمام
يتم ربطه تلقائيًا بالمفتاحين KEYCODE_BACK
وKEYCODE_FORWARD
. يمكن لتطبيقك معالجة هذه المفاتيح للسماح بالتنقّل للأمام والخلف باستخدام زر الماوس.
بالإضافة إلى القياس الدقيق لوضعية التلامس وضغطها، يُدخِل بعض البيانات بقلم الشاشة
تقوم الأجهزة أيضًا بالإبلاغ عن المسافة بين طرف قلم الشاشة وجهاز التحويل الرقمي، وزاوية إمالة قلم الشاشة،
وزاوية اتجاه قلم الشاشة. يستطيع تطبيقك الاستعلام عن هذه المعلومات باستخدام getAxisValue()
مع رموز المحور AXIS_DISTANCE
وAXIS_TILT
وAXIS_ORIENTATION
.
لعرض أنواع الأدوات وحالات الأزرار ورموز المحور الجديدة، يمكن مراجعة TouchPaint في ApiDemos.
الخصائص
تقدّم الفئة Property
الجديدة طريقة سريعة وفعّالة وسهلة لتحديد
على أي كائن يسمح للمتصلين بضبط/الحصول على قيم بشكل عام للكائنات المستهدفة. وكذلك
تسمح بوظيفة تمرير مراجع الحقول/الطرق ويسمح للرمز البرمجي بضبط/الحصول على القيم
من الخاصية دون معرفة تفاصيل ماهية الحقول/الطرق.
على سبيل المثال، إذا كنت تريد ضبط قيمة الحقل bar
في الكائن foo
، فيجب
القيام بذلك سابقًا:
Kotlin
foo.bar = value
Java
foo.bar = value;
إذا أردت استدعاء دالة setter لحقل خاص أساسي bar
، يمكنك إجراء
إجراء ذلك:
Kotlin
foo.setBar(value)
Java
foo.setBar(value);
مع ذلك، إذا أردت تجاوز المثيل foo
وضبط بعض الرموز الأخرى على
bar
، فلا توجد طريقة للقيام بذلك قبل الإصدار Android 4.0.
باستخدام الفئة Property
، يمكنك الإعلان عن السمة Property
.
الكائن BAR
في الفئة Foo
بحيث يمكنك تعيين الحقل على مثيل foo
الصف Foo
على النحو التالي:
Kotlin
BAR.set(foo, value)
Java
BAR.set(foo, value);
تستفيد فئة View
الآن من الفئة Property
بهدف
يمكنك ضبط حقول مختلفة، مثل خصائص التحويل التي تمت إضافتها في Android 3.0 (ROTATION
وROTATION_X
وTRANSLATION_X
وما إلى ذلك).
تستخدم فئة ObjectAnimator
أيضًا فئة Property
، ما يتيح لك إنشاء ObjectAnimator
باستخدام Property
، وهو أسرع وأكثر فعالية وأمانًا من الأنواع مقارنةً بالنهج القائم على
السلاسل.
تسريع الأجهزة
بدءًا من الإصدار 4.0 من نظام التشغيل Android، يتم تفعيل ميزة "تسريع الأجهزة" لجميع النوافذ تلقائيًا إذا كان
تطبيقك قد ضبطtargetSdkVersion
أو
minSdkVersion
على
“14"
أو إصدار أحدث. يؤدي تفعيل ميزة "تسريع الأجهزة" بشكل عام إلى عرض صور متحركة بسلاسة أكبر، وإلى التمرير بسلاسة أكبر، وإلى أداء أفضل بشكل عام واستجابة أفضل لتفاعل المستخدم.
إذا لزم الأمر، يمكنك إيقاف ميزة "تسريع الأجهزة" يدويًا باستخدام hardwareAccelerated
السمة لعناصر <activity>
الفردية أو <application>
العنصر. بدلاً من ذلك، يمكنك إيقاف ميزة "تسريع الأجهزة" للملفات الشخصية الفردية من خلال الاتصال بخدمة setLayerType(LAYER_TYPE_SOFTWARE)
.
لمزيد من المعلومات عن ميزة "تسريع الأجهزة"، بما في ذلك قائمة بعمليات الرسم غير المتوافقة، يُرجى الاطّلاع على مستند تسريع الأجهزة.
تغييرات واجهة JNI
في إصدارات Android السابقة، لم تكن مراجع JNI المحلية أسماء معرِّفة غير مباشرة، جهاز Android مستخدَم والمؤشرات المباشرة. لم تكن هذه مشكلة طالما أنّ أداة جمع المهملات لم تنقل الكائنات، ولكن بدا أنّها تعمل لأنّها جعلت من الممكن كتابة رمز يتضمّن أخطاء. وفي Android 4.0، يستخدم النظام الآن مراجع غير مباشرة لاكتشاف هذه الأخطاء.
يتم وصف التفاصيل التفصيلية للمراجع المحلية لـ JNI في قسم "المراجع المحلية والعالمية" في مقالة نصائح مبادرة أخبار Google في Android 4.0، تم تحسين CheckJNI لرصد هذه الأخطاء. شاهِد مدوّنة مطوّري تطبيقات Android لمعرفة مشاركة قادمة. حول الأخطاء الشائعة في مراجع JNI وكيفية إصلاحها.
لا يؤثّر هذا التغيير في تنفيذ JNI إلا في التطبيقات التي تستهدف الإصدار 4.0 من نظام التشغيل Android من خلال ضبط targetSdkVersion
أو minSdkVersion
على “14"
أو إصدار أحدث. إذا ضبطت هذه السمات على أيّ قيمة أقل،
فإن مراجع JNI المحلية تعمل بالطريقة نفسها التي تعمل بها في الإصدارات السابقة.
مجموعة أدوات الويب
- تم تحديث WebKit إلى الإصدار 534.30
- إتاحة الخطوط الهندية الآرية (الديفانجارية والبنغالية والتاميلية، بما في ذلك إتاحة الأحرف المعقدة
اللازمة لدمج الأحرف الرسومية) في
WebView
والمتصفّح المضمّن - إتاحة الخطوط الإثيوبية والجورجية والأرمينية في
WebView
والمتصفّح المضمّن - يتيح لك استخدام WebDriverاختبار التطبيقات التي تستخدم
WebView
بسهولة أكبر.
متصفح Android
يضيف تطبيق المتصفح الميزات التالية لتشغيل تطبيقات الويب:
- تم تحديث برنامج تجميع JavaScript V8 للحصول على أداء أسرع
- بالإضافة إلى ذلك، تتوفّر الآن ميزات محسّنة أخرى مأخوذة من Android
3.0 على الهواتف الجوّالة:
- إتاحة عناصر الموضع الثابت على جميع الصفحات
- تسجيل الوسائط بتنسيق HTML
- اتجاه الجهاز الفعاليات
- عمليات التحويل الثلاثية الأبعاد في CSS
الأذونات
في ما يلي الأذونات الجديدة:
ADD_VOICEMAIL
: السماح لخدمة البريد الصوتي بإضافة بريد صوتي إرسال الرسائل إلى الجهاز.BIND_TEXT_SERVICE
: يجب أن تطلب الخدمة التي تنفِّذSpellCheckerService
هذا الإذن لنفسها.BIND_VPN_SERVICE
: يجب أن تطلب الخدمة التي تنفِّذVpnService
هذا الإذن لنفسها.- android.Manifest.permission#READ_PROFILE: يمنح إذن الوصول للقراءة لموفِّر
ContactsContract.Profile
. - android.Manifest.permission#WRITE_PROFILE: يمنح إذن الوصول للكتابة إلى مقدّم خدمة
ContactsContract.Profile
.
ميزات الجهاز
في ما يلي ميزات الجهاز الجديدة:
FEATURE_WIFI_DIRECT
: إقرار بأنّ التطبيق الاستخدامات شبكة Wi-Fi للاتصالات من نظير إلى نظير.
للحصول على عرض تفصيلي لجميع تغييرات واجهة برمجة التطبيقات في Android 4.0 (مستوى واجهة برمجة التطبيقات 14)، يُرجى الاطّلاع على تقرير الاختلافات في واجهة برمجة التطبيقات.
واجهات برمجة التطبيقات السابقة
بالإضافة إلى كل ما سبق، يتوافق نظام Android 4.0 بشكل طبيعي مع جميع واجهات برمجة التطبيقات من الإصدارات السابقة. بما أنّ نظام Android 3.x الأساسي متاح فقط للأجهزة ذات الشاشات الكبيرة، إذا كنت تطوّر التطبيقات بشكل أساسي للهواتف الجوّالة، قد لا تكون على دراية بجميع واجهات برمجة التطبيقات التي تمت إضافتها إلى Android في هذه الإصدارات الأخيرة.
إليك بعض أبرز واجهات برمجة التطبيقات والمتوفّرة الآن والتي يُحتمل أنّك فاتتك. على الهواتف المحمولة أيضًا:
- Android 3.0
-
Fragment
: مكوّن إطار عمل يتيح لك فصل عناصر النشاط المختلفة إلى وحدات مكتفية ذاتيًا تحدّد واجهة المستخدم ودورة حياتها. اطّلِع على دليل المطوّر الخاص ب المقاطع.ActionBar
: بديل لشريط العنوان التقليدي أعلى نافذة النشاط. يتضمّن شعار التطبيق في الزاوية اليمنى ويقدّم واجهة جديدة لعناصر القائمة. يمكنك الاطّلاع على دليل مطوّري شريط الإجراءات.Loader
: مكوّن إطار عمل يسهّل تحميل البيانات بدون التزامن بالاشتراك مع مكوّنات واجهة المستخدم لتحميل البيانات ديناميكيًا بدون حظر السلسلة الأساسية. يمكنك الاطّلاع على دليل المطوِّر الخاص بـ التحميلات.- حافظة النظام: يمكن للتطبيقات نسخ البيانات ولصقها (بخلاف النصوص فقط) من وإلى الحافظة على مستوى النظام. ويمكن أن تكون البيانات التي تم اقتصاصها نصًا عاديًا أو عنوان URI أو هدفًا. يمكنك الاطّلاع على دليل المطوِّر النسخ واللصق
- السحب والإفلات: مجموعة من واجهات برمجة التطبيقات المضمّنة في إطار عرض تسهّل عمليات السحب والإفلات . يمكنك الاطّلاع على دليل المطوِّرين حول ميزة السحب والإفلات.
- يتيح لك إطار عمل الصور المتحركة المرن الجديد تمامًا إضافة صور متحركة إلى خصائص عشوائية لأي كائن (عرض أو عنصر قابل للرسم أو جزء أو كائن أو أي شيء آخر) وتحديد جوانب الصور المتحركة، مثل المدة والتكرار والربط وغير ذلك. يسهّل إطار العمل الجديد استخدام الصور المتحركة في Android أكثر من أي وقت مضى. اطّلِع على دليل المطوّر لميزة "الرسوم المتحركة للموقع".
- رسومات RenderScript ومحرك الحساب: يوفّر RenderScript رسومات ثلاثية الأبعاد بأداء عالٍ وواجهة برمجة تطبيقات للحساب على المستوى الأصلي، والتي يمكنك كتابتها بلغة C (معيار C99)، مما يقدّم نوع الأداء الذي تتوقّعه من بيئة أصلية مع الحفاظ على إمكانية نقله على مختلف وحدات المعالجة المركزية ووحدات معالجة الرسومات. اطّلِع على دليل المطوّر RenderScript.
- الرسومات ثنائية الأبعاد المحسَّنة بالأجهزة: يمكنك الآن تفعيل أداة عرض OpenGL لتطبيقك
من خلال ضبط {android:hardwareAccelerated="true"} في عنصر
<application>
عنصر البيان أو لعناصر<activity>
فردية. هذه النتيجة من خلال تقديم صور متحركة أكثر سلاسة، وتمرير أكثر سلاسة، وتحسين أداء واستجابة للمستخدم بشكل عام التفاعل.ملاحظة: في حال ضبط السمة
minSdkVersion
أوtargetSdkVersion
في تطبيقك على يتم تفعيل ميزة "تسريع الأجهزة" تلقائيًا في"14"
أو الإصدارات الأحدث. - والكثير غير ذلك. يُرجى الاطّلاع على نظام Android 3.0 الأساسي ملاحظات لمزيد من المعلومات.
- Android 3.1
-
- واجهات برمجة تطبيقات USB: واجهات برمجة تطبيقات جديدة وفعّالة لدمج الأجهزة الملحقة المتصلة مع تطبيقات Android. تعتمد واجهات برمجة التطبيقات على حزمة USB والخدمات التي مدمج في النظام الأساسي، بما في ذلك دعم كل من مضيف USB وتفاعلات الجهاز. راجِع دليل المطوّر حول مضيف USB وملحقاته.
- واجهات برمجة التطبيقات MTP/PTP: يمكن للتطبيقات التفاعل مباشرةً مع الكاميرات المتصلة وأجهزة PTP
الأخرى لتلقّي إشعارات عند ربط الأجهزة وإزالتها، وإدارة الملفات ومساحة التخزين على
هذه الأجهزة، ونقل الملفات والبيانات الوصفية إليها ومنها. تنفذ MTP API بروتوكول PTP
(بروتوكول نقل الصورة) مجموعة فرعية من مواصفات بروتوكول نقل الوسائط (MTP). راجِع مستندات
android.mtp
. - واجهات برمجة تطبيقات RTP: يعرِض Android واجهة برمجة تطبيقات لحزمة RTP (بروتوكول النقل في الوقت الفعلي) المضمّنة فيه،
التي يمكن للتطبيقات استخدامها لإدارة بث البيانات عند الطلب أو التفاعلي. وعلى وجه الخصوص، التطبيقات
التي توفر بروتوكول الصوت على الإنترنت (VOIP) والدفع للتحدث وعقد المؤتمرات والبث الصوتي يمكنها استخدام واجهة برمجة التطبيقات (API) لبدء
الجلسات ونقل مصادر البيانات أو استقبالها عبر أي شبكة متاحة. اطّلِع على مستندات "
android.net.rtp
". - إتاحة استخدام أجهزة التحكّم في الألعاب وغيرها من أجهزة إدخال الحركة العامة
- اطّلِع على ملاحظات نظام Android 3.1 الأساسي لمزيد من واجهات برمجة التطبيقات الجديدة.
- Android 3.2
-
- تتوافق الشاشات الجديدة مع واجهات برمجة التطبيقات التي تمنحك مزيدًا من التحكّم في كيفية عرض تطبيقاتك على مختلف أحجام الشاشات. توفّر واجهة برمجة التطبيقات نموذج التوافق الحالي مع الشاشة من خلال القدرة على استهداف نطاقات محدّدة لحجم الشاشة بدقة حسب الأبعاد، ويتم قياسها باستخدام وحدات بكسل مستقلة الكثافة (مثل 600dp أو 720dp عرضًا)، بدلاً من أحجام الشاشة العامة (مثل large أو xlarge). على سبيل المثال، من المهمّ معرفة ذلك لمساعدتك في التمييز بين جهاز بشاشة مقاس 5 بوصات وجهاز بشاشة مقاس 7 بوصات، حيث يتمّ عادةً تصنيف كلا الجهازَين على أنّهما شاشة "كبيرة". اطّلع على مشاركة المدونة، أدوات جديدة لإدارة أحجام الشاشة
- ثوابت جديدة من
<uses-feature>
إلى الإفصاح عن متطلبات اتجاه الشاشة الأفقية أو العمودية - يتم الآن تغيير إعداد "حجم الشاشة" للجهاز أثناء
تغيير اتجاه الشاشة. إذا كان تطبيقك يستهدف المستوى 13 لواجهة برمجة التطبيقات أو إصدارًا أحدث، يجب التعامل مع تغيير إعدادات
"screenSize"
إذا كنت تريد أيضًا التعامل مع تغيير إعدادات"orientation"
. يُرجى الاطّلاع علىandroid:configChanges
للحصول على مزيد من المعلومات. - اطّلِع على ملاحظات نظام التشغيل Android 3.2 للاطّلاع على واجهات برمجة التطبيقات الجديدة الأخرى.
مستوى واجهة برمجة التطبيقات
تم منح واجهة برمجة تطبيقات Android 4.0 معرّفًا عدديًا 14 يتم تخزينه في النظام نفسه. يُعرف هذا المعرّف باسم "مستوى واجهة برمجة التطبيقات"، ويسمح للنظام بتحديد ما إذا كان التطبيق متوافقًا مع النظام بشكلٍ صحيح قبل تثبيته.
لاستخدام واجهات برمجة التطبيقات المقدمة في Android 4.0 في تطبيقك، يجب تجميع
التطبيق على نظام Android الأساسي الذي يتوافق مع المستوى 14 أو
أعلى. استنادًا إلى احتياجاتك، قد تحتاج أيضًا إلى إضافة سمة
android:minSdkVersion="14"
إلى العنصر
<uses-sdk>
.
لمزيد من المعلومات، يُرجى الاطّلاع على مقالة ما هي واجهة برمجة التطبيقات؟ ما هو المستوى؟