مستوى واجهة برمجة التطبيقات: 12
بالنسبة إلى المطوّرين، يتوفّر نظام Android 3.1 الأساسي (HONEYCOMB_MR1
) كمكوِّن قابل للتنزيل لحزمة تطوير البرامج (SDK) لنظام التشغيل Android. وتشتمل المنصة القابلة للتنزيل على مكتبة Android وصورة نظام، بالإضافة إلى مجموعة من مظاهر المحاكيات وغير ذلك. لا يتضمن النظام الأساسي القابل للتنزيل أي مكتبات خارجية.
بالنسبة إلى المطورين، يتوفر نظام Android 3.1 الأساسي كمكون قابل للتنزيل لحزمة Android SDK. وتشتمل المنصة القابلة للتنزيل على مكتبة Android وصورة نظام، بالإضافة إلى مجموعة من مظاهر المحاكيات وغير ذلك. لبدء تطوير التطبيقات أو اختبارها على الإصدار 3.1 من نظام التشغيل Android، استخدِم "مدير تطوير البرامج (SDK) لنظام التشغيل Android" لتنزيل النظام الأساسي إلى حزمة تطوير البرامج (SDK).
نظرة عامة على واجهة برمجة التطبيقات
تقدم الأقسام أدناه نظرة عامة فنية على الميزات الجديدة للمطوّرين في Android 3.1، بما في ذلك الميزات والتغييرات الجديدة في واجهة برمجة التطبيقات لإطار العمل منذ الإصدار السابق.
واجهات برمجة تطبيقات USB
يقدّم Android 3.1 واجهات برمجة تطبيقات جديدة وفعّالة لدمج الأجهزة الملحقة المتصلة مع التطبيقات التي تعمل على النظام الأساسي. تستند واجهات برمجة التطبيقات إلى حزمة USB (ناقل تسلسلي عالمي) وخدمات مضمّنة في النظام الأساسي، بما في ذلك إتاحة كلّ من مضيف USB والتفاعلات مع الأجهزة. باستخدام واجهات برمجة التطبيقات، يمكن للمطورين إنشاء تطبيقات قادرة على اكتشاف مجموعة متنوعة من أنواع الأجهزة المتصلة عبر USB والتواصل معها وإدارتها.
يميز المكدس وواجهات برمجة التطبيقات نوعين أساسيين من أجهزة USB، بناءً على ما إذا كان الجهاز الذي يعمل بنظام التشغيل Android يعمل كمضيف أم أن الأجهزة الخارجية تعمل كمضيف:
- جهاز USB هو قطعة من الأجهزة المتصلة تعتمد على الجهاز الذي يعمل بنظام التشغيل Android ليكون مضيفًا. على سبيل المثال، معظم أجهزة الإدخال وأجهزة الماوس وذراع التحكم هي أجهزة USB، كما هو الحال مع العديد من الكاميرات والموزعات (hub) وما إلى ذلك.
- ملحق USB هو قطعة من الأجهزة المتصلة تتضمن وحدة تحكّم للمضيف عبر USB وتوفّر الطاقة، ومصمّمة للاتصال بالأجهزة التي تعمل بنظام التشغيل Android عبر USB. ويمكن توصيل مجموعة متنوعة من الأجهزة الملحقة كملحقات، بدءًا من وحدات التحكّم في الروبوتات وحتى المعدات الموسيقية ودراجات التمارين الرياضية وغير ذلك.
بالنسبة إلى كلا النوعين، وهما أجهزة USB وملحقات USB، تتيح واجهات برمجة تطبيقات USB الخاصة بالنظام الأساسي الاكتشاف عبر البث المقصود عند التوصيل أو الانفصال، وكذلك الواجهات العادية ونقاط النهاية وأوضاع النقل (التحكّم، والمُجمَّع، والمقاطعة).
تتوفّر واجهات برمجة تطبيقات USB في الحزمة android.hardware.usb
. الفئة المركزية هي UsbManager
، وهي توفّر طرقًا مساعِدة لتحديد كل من أجهزة USB وملحقات USB والتواصل معها. يمكن للتطبيقات الحصول على مثيل لـ UsbManager
ثم الاستعلام عن قائمة الأجهزة أو الملحقات المتصلة، ثم الاتصال بها أو إدارتها.
تشير السمة UsbManager
أيضًا إلى الإجراءات التي يبثها النظام، للإشارة إلى وقت توصيل جهاز USB أو ملحق به أو فصله.
وتشمل الصفوف الأخرى ما يلي:
UsbDevice
، وهي فئة تمثّل الأجهزة الخارجية المتصلة كجهاز USB (ويعمل الجهاز الذي يعمل بنظام التشغيل Android كمضيف).UsbAccessory
، الذي يمثّل الأجهزة الخارجية المتصلة كمضيف USB (من خلال الجهاز الذي يعمل بنظام التشغيل Android والذي يعمل كجهاز USB).UsbInterface
وUsbEndpoint
، واللذين يتيحان الوصول إلى واجهات USB العادية ونقاط النهاية للجهاز.UsbDeviceConnection
وUsbRequest
، لإرسال البيانات واستلامها والتحكّم في الرسائل من جهاز USB أو إليه، في آنٍ واحد وغير متزامنUsbConstants
، التي توفّر ثوابت للتعريف بأنواع نقاط النهاية وفئات الأجهزة وما إلى ذلك
تجدر الإشارة إلى أنّه على الرغم من تضمين حزمة USB في النظام الأساسي، فإنّ الشركات المصنّعة تُحدِّد الدعم الفعلي لمضيف USB وأوضاع الأجهزة الملحقة المفتوحة على أجهزة محدَّدة. وبشكل خاص، يعتمد وضع المضيف على أجهزة وحدة تحكم USB المناسبة في الجهاز الذي يعمل بنظام التشغيل Android.
بالإضافة إلى ذلك، يمكن للمطوّرين طلب فلترة على Google Play كي لا تكون تطبيقاتهم متاحة للمستخدمين الذين لا توفّر أجهزتهم دعم USB المناسب. لطلب التصفية، أضف أحد العنصرين التاليين أو كليهما إلى بيان التطبيق، حسب الحاجة:
- إذا كان التطبيق يجب أن يكون مرئيًا فقط للأجهزة التي تتوافق مع وضع مضيف USB (اتصال أجهزة USB)، يمكنك تعريف هذا العنصر:
<uses-feature android:name="android.hardware.usb.host" android:required="true">
- إذا كان التطبيق يجب أن يكون مرئيًا فقط للأجهزة التي تتوافق مع ملحقات USB (اتصال مضيفات USB)، يمكنك توضيح هذا العنصر:
<uses-feature android:name="android.hardware.usb.accessory" android:required="true">
للحصول على معلومات كاملة عن كيفية تطوير التطبيقات التي تتفاعل مع ملحقات USB، يُرجى الاطّلاع على مستندات المطوّرين.
للاطّلاع على نماذج التطبيقات التي تستخدم واجهة برمجة التطبيقات لمضيف USB، يمكنك الاطّلاع على اختبار AB وMissile Launcher.
واجهة برمجة تطبيقات MTP/PTP
يعرض نظام التشغيل Android 3.1 واجهة برمجة تطبيقات MTP جديدة تتيح للتطبيقات التفاعل مباشرةً مع الكاميرات المتصلة وأجهزة PTP الأخرى. تسهّل واجهة برمجة التطبيقات الجديدة على التطبيقات تلقّي الإشعارات عند توصيل الأجهزة وإزالتها، وإدارة الملفات والتخزين على هذه الأجهزة، ونقل الملفات والبيانات الوصفية منها وإليها. تنفّذ واجهة برمجة تطبيقات MTP مجموعة فرعية من بروتوكول نقل الصور (PTP) من مواصفات بروتوكول نقل الوسائط (MTP).
تتوفر واجهة برمجة تطبيقات MTP في حزمة android.mtp
وتوفر الفئات التالية:
- يحتوي
MtpDevice
على جهاز MTP متصلاً عبر ناقل مضيف USB. يمكن للتطبيق إنشاء مثيل لكائن من هذا النوع ثم استخدام طرقه للحصول على معلومات حول الجهاز والكائنات المخزنة عليه، بالإضافة إلى فتح الاتصال ونقل البيانات. وتشمل بعض الطرق ما يلي:- تعرض دالة
getObjectHandles()
قائمة بالمُقبضات لكل العناصر على الجهاز التي تطابق تنسيقًا محددًا وعنصرًا رئيسيًا. للحصول على معلومات حول عنصر، يمكن للتطبيق تمرير اسم معرِّف إلىgetObjectInfo()
. - يتيح
importFile()
للتطبيق نسخ البيانات لعنصر إلى ملف في مساحة تخزين خارجية. قد يستغرق هذا الاتصال فترة زمنية عشوائية حسب حجم البيانات وسرعة الأجهزة، لذلك يجب أن يتم إجراؤها من خلال سلسلة من الخيوط المتشابكة. open()
يتيح للتطبيق فتح جهاز MTP/PTP متصل.- تعرض
getThumbnail()
الصورة المصغّرة للكائن كصفيف بايت.
- تعرض دالة
- يحتوي
MtpStorageInfo
على معلومات حول وحدة تخزين على جهاز MTP، بما يتوافق مع "مجموعة بيانات StorageInfo" الموضّحة في الفقرة 5.2.2 من مواصفات بروتوكول نقل الوسائط (MTP). تسمح الطرق في الفئة للتطبيق بالحصول على سلسلة وصف وحدة التخزين والمساحة الخالية والحد الأقصى لسعة التخزين ومعرّف التخزين ومعرّف وحدة التخزين. - يحتوي
MtpDeviceInfo
على معلومات حول جهاز MTP التوافق مع "مجموعة بيانات DeviceInfo" الموضحة في الفقرة 5.1.1 من مواصفات بروتوكول نقل الوسائط (MTP). تسمح الطرق في الفئة للتطبيقات بالحصول على الشركة المصنعة للجهاز وطرازه ورقمه التسلسلي وإصداره. - يحتفظ
MtpObjectInfo
بمعلومات حول كائن مخزَّن على جهاز MTP، بما يتوافق مع "مجموعة بيانات ObjectInfo" الموضحة في الفقرة 5.3.1 من مواصفات بروتوكول نقل الوسائط (MTP). تتيح الطرق في الفئة للتطبيقات الحصول على حجم الكائن وتنسيق البيانات ونوع الارتباط وتاريخ الإنشاء ومعلومات الصورة المصغرة. - توفر
MtpConstants
ثوابت للتعريف برموز تنسيق ملف MTP ونوع الاقتران وحالة الحماية.
دعم أجهزة الإدخال الجديدة وأحداث الحركة
يعمل Android 3.1 على توسيع النظام الفرعي للإدخال للتوافق مع أجهزة الإدخال الجديدة وأنواع جديدة من أحداث الحركة في جميع طرق العرض والنوافذ. ويمكن للمطوّرين الاعتماد على هذه الإمكانات للسماح للمستخدمين بالتفاعل مع تطبيقاتهم باستخدام أجهزة الماوس وكرات التعقب وذراع التحكم ولوحات الألعاب وغيرها من الأجهزة، بالإضافة إلى لوحات المفاتيح وشاشات اللمس.
لمعالجة إدخال الماوس وعجلة التمرير وكرة التعقب، يدعم النظام الأساسي إجراءين جديدين لأحداث الحركة:
ACTION_SCROLL
، الذي يصف موقع المؤشر الذي تبدأ فيه حركة تمرير لا تعمل باللمس، مثل عجلة تمرير الماوس. في MotionEvent، تحدّد قيمة المحورينAXIS_HSCROLL
وAXIS_VSCROLL
حركة التمرير النسبية.ACTION_HOVER_MOVE
، يعرض الموضع الحالي للماوس عند عدم الضغط على أي أزرار، بالإضافة إلى أي نقاط وسيطة منذ آخر حدثHOVER_MOVE
. لا تتوفر بعد إشعارات التمرير والخروج.
لإتاحة استخدام ذراع التحكّم ولوحات التحكّم في الألعاب، تتضمّن الفئة InputDevice
مصادر أجهزة الإدخال الجديدة التالية:
SOURCE_CLASS_JOYSTICK
- يحتوي الجهاز المصدر على محاور ذراع تحكُّم.SOURCE_CLASS_BUTTON
- يحتوي الجهاز المصدر على أزرار أو مفاتيحSOURCE_GAMEPAD
: يتضمّن الجهاز المصدر أزرارًا في لوحة الألعاب، مثلKEYCODE_BUTTON_A
أوKEYCODE_BUTTON_B
. يشير إلى ما يلي:SOURCE_CLASS_BUTTON
SOURCE_JOYSTICK
- يحتوي الجهاز المصدر على محاور ذراع تحكُّم. يشير إلى SOURCE_Class_JOYSTICK.
لوصف أحداث الحركة من هذه المصادر الجديدة، بالإضافة إلى أحداث الفئران وكرات التعقب، أصبح النظام الأساسي يحدّد الآن رموز المحاور على MotionEvent
، بالطريقة نفسها التي تحدّد بها الرموز الرئيسية على KeyEvent
. تشمل رموز المحاور الجديدة لذراع التحكم
ووحدات التحكم في الألعاب
AXIS_HAT_X
وAXIS_HAT_Y
وAXIS_RTRIGGER
وAXIS_ORIENTATION
وAXIS_THROTTLE
وغير ذلك الكثير.
تمثّل محاور MotionEvent
الحالية AXIS_X
وAXIS_Y
وAXIS_PRESSURE
وAXIS_SIZE
وAXIS_TOUCH_MAJOR
وAXIS_TOUCH_MINOR
وAXIS_TOOL_MAJOR
وAXIS_TOOL_MINOR
وAXIS_ORIENTATION
.
بالإضافة إلى ذلك، يحدد MotionEvent
عددًا من رموز المحاور العامة التي يتم استخدامها عندما لا يعرف إطار العمل كيفية تعيين محور معين. يمكن لأجهزة معينة استخدام رموز المحاور العامة لتمرير بيانات الحركة المخصصة إلى التطبيقات. للحصول على قائمة كاملة بالمحاور وتفسيراتها المقصودة، يمكنك الاطّلاع على مستندات فئة MotionEvent
.
توفّر المنصّة أحداث الحركة للتطبيقات على دفعات، لذلك قد يتضمّن حدث واحد موضعًا حاليًا وما يُعرف باسم الحركات التاريخية المتعدّدة.
يجب أن تستخدم التطبيقات getHistorySize()
لمعرفة عدد النماذج السابقة، ثم استرداد جميع النماذج السابقة ومعالجتها من أجل استخدام getHistoricalAxisValue()
. بعد ذلك، يجب أن تعالج التطبيقات العيّنة الحالية باستخدام السمة getAxisValue()
.
يمكن استرجاع بعض المحاور باستخدام طرق موصّلات خاصة. على سبيل المثال، بدلاً من طلب الرقم getAxisValue()
، يمكن للتطبيقات الاتصال بـ getX()
. تشمل المحاور التي تتضمّن موصّلات مدمجة AXIS_X
وAXIS_Y
وAXIS_PRESSURE
وAXIS_SIZE
وAXIS_TOUCH_MAJOR
وAXIS_TOUCH_MINOR
وAXIS_TOOL_MAJOR
وAXIS_TOOL_MINOR
وAXIS_ORIENTATION
.
لكل جهاز إدخال رقم تعريف فريد يعيّنه النظام وقد يوفّر أيضًا مصادر متعددة. عندما يوفر أي جهاز مصادر متعددة، يمكن لأكثر من مصدر
أن يوفر بيانات المحور باستخدام نفس المحور. على سبيل المثال، إنّ حدث اللمس القادم من مصدر اللمس يستخدم المحور X لبيانات موضع الشاشة، بينما سيستخدم حدث ذراع التحكّم القادم من مصدر ذراع التحكّم المحور X لموضع العصا بدلاً من ذلك. لهذا السبب، من المهم للتطبيقات تفسير قيم المحور
وفقًا للمصدر الذي نشأت منه. عند التعامل مع حدث متحرّك، يجب أن تستخدم التطبيقات طرقًا ضمن الفئة InputDevice
لتحديد المحاور التي يتيحها الجهاز أو المصدر. على وجه التحديد، يمكن للتطبيقات استخدام getMotionRanges()
للبحث عن جميع محاور الجهاز أو جميع محاور مصدر معيّن للجهاز. في كلتا الحالتين، تحدّد معلومات النطاق الخاصة بالمحاور المعروضة في الكائن InputDevice.MotionRange
المصدر لكل قيمة من قيم المحور.
أخيرًا، بما أنّ أحداث الحركة من ذراع التحكّم ولوحات الألعاب والفأرة
وكرات التعقب ليست أحداث لمس، تضيف المنصة طريقة جديدة لمعاودة الاتصال
لتمريرها إلى View
كأحداث متحركة "عامة".
وعلى وجه التحديد، تُبلِغ عن أحداث الحركة التي لا تعمل باللمس إلى
View
من خلال مكالمة إلى onGenericMotionEvent()
بدلاً من onTouchEvent()
.
توزّع المنصة أحداث الحركة العامة بشكل مختلف حسب فئة مصدر الحدث. تنتقل فعاليات SOURCE_CLASS_POINTER
إلى View
أسفل المؤشر، تمامًا مثل آلية عمل أحداث اللمس. يتم توجيه جميع المستخدمين الآخرين إلى View
محل التركيز حاليًا.
على سبيل المثال، يعني ذلك أنّه يجب التركيز على View
لتلقّي أحداث ذراع التحكّم. وإذا لزم الأمر، يمكن للتطبيقات معالجة هذه الأحداث
على مستوى "النشاط" أو "مربّع الحوار" من خلال تطبيق علامة onGenericMotionEvent()
فيهما بدلاً من ذلك.
للاطّلاع على نموذج تطبيق يستخدم أحداث حركة ذراع التحكّم، راجِع GameControllerInput وGameView.
واجهة برمجة تطبيقات RTP
يعرض Android 3.1 واجهة برمجة التطبيقات لحزمة بروتوكول النقل في الوقت الفعلي (RTP) المدمجة، والتي يمكن للتطبيقات استخدامها لإدارة بث البيانات عند الطلب أو البيانات التفاعلية. وعلى وجه الخصوص، يمكن للتطبيقات التي توفر بروتوكول الصوت عبر بروتوكول الصوت على الإنترنت (VoIP) وميزة "الضغط إلى التحدث" و"عقد المؤتمرات" و"بث الصوت" استخدام واجهة برمجة التطبيقات لبدء الجلسات ونقل أو استقبال عمليات بث البيانات عبر أي شبكة متاحة.
تتوفّر واجهة برمجة التطبيقات RTP API في حزمة "android.net.rtp
". وتشمل الصفوف ما يلي:
RtpStream
، وهي الفئة الأساسية لأحداث البث التي ترسل وتستلم حِزم الشبكة مع حمولات الوسائط عبر بروتوكول RTP.AudioStream
، وهي فئة فرعية منRtpStream
تنقل أحمال الصوت عبر بروتوكول RTP.AudioGroup
، وهو مركز محلي لإدارة الصوت لإدارة ومزج مكبّرات الصوت والميكروفون وAudioStream
في الجهاز.AudioCodec
، التي تحتوي على مجموعة من برامج الترميز التي تحدّدها لـAudioStream
.
لإتاحة عقد الاجتماعات الصوتية واستخدامات مشابهة، يُنشئ أحد التطبيقات مثيلاً لفئتَين كنقاط نهاية للبث:
AudioStream
يحدد نقطة نهاية بعيدة ويتكون من ربط الشبكة وAudioCodec
تم إعداده.AudioGroup
تمثل نقطة النهاية المحلية لدالةAudioStream
واحدة أو أكثر. يمزجAudioGroup
بين كلAudioStream
ويتفاعل اختياريًا مع مكبر صوت الجهاز والميكروفون في الوقت نفسه.
وتتضمن أبسط الاستخدامات نقطة نهاية واحدة عن بُعد ونقطة نهاية محلية.
بالنسبة إلى الاستخدامات الأكثر تعقيدًا، يُرجى الاطّلاع على القيود الموضّحة في
AudioGroup
.
لاستخدام واجهة برمجة التطبيقات RTP API، يجب أن تطلب التطبيقات إذنًا من المستخدم من خلال تقديم بيان عن <uses-permission
android:name="android.permission.INTERNET">
في ملفات البيان. للحصول على ميكروفون الجهاز، يجب أيضًا الحصول على إذن <uses-permission
android:name="android.permission.RECORD_AUDIO">
.
تطبيقات مصغّرة يمكن تغيير حجمها
بدءًا من نظام التشغيل Android 3.1، يمكن للمطوّرين جعل أدوات الشاشة الرئيسية قابلة لتغيير الحجم، أفقيًا أو رأسيًا أو على كلا المحورين. يضغط المستخدمون مع الاستمرار على الأداة لإظهار مقابض تغيير الحجم الخاصة بها، ثم يسحبون المقبضين الأفقي و/أو الرأسي لتغيير الحجم على شبكة التخطيط.
يستطيع المطوّرون إتاحة تغيير حجم أي تطبيق مصغّر على الشاشة الرئيسية من خلال تحديد سمة resizeMode
في البيانات الوصفية AppWidgetProviderInfo
الخاصة بالأداة. وتشمل قيم السمة resizeMode
"horizontal" و"vertical" و "none".
لتعريف تطبيق مصغّر على أنّه قابل لتغيير الحجم أفقيًا وعموديًا، أدخِل القيمة
"horizontal|vertical".
إليك مثال على ذلك:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="294dp" android:minHeight="72dp" android:updatePeriodMillis="86400000" android:previewImage="@drawable/preview" android:initialLayout="@layout/example_appwidget" android:configure="com.example.android.ExampleAppWidgetConfigure" android:resizeMode="horizontal|vertical" > </appwidget-provider>
لمزيد من المعلومات حول تطبيقات الشاشة الرئيسية، يُرجى الاطّلاع على مستندات أدوات التطبيقات.
إطار عمل الصور المتحركة
- فئة ViewPropertyAnimator الجديدة
- توفّر فئة
ViewPropertyAnimator
الجديدة طريقة سهلة للمطوّرين لتحريك سمات محدّدة على عناصرView
. تعمل الفئة بشكل تلقائي على تحسين الصور المتحركة في السمات وتسهّل إدارة عدة صور متحركة متزامنة على عنصرView
.ويمكن بسهولة استخدام
ViewPropertyAnimator
. لتحريك سماتView
، يمكنك استدعاءanimate()
لإنشاء كائنViewPropertyAnimator
لذلكView
. استخدِم الطرق المتاحة فيViewPropertyAnimator
لتحديد السمة التي سيتم استخدامها لتحريكها وكيفية تحريكها. على سبيل المثال، لجعلView
شفافًا، اطلبalpha(0);
. يعالج الكائنViewPropertyAnimator
تفاصيل تهيئة فئةAnimator
الأساسية وبدئها، ثم عرض الرسوم المتحركة.
- توفّر فئة
- لون خلفية الصورة المتحركة
- تتيح لك الطريقتان
getBackgroundColor()
وsetBackgroundColor(int)
الجديدتان الحصول على/ضبط لون الخلفية خلف الصور المتحركة، وذلك في الصور المتحركة للنوافذ فقط. في الوقت الحالي، يجب أن تكون الخلفية سوداء مع أي مستوى ألفا مطلوب.
- تتيح لك الطريقتان
- الحصول على كسر متحرك من
ViewAnimator
- تتيح لك طريقة
getAnimatedFraction()
الجديدة الحصول على الكسر الحالي للحركة، أي الكسر المنقضي/الاستيفاء الذي تم استخدامه في آخر تحديث للإطار، منValueAnimator
.
- تتيح لك طريقة
إطار عمل واجهة المستخدم
- عرض مفروض لطبقة
- تتيح طريقة
buildLayer()
الجديدة للتطبيق فرض إنشاء طبقة عرض وعرض طبقة العرض فيها على الفور. على سبيل المثال، يمكن أن يستخدم أحد التطبيقات هذه الطريقة لتحويل عرض إلى طبقته قبل بدء الرسوم المتحركة. إذا كان العرض معقدًا، فإن عرضه في الطبقة قبل بدء الرسوم المتحركة سيتجنب تخطي الإطارات.
- تتيح طريقة
- مسافة الكاميرا
- يمكن أن تستخدم التطبيقات طريقة جديدة
setCameraDistance(float)
لضبط المسافة من الكاميرا إلى طريقة عرض. يمنح ذلك التطبيقات تحكمًا محسّنًا في التحويلات ثلاثية الأبعاد للعرض، مثل التدوير.
- يمكن أن تستخدم التطبيقات طريقة جديدة
- الحصول على عرض التقويم من "أداة اختيار التاريخ"
- تتيح لك طريقة
getCalendarView()
الجديدة الحصول علىCalendarView
من مثيلDatePicker
.
- تتيح لك طريقة
- الحصول على طلبات لمعاودة الاتصال عند فصل المشاهدات
- تتيح لك طريقة
View.OnAttachStateChangeListener
الجديدة تلقّي استدعاءات عند إرفاق عرض أو فصله عن نافذته. يمكنك استخدامaddOnAttachStateChangeListener()
لإضافة مستمع وaddOnAttachStateChangeListener()
لإزالته.
- تتيح لك طريقة
- أداة الاستماع إلى شريط التنقّل للجزء، توقيع onInflate() الجديد
- توفّر الطريقة الجديدة،
setOnBreadCrumbClickListener()
، عنصر جذب للسماح للتطبيقات باعتراض النقرات على شريط التنقّل المجزأ، واتخاذ أي إجراء مطلوب قبل الانتقال إلى إدخال الحزمة الخلفية أو الجزء الذي تم النقر عليه. - في الصف
Fragment
، تم إيقافonInflate(attrs, savedInstanceState)
نهائيًا. يُرجى استخدامonInflate(activity, attrs, savedInstanceState)
بدلاً منها.
- توفّر الطريقة الجديدة،
- عرض نتيجة البحث في علامة تبويب جديدة
- يتيح لك مفتاح بيانات
EXTRA_NEW_SEARCH
لأهدافACTION_WEB_SEARCH
فتح عملية بحث في علامة تبويب جديدة داخل المتصفح بدلاً من علامة تبويب حالية.
- يتيح لك مفتاح بيانات
- مؤشر نص قابل للرسم
- يمكنك الآن تحديد قابل للرسم لاستخدامه كمؤشر نص باستخدام سمة المورد الجديد
textCursorDrawable
.
- يمكنك الآن تحديد قابل للرسم لاستخدامه كمؤشر نص باستخدام سمة المورد الجديد
- إعداد حساب الطفل المعروض في طرق العرض عن بُعد
- تتوفر طريقة ملائمة جديدة، وهي
setDisplayedChild(viewId, childIndex)
، في الفئات الفرعيةRemoteViews
للسماح لك بضبط الفئة الفرعية المعروضة فيViewAnimator
وAdapterViewAnimator
، مثلAdapterViewFlipper
وStackView
وViewFlipper
وViewSwitcher
.
- تتوفر طريقة ملائمة جديدة، وهي
- مفاتيح عامة لوحدات التحكّم في الألعاب وأجهزة الإدخال الأخرى
- يضيف
KeyEvent
مجموعة من رموز المفاتيح العامة لتلائم أزرار لوحة الألعاب. تضيف الفئة أيضًاisGamepadButton(int)
والعديد من الطرق الأخرى المساعِدة للتعامل مع رموز المفاتيح.
- يضيف
الرسومات
- الأدوات المساعدة في إدارة الصور النقطية
- يتيح
setHasAlpha(boolean)
للتطبيق الإشارة إلى أن جميع وحدات البكسل في الصورة النقطية معروفة بأنها معتمة (خطأ) أو أن بعض وحدات البكسل قد تحتوي على قيم ألفا غير معتمة (true). لاحظ أنه في بعض التهيئات (مثل RGB_565)، يتم تجاهل هذا الاستدعاء، لأنه لا يدعم قيم ألفا لكل بكسل. وهذا يعني أنه تلميح رسم، كما هو الحال في بعض الحالات، يمكن للصورة النقطية التي تُعرف بأنها معتمة أن تأخذ حالة رسم أسرع من تلك التي قد تحتوي على قيم ألفا غير معتمة لكل بكسل. - يحصل
getByteCount()
على حجم الصورة النقطية بالبايت. - ويتيح
getGenerationId()
للتطبيق معرفة ما إذا تم تعديل الصورة النقطية أم لا، مثل التخزين المؤقت. - تحدّد
sameAs(android.graphics.Bitmap)
ما إذا كانت الصورة النقطية المحددة تختلف عن الصورة النقطية الحالية من حيث البُعد أو الضبط أو بيانات البكسل.
- يتيح
- ضبط إعدادات الموقع الجغرافي للكاميرا وتدويرها
- يضيف
Camera
طريقتين جديدتينrotate()
وsetLocation()
للتحكم في موقع الكاميرا، لعمليات التحويل الثلاثية الأبعاد.
- يضيف
الشبكة
- قفل شبكة Wi-Fi عالي الأداء
- يتيح قفل Wi-Fi الجديد العالي الأداء للتطبيقات الحفاظ على
اتصالات Wi-Fi عالية الأداء حتى عندما تكون شاشة الجهاز مغلقة.
يمكن للتطبيقات التي تبث الموسيقى أو الفيديو أو الصوت لفترات طويلة الحصول على
قفل Wi-Fi عالي الأداء لضمان أداء البث حتى عندما تكون الشاشة
مطفأة. وبما أنه يتم استخدام قدر أكبر من الطاقة، من المفترض أن تحصل التطبيقات على
اتصال Wi-Fi عالي الأداء عند الحاجة
إلى اتصال نشط لفترة طويلة.
لإنشاء قفل عالي الأداء، اضبط
WIFI_MODE_FULL_HIGH_PERF
على أنّه وضع القفل في مكالمة إلىcreateWifiLock()
.
- يتيح قفل Wi-Fi الجديد العالي الأداء للتطبيقات الحفاظ على
اتصالات Wi-Fi عالية الأداء حتى عندما تكون شاشة الجهاز مغلقة.
يمكن للتطبيقات التي تبث الموسيقى أو الفيديو أو الصوت لفترات طويلة الحصول على
قفل Wi-Fi عالي الأداء لضمان أداء البث حتى عندما تكون الشاشة
مطفأة. وبما أنه يتم استخدام قدر أكبر من الطاقة، من المفترض أن تحصل التطبيقات على
اتصال Wi-Fi عالي الأداء عند الحاجة
إلى اتصال نشط لفترة طويلة.
- المزيد من إحصاءات حركة المرور
- يمكن للتطبيقات الآن الوصول إلى إحصاءات حول المزيد من أنواع استخدام الشبكة
باستخدام طرق جديدة في
TrafficStats
. يمكن للتطبيقات استخدام الطرق للحصول على إحصائيات بروتوكول مخطط بيانات المستخدم (UDP) وعدد الحزم ووحدات بايت نقل/استلام حمولة البيانات في بروتوكول التحكم بالنقل (TCP) والشرائح لمعرّف فريد محدد.
- يمكن للتطبيقات الآن الوصول إلى إحصاءات حول المزيد من أنواع استخدام الشبكة
باستخدام طرق جديدة في
- اسم مستخدم مصادقة SIP
- يمكن للتطبيقات الآن الحصول على اسم مستخدم مصادقة SIP وإعداده لملف شخصي
باستخدام الطريقتين الجديدتين
getAuthUserName()
وsetAuthUserName()
.
- يمكن للتطبيقات الآن الحصول على اسم مستخدم مصادقة SIP وإعداده لملف شخصي
باستخدام الطريقتين الجديدتين
تطبيق إدارة التنزيل
- معالجة عمليات التنزيل المكتملة
- ويمكن للتطبيقات الآن بدء عمليات تنزيل لإعلام المستخدمين عند الإكمال فقط. لبدء هذا النوع من التنزيل، تمرر التطبيقات
VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION
في الطريقةsetNotificationVisibility()
لكائن الطلب. - طريقة جديدة، وهي
addCompletedDownload()
، تتيح للتطبيق إضافة ملف إلى قاعدة بيانات عمليات التنزيل، حتى يتمكن تطبيق "عمليات التنزيل" من إدارته.
- ويمكن للتطبيقات الآن بدء عمليات تنزيل لإعلام المستخدمين عند الإكمال فقط. لبدء هذا النوع من التنزيل، تمرر التطبيقات
- عرض عمليات التنزيل مرتّبة حسب الحجم
- ويمكن للتطبيقات بدء تشغيل تطبيق "عمليات التنزيل" في وضع الترتيب حسب الحجم من خلال
إضافة العنصر
INTENT_EXTRAS_SORT_BY_SIZE
الإضافي الجديد إلى الغرضACTION_VIEW_DOWNLOADS
.
- ويمكن للتطبيقات بدء تشغيل تطبيق "عمليات التنزيل" في وضع الترتيب حسب الحجم من خلال
إضافة العنصر
إطار عمل أداة IME
- الحصول على مفتاح القيمة الإضافية لطريقة الإدخال
- تضيف السمة
InputMethodSubtype
الطريقةcontainsExtraValueKey()
للتحقق مما إذا كان يتم تخزين سلسلة ExtraValue للنوع الفرعي والطريقةgetExtraValueOf()
لاستخراج قيمة أساسية معيّنة من خريطة تجزئة ExtraValue.
- تضيف السمة
الوسائط
- تنسيقات المحتوى الصوتي الجديدة
- يتيح إطار عمل الوسائط إمكانية استخدام محتوى ADTS AAC الأولي، ولتحسين بث الصوت، بالإضافة إلى إمكانية تشغيل صوت FLAC للحصول على المحتوى الصوتي المضغوط بأعلى جودة (بدون فقدان البيانات). راجِع مستند تنسيقات الوسائط المتوافقة للحصول على مزيد من المعلومات.
عناصر التحكم في التشغيل على التطبيقات المتوقفة
بدءًا من نظام التشغيل Android 3.1، يتتبع مدير حزم النظام التطبيقات التي تكون في حالة متوقفة ويوفر وسيلة للتحكم في تشغيلها من العمليات التي تتم في الخلفية والتطبيقات الأخرى.
لاحظ أن حالة إيقاف التطبيق ليست هي نفسها حالة توقف النشاط. يدير النظام هاتين الحالتين المتوقفتين بشكل منفصل.
ويحدِّد النظام الأساسي علامتَين جديدتَين للأهداف تتيحان للمرسِل تحديد ما إذا كان يجب السماح لـ Intent بتنشيط المكونات في التطبيق المتوقف.
FLAG_INCLUDE_STOPPED_PACKAGES
- أدرِج فلاتر الأهداف للتطبيقات المتوقفة في قائمة الأهداف المحتملة التي يجب اتخاذ إجراء بشأنها.FLAG_EXCLUDE_STOPPED_PACKAGES
— استبعاد فلاتر الأهداف للتطبيقات المتوقفة من قائمة الأهداف المحتملة.
في حال عدم تحديد أي من هاتين العلامتين أو كليهما في غرض معيّن، يكون السلوك التلقائي هو تضمين فلاتر التطبيقات المتوقفة في قائمة الأهداف المحتملة.
تجدر الإشارة إلى أنّ النظام يضيف السمة FLAG_EXCLUDE_STOPPED_PACKAGES
إلى جميع أغراض البثّ. ويفعل ذلك لمنع عمليات البث من الخدمات التي تعمل في الخلفية
من تشغيل مكونات التطبيقات المتوقفة عن غير قصد أو بدون داعٍ.
يمكن لخدمة أو تطبيق في الخلفية إلغاء هذا السلوك من خلال إضافة العلامة FLAG_INCLUDE_STOPPED_PACKAGES
إلى أهداف البث التي يجب السماح لها بتفعيل التطبيقات المتوقفة.
تكون التطبيقات في حالة توقف عند تثبيتها لأول مرة ولكن لم يتم تشغيلها بعد، وعندما يوقفها المستخدم يدويًا (في قسم "إدارة التطبيقات").
إشعار بإطلاق التطبيق وترقيته لأول مرة
تضيف المنصة إشعارًا محسّنًا عند إطلاق التطبيق لأول مرة وترقيات من خلال إجراءين جديدين من إجراءات النية:
ACTION_PACKAGE_FIRST_LAUNCH
— يتم إرسالها إلى حزمة مثبّت أحد التطبيقات عند تشغيل التطبيق لأول مرة (أي في المرة الأولى التي يتم فيها نقل التطبيق من حالة توقف). تحتوي البيانات على اسم الحزمة.ACTION_MY_PACKAGE_REPLACED
: تُعلِم هذه الميزة أحد التطبيقات بأنّه تم تحديثه، مع تثبيت إصدار جديد على إصدار حالي. يتم إرسال هذه المعلومات فقط إلى التطبيق الذي تم استبداله. لا تحتوي على أي بيانات إضافية. لاستلامه، حدد فلتر أهداف لهذا الإجراء. يمكنك استخدام الغرض لتشغيل التعليمات البرمجية التي تساعد في إعادة تطبيقك إلى حالة التشغيل الصحيحة بعد الترقية.يتم إرسال هذا الغرض إلى التطبيق مباشرةً، ولكن فقط إذا تمت ترقيته في حالة بدء تشغيله (وليس في حالة الإيقاف).
برامج الخدمات الأساسية
- ذاكرة التخزين المؤقت للتطبيقات الأقل استخدامًا
- تتيح فئة
LruCache
الجديدة لتطبيقاتك الاستفادة من التخزين المؤقت الفعّال. ويمكن للتطبيقات استخدام الفئة لتقليل الوقت المستغرق في معالجة البيانات أو تنزيلها من الشبكة، مع الاحتفاظ بذاكرة تخزين معقولة للبيانات المخزَّنة مؤقتًا.إنّLruCache
عبارة عن ذاكرة تخزين مؤقت تحتفظ بإشارات قوية إلى عدد محدود من القيم. في كل مرة يتم فيها الوصول إلى قيمة، يتم نقلها إلى رأس قائمة الانتظار. عند إضافة قيمة إلى ذاكرة التخزين المؤقت الكاملة، يتم التخلص من القيمة الموجودة في نهاية قائمة الانتظار هذه وقد تصبح مؤهلة لجمع البيانات المهملة.
- تتيح فئة
- واصف الملف باسم
int
- يمكنك الآن الحصول على عدد صحيح لواصف الملف الأصلي لـ
ParcelFileDescriptor
باستخدام إحدى الطريقتين الجديدتينgetFd()
أوdetachFd()
.
- يمكنك الآن الحصول على عدد صحيح لواصف الملف الأصلي لـ
مجموعة أدوات الويب
- ملفات تعريف الارتباط في مخطّط الملفات
- تتوافق "
CookieManager
" الآن مع ملفات تعريف الارتباط التي تستخدم مخطط معرّف الموارد المنتظم (URI) "file:
". يمكنك استخدامsetAcceptFileSchemeCookies()
لتفعيل/إيقاف دعم ملفات تعريف ارتباط نظام الملفات، قبل إنشاء مثيلWebView
أوCookieManager
. في مثالCookieManager
، يمكنك التحقّق مما إذا كانت ملفات تعريف الارتباط في نظام الملفات مفعّلة من خلال طلبallowFileSchemeCookies()
.
- تتوافق "
- إشعار بطلب تسجيل الدخول
- ولدعم ميزات تسجيل الدخول التلقائي للمتصفِّح التي تم تقديمها في Android 3.0، تُعلِم الطريقة
الجديدة
onReceivedLoginRequest()
التطبيق المضيف بمعالجة طلب تسجيل الدخول التلقائي للمستخدم.
- ولدعم ميزات تسجيل الدخول التلقائي للمتصفِّح التي تم تقديمها في Android 3.0، تُعلِم الطريقة
الجديدة
- تمت إزالة الفئات والواجهات.
- تمت إزالة العديد من الفئات والواجهات من واجهة برمجة التطبيقات العامة، بعد أن كانت متوقفة سابقًا. يمكنك الاطّلاع على تقرير اختلافات واجهة برمجة التطبيقات للاطّلاع على مزيد من المعلومات.
المتصفح
يضيف تطبيق المتصفح الميزات التالية لدعم تطبيقات الويب:
- إتاحة التشغيل المضمّن للفيديو المضمّن في علامة
<video>
من HTML5: يتم تسريع عمليات التشغيل باستخدام الأجهزة كلما أمكن ذلك. - توفير طبقات لعناصر الموضع الثابت لجميع المواقع الإلكترونية (للأجهزة الجوّالة والكمبيوتر المكتبي).
ثوابت الميزات الجديدة
تُضيف المنصة ثوابت ميزات أجهزة جديدة يمكن للمطوّرين الإفصاح عنها
في بيانات التطبيق لإبلاغ الكيانات الخارجية مثل Google
Play بمتطلبات التطبيق بشأن إمكانات الأجهزة الجديدة المتوافقة
في هذا الإصدار من النظام الأساسي. يفصح المطوّرون عن هذه العناصر وغيرها من العناصر الثابتة
في عناصر بيان <uses-feature>
.
android.hardware.usb.accessory
— يستخدم التطبيق واجهة برمجة تطبيقات USB للاتصال بالأجهزة الخارجية المتصلة عبر USB والوظيفة كمضيفات.android.hardware.usb.host
— يستخدم التطبيق USB API للتواصل مع الأجهزة الخارجية المتصلة عبر USB والعمل كأجهزة.
يفلتر Google Play التطبيقات استنادًا إلى الميزات الموضَّحة في عناصر بيان <uses-feature>
. للحصول على مزيد من المعلومات حول
بيان الميزات في بيان التطبيق، اقرأ فلاتر Google Play.
تقرير الاختلافات في واجهة برمجة التطبيقات
للحصول على عرض تفصيلي لجميع التغييرات في واجهة برمجة التطبيقات في الإصدار Android 3.1 (المستوى 12 من واجهة برمجة التطبيقات)، يمكنك الاطّلاع على تقرير الاختلافات في واجهة برمجة التطبيقات.
مستوى واجهة برمجة التطبيقات
يقدم نظام Android 3.1 إصدارًا محدثًا من واجهة برمجة التطبيقات لإطار العمل. يتم تعيين معرّف عدد صحيح لواجهة برمجة التطبيقات Android 3.1 وهو 12، ويتم تخزينه في النظام نفسه. هذا المعرف، الذي يُطلق عليه "مستوى واجهة برمجة التطبيقات"، يسمح للنظام بتحديد ما إذا كان التطبيق متوافقًا مع النظام أم لا، وذلك قبل تثبيته.
لاستخدام واجهات برمجة التطبيقات التي تم تقديمها في Android 3.1 ضمن تطبيقك، عليك تجميع التطبيق مقابل مكتبة Android المتوفرة في النظام الأساسي Android 3.1 SDK. بناءً على احتياجاتك، قد تحتاج أيضًا إلى إضافة السمة android:minSdkVersion="12"
إلى العنصر <uses-sdk>
في بيان التطبيق.
للمزيد من المعلومات، يُرجى قراءة المقالة ما هو مستوى واجهة برمجة التطبيقات؟