مستوى واجهة برمجة التطبيقات: 12
تتوفّر منصّة Android 3.1
(HONEYCOMB_MR1
) للمطوّرين كأحد
المكوّنات القابلة للتنزيل لحزمة تطوير البرامج (SDK) لنظام التشغيل Android. تتضمّن المنصة القابلة للتنزيل
مكتبة Android وصورة نظام، بالإضافة إلى مجموعة من أشكال المحاكي وغيرها. لا يتضمّن النظام الأساسي القابل للتنزيل أي مكتبات خارجية.
تتوفّر منصّة Android 3.1 للمطوّرين كأحد المكونات التي يمكن تنزيلها لحزمة تطوير البرامج (SDK) لنظام التشغيل Android. تتضمن المنصة القابلة للتنزيل مكتبة Android وصورة نظام، بالإضافة إلى مجموعة من مظاهر و أخرى. لبدء تطوير التطبيقات أو اختبارها وفقًا للإصدار 3.1 من نظام التشغيل Android، استخدِم "مدير حزمة تطوير البرامج (SDK) لنظام التشغيل Android" لتنزيل النظام الأساسي في حزمة تطوير البرامج (SDK) الخاصة بك.
نظرة عامة على واجهة برمجة التطبيقات
تقدّم الأقسام أدناه نظرة عامة فنية على الميزات الجديدة التي يوفّرها الإصدار 3.1 من Android للمطوّرين، بما في ذلك الميزات الجديدة والتغييرات في واجهة برمجة التطبيقات للإطار الأساسي مقارنةً بالإصدار السابق.
واجهات برمجة تطبيقات USB
يقدم Android 3.1 واجهات برمجة تطبيقات جديدة وفعّالة دمج الأجهزة الطرفية المتصلة مع التطبيقات التي تعمل على النظام الأساسي. تستند واجهات برمجة التطبيقات إلى حِزمة USB وخدمات مدمجة في النظام الأساسي، بما في ذلك إتاحة تفاعلات مع مضيف USB وجهاز USB. وباستخدام واجهات برمجة التطبيقات، يمكن للمطورين إنشاء تطبيقات قادرة على اكتشاف مجموعة متنوعة من أنواع الأجهزة المتصلة والتواصل معها وإدارتها USB.
تميز المكدس وواجهات برمجة التطبيقات نوعين أساسيين من أجهزة USB، استنادًا إلى ما إذا كان الجهاز الذي يعمل بنظام التشغيل Android يعمل كمضيف أو كأجهزة خارجية. كمضيف:
- جهاز USB هو جزء من جهاز متصل يعتمد على جهاز يعمل بنظام التشغيل Android ليعمل كمضيف. على سبيل المثال، فإن معظم أجهزة الإدخال وأجهزة الماوس وذراع التحكم هي أجهزة USB، وكذلك هو الحال مع العديد من الكاميرات ولوحات الوصل (hub) وغيرها.
- ملحق USB هو جهاز متصل يحتوي على وحدة تحكّم مضيفة USB، ويزوّد بالطاقة، وهو مصمّم للتواصل مع الأجهزة التي تعمل بنظام التشغيل Android عبر USB. ويمكن توصيل مجموعة متنوعة من الأجهزة الطرفية كملحقات، بدءًا من وحدات التحكّم في الروبوتات وصولاً إلى المعدات الموسيقية والدراجات الرياضية وغيرها.
بالنسبة إلى كلا النوعين — أجهزة USB وملحقات USB — تتيح واجهات برمجة تطبيقات USB التابعة للنظام الأساسي اكتشاف البث المستهدف عند توصيله أو منفصلة، بالإضافة إلى الواجهات العادية ونقاط النهاية وأوضاع النقل (التحكم في الرسائل وإضافة مجموعات من الأجهزة إليها أو إزعاجها).
تتوفر واجهات برمجة تطبيقات USB في الحزمة android.hardware.usb
. UsbManager
هي الفئة
الأساسية التي تقدّم methods متعاونة لتحديد
كل من أجهزة USB وملحقات USB والتواصل معها. يمكن للتطبيقات الحصول على مثيل
UsbManager
ثم الاستعلام عن قائمة الملفات المرفقة
الأجهزة أو الملحقات ثم التواصل معها أو إدارتها.
يفصح UsbManager
أيضًا عن إجراءات النية بالشراء التي
عمليات بث النظام، للإعلان عن توصيل جهاز USB أو ملحق، أو
التي تم فصلها.
تشمل الفئات الأخرى ما يلي:
UsbDevice
، فئة تمثل جهات خارجية جهاز متصل كجهاز USB (حيث يعمل الجهاز الذي يعمل بنظام تشغيل Android المضيف).UsbAccessory
، يمثّل جهازًا خارجيًا متصلاً كمضيف USB (يكون الجهاز الذي يعمل بنظام التشغيل Android هو جهاز USB).UsbInterface
وUsbEndpoint
، اللتان تتيحان الوصول إلى منفذ USB العادي الواجهات والنقاط النهائية لأحد الأجهزة.UsbDeviceConnection
وUsbRequest
، لإرسال البيانات والتحكّم فيها وتلقّيها الرسائل من أو إلى جهاز USB بشكل متزامن وغير متزامن.UsbConstants
، التي تقدم ثوابت بالتعريف بأنواع نقاط النهاية وفئات الأجهزة وما إلى ذلك.
لاحظ أنه على الرغم من تضمين مكدس 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، يمكنك الاطّلاع على اختبار ADB وMissile مشغّل التطبيقات
واجهة برمجة التطبيقات MTP/PTP
يقدّم نظام التشغيل Android 3.1 واجهة برمجة تطبيقات MTP جديدة تتيح للتطبيقات التفاعل مباشرةً مع الكاميرات المتصلة وأجهزة PTP الأخرى. تسهِّل واجهة برمجة التطبيقات الجديدة على التطبيقات تلقّي إشعارات عند ربط الأجهزة وإزالتها، وإدارة الملفات ومساحة التخزين على هذه الأجهزة، ونقل الملفات والبيانات الوصفية إليها ومنها. تنفذ MTP API المجموعة الفرعية PTP (بروتوكول نقل الصور) من مواصفات بروتوكول نقل الوسائط (MTP).
تتوفّر واجهة برمجة التطبيقات MTP API في حزمة 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 المدمَج (بروتوكول النقل في الوقت الفعلي) stack، الذي يمكن للتطبيقات استخدامه لإدارة البيانات عند الطلب أو البيانات التفاعلية البث. وعلى وجه الخصوص، يمكن للتطبيقات التي توفّر خدمات الصوت على الإنترنت والضغط للتحدث وعقد المؤتمرات وبث الصوت استخدام واجهة برمجة التطبيقات لبدء الجلسات وإرسال أو تلقّي عمليات بث البيانات عبر أي شبكة متاحة.
تتوفّر واجهة برمجة التطبيقات RTP في حزمة android.net.rtp
. صفوف
تشمل:
RtpStream
، وهي الفئة الأساسية من مصادر البث التي ترسِل استلام حزم الشبكة مع حمولات الوسائط عبر RTP.AudioStream
، هي فئة فرعية منRtpStream
تحمل حمولات البيانات الصوتية عبر RTP.AudioGroup
، مركز صوتي محلي لإدارة يَتِمُّ الْآنْ مزج مكبّر صوت الجهاز والميكروفون وAudioStream
.AudioCodec
، التي تحتوي على مجموعة من برامج الترميز التي تحدّدها لـAudioStream
لدعم مؤتمرات الصوت والاستخدامات المشابهة، ينشئ التطبيق فئتَين كنقاط نهاية للبث:
- تحدّد الدالة
AudioStream
نقطة نهاية بعيدة وتتكون من عملية ربط الشبكة وAudioCodec
مهيأ. - تمثل
AudioGroup
نقطة النهاية المحلية لإحدىAudioStream
أو أكثر. تشكيلات "AudioGroup
" جميعAudioStream
وتتفاعل اختياريًا مع الجهاز مكبّر الصوت والميكروفون في الوقت نفسه.
يتضمن أبسط استخدام نقطة نهاية واحدة بعيدة ونقطة نهاية محلية.
وبالنسبة إلى الاستخدامات الأكثر تعقيدًا، يُرجى الرجوع إلى القيود الموضحة.
AudioGroup
لاستخدام واجهة برمجة تطبيقات RTP، يجب أن تطلب التطبيقات إذنًا من المستخدم عن طريق
الْإِعْلَانْ عَنْ <uses-permission
android:name="android.permission.INTERNET">
في ملفات البيان الخاصة بها. للحصول على إذن الوصول إلى ميكروفون الجهاز، يجب أيضًا الحصول على إذن <uses-permission
android:name="android.permission.RECORD_AUDIO">
.
التطبيقات المصغّرة القابلة لتغيير الحجم
بدءًا من الإصدار Android 3.1، أصبح بإمكان المطوّرين إنشاء تطبيقات مصغّرة على الشاشة الرئيسية يمكن تغيير حجمها - أفقيًا أو عموديًا أو على المحورين. يضغط المستخدمون مع الاستمرار على أحد التطبيقات المصغّرة لعرض مقابض تغيير الحجم، ثم يسحبون المقابض الأفقية و/أو الرأسية لتغيير الحجم في شبكة التنسيق.
يمكن للمطوّرين تغيير حجم أي تطبيق مصغّر على الشاشة الرئيسية من خلال تحديد
السمة resizeMode
في بيانات AppWidgetProviderInfo
الوصفية الخاصة بالأداة. قيم
resizeMode
تتضمّن السمة "horizontal" و"vertical" و"none".
للإعلان عن أداة تتيح تغيير حجمها أفقيًا وعموديًا، أدخِل القيمة
"أفقي|عمودي".
وفي ما يلي مثال لذلك:
<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
. استخدِم methods فيViewPropertyAnimator
لتحديد السمة التي تريد متيلتها وكيفية تلوينها. على سبيل المثال، لتعتيمView
لتصبح شفافًا، الاتصال بـalpha(0);
. الكائنViewPropertyAnimator
تعالج تفاصيل ضبط فئةAnimator
الأساسية وبدء تشغيلها، ثم عرض الرسوم المتحركة.
- توفّر فئة
- لون خلفية الصورة المتحركة
getBackgroundColor()
جديد تتيحsetBackgroundColor(int)
طريقة تحصل على/تعيين لون الخلفية خلف الرسوم المتحركة، لالرسوم المتحركة في النافذة فقط. وفي الوقت الحالي، يجب أن تكون الخلفية سوداء، مع أي مستوى ألفا مطلوب.
- الحصول على كسر متحرك من
ViewAnimator
getAnimatedFraction()
جديد طريقة واحدة يتيح لك الحصول على الكسر الحالي للحركة - الوقت المنقضي/المدرج الكسر المستخدَم في آخر تحديث للإطار، وهو منValueAnimator
.
إطار عمل واجهة المستخدم
- التقديم القسري لطبقة
- تتيح طريقة
buildLayer()
الجديدة للتطبيق فرض إنشاء طبقة العرض وعرض العرض فيها على الفور. على سبيل المثال، يمكن أن يستخدم أحد التطبيقات هذه الطريقة لعرض طريقة عرض في طبقة قبل بدء الرسوم المتحركة. إذا كان العرض معقدًا، فسيتم عرضه في الطبقة قبل بدء الرسم المتحرك ستتجنب تخطي الإطارات.
- تتيح طريقة
- المسافة من الكاميرا
- يمكن للتطبيقات استخدام طريقة جديدة
setCameraDistance(float)
لتعيين المسافة من الكاميرا على الملف الشخصي. يمنح ذلك التطبيقات تحكمًا محسَّنًا في عمليات التحويل ثلاثية الأبعاد العرض، مثل عمليات التدوير.
- يمكن للتطبيقات استخدام طريقة جديدة
- الحصول على عرض تقويم من أداة اختيار التاريخ
- طريقة
getCalendarView()
جديدة يمكنك الحصول علىCalendarView
منDatePicker
مثال.
- طريقة
- تلقّي طلبات إعادة الاتصال عند فصل طرق العرض
- يسمح لك الإصدار الجديد من "
View.OnAttachStateChangeListener
" استلام عند إرفاق طريقة عرض أو فصلها عن نافذتها. استخدام "addOnAttachStateChangeListener()
" إضافة أداة استماع وaddOnAttachStateChangeListener()
لإزالته.
- يسمح لك الإصدار الجديد من "
- مستمع مسار التنقل في المقتطف، توقيع جديد على onInflate()
- هناك طريقة جديدة،
setOnBreadCrumbClickListener()
، توفر عنصر جذب للسماح تعترض التطبيقات النقرات على مسار التنقل المجزّأ وتتخذ أي إجراء مطلوب قبل الانتقال إلى إدخال Backstack أو الجزء الذي تم النقر عليه - في فئة
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
مجموعة من رموز المفاتيح العامة لتناسب buttons gamepad. تضيف الفئة أيضًاisGamepadButton(int)
وعدة أنشطة تجارية أخرى إضافية للعمل باستخدام رموز المفاتيح.
- تضيف
الرسومات
- أدوات مساعدة في إدارة الصور النقطية
- يسمح
setHasAlpha(boolean)
للتطبيق بالإشارة إلى ما يلي: يُعرف أن جميع وحدات البكسل في الصورة النقطية معتمة (خطأ) أو أن بعض قد تحتوي وحدات البكسل على قيم ألفا غير معتمة (صواب). ملاحظة: بالنسبة إلى بعض الإعدادات (مثل كـ 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، تُرسِل المحاولة
الجديدة
- الفئات الواجهات التي تمّت إزالتها
- تمّت إزالة العديد من الفئات والواجهات من واجهة برمجة التطبيقات العامة، بعد أن كانت في السابق في حالة إيقاف نهائي. راجِع واجهة برمجة التطبيقات يمكنك الاطّلاع على تقرير الاختلافات لمزيد من المعلومات.
المتصفح
يضيف تطبيق المتصفح الميزات التالية لدعم الويب التطبيقات:
- إتاحة تشغيل الفيديو المضمّن في علامة HTML5
<video>
يتم تسريع التشغيل باستخدام الأجهزة متى أمكن. - دعم طبقات لعناصر الموضع الثابت لجميع المواقع (الأجهزة الجوّالة سطح المكتب).
ثوابت الميزات الجديدة
تضيف المنصة ثوابت جديدة لميزات الأجهزة يمكن للمطوّرين الإفصاح عنها.
في بيانات التطبيقات، لإبلاغ الجهات الخارجية، مثل Google
تشغيل متطلبات التطبيق المتعلقة بإمكانيات الأجهزة الجديدة المتوافقة
في هذا الإصدار من المنصة. يفصح المطوّرون عن هذه الميزة وغيرها.
الثوابت في عناصر البيان <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>
في العنصر
البيان.
لمزيد من المعلومات، يُرجى الاطّلاع على مقالة ما هي واجهة برمجة التطبيقات؟ ما هو المستوى؟