مستوى واجهة برمجة التطبيقات: 12
بالنسبة للمطورين، يوفر نظام Android 3.1 الأساسي
(HONEYCOMB_MR1
) متاحة
قابل للتنزيل لحزمة Android SDK. تتضمن المنصة القابلة للتنزيل
مكتبة 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 وملحقاتها. يمكن للتطبيقات الحصول على مثيل
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
.
ولكل جهاز إدخال معرّف فريد يعيّنه النظام وقد يوفّر أيضًا
مصادر متعددة. عندما يوفّر الجهاز مصادر متعددة، يكون هناك أكثر من مصدر واحد
توفير بيانات المحور باستخدام نفس المحور. على سبيل المثال، حدث لمس قادم
من مصدر اللمس يستخدم المحور س لبيانات موضع الشاشة، بينما ذراع التحكم
الحدث القادم من مصدر ذراع التحكّم، سيتم استخدام المحور "س" لتحديد موضع ذراع التحكّم
بدلاً من ذلك. ولهذا السبب، من المهم أن تفسر التطبيقات المحور
القيم وفقًا للمصدر الذي نشأت منه. عند التعامل مع حركة
حدث، يجب أن تستخدم التطبيقات بعض الطرق على InputDevice
لتحديد المحاور التي يدعمها الجهاز أو المصدر. على وجه التحديد،
يمكن للتطبيقات استخدام getMotionRanges()
للبحث عن جميع محاور الجهاز أو جميع محاور
مصدر الجهاز. وفي كلتا الحالتين، يتم عرض معلومات نطاق المحاور في
يحدد الكائن InputDevice.MotionRange
مصدر
لكل قيمة محور.
وأخيرًا، نظرًا لأن أحداث الحركة من ذراع التحكم ولوحات التحكم بالألعاب والفئران
ليست كرات التعقب أحداث لمس، تضيف المنصة طريقة جديدة لمعاودة الاتصال
تمريرها إلى View
على أنّها "عامة" أحداث الحركة.
على وجه التحديد، تُبلغ التقارير عن أحداث الحركة بدون لمس
View
من خلال مكالمة إلى onGenericMotionEvent()
، بدلاً من onTouchEvent()
.
تنقل المنصة أحداث الحركة العامة بشكل مختلف حسب
فئة مصدر الحدث. حدثان (SOURCE_CLASS_POINTER
)
انتقل إلى View
أسفل المؤشر، على غرار طريقة اللمس
فعالية الأحداث. ينتقل جميع المستخدمين الآخرين إلى View
محل التركيز حاليًا.
ويعني ذلك مثلاً أنّه يجب التركيز على View
من أجل
تلقّي أحداث ذراع التحكّم. إذا لزم الأمر، يمكن للطلبات معالجة هذه الأحداث في
أو مستوى النشاط أو مربّع الحوار من خلال تنفيذ onGenericMotionEvent()
هناك بدلاً من ذلك.
لإلقاء نظرة على نموذج تطبيق يستخدم حركة ذراع التحكم الأحداث، يُرجى مراجعة GameControllerInput وGameView.
واجهة برمجة تطبيقات RTP
يكشف Android 3.1 واجهة برمجة التطبيقات لـ RTP المدمَج (بروتوكول النقل في الوقت الفعلي) stack، الذي يمكن للتطبيقات استخدامه لإدارة البيانات عند الطلب أو البيانات التفاعلية البث. وعلى وجه الخصوص، التطبيقات التي توفر بروتوكول الصوت على الإنترنت (VOIP) والدفع للتحدث ومكالمات الفيديو وبث الصوت يمكن من خلاله استخدام واجهة برمجة التطبيقات لبدء الجلسات وبثها أو استقبالها مصادر البيانات عبر أي شبكة متاحة.
تتوفّر واجهة برمجة التطبيقات 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
. يمكنك استخدام على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
مجموعة من رموز المفاتيح العامة إلى ملاءمة أزرار أجهزة الألعاب. تضيف الفئة أيضًاisGamepadButton(int)
وعدة أنشطة تجارية أخرى إضافية للعمل باستخدام رموز المفاتيح.
- يضيف
الرسومات
- أدوات مساعدة في إدارة الصور النقطية
- يسمح
setHasAlpha(boolean)
للتطبيق بالإشارة إلى ما يلي: يُعرف أن جميع وحدات البكسل في الصورة النقطية معتمة (خطأ) أو أن بعض قد تحتوي وحدات البكسل على قيم ألفا غير معتمة (صواب). ملاحظة: بالنسبة إلى بعض الإعدادات (مثل كـ RGB_565) يتم تجاهل هذا الاستدعاء، نظرًا لأنه لا يدعم ألفا لكل بكسل القيم. والمقصود بذلك كتلميح رسم، كما هو الحال في بعض الحالات مع الصورة النقطية يمكن أن يأخذ حالة رسم أسرع من حافظة رسم غير معتمة لكل وحدة بكسل - يحصل
getByteCount()
على حجم صورة نقطية في بايت. - يتيح
getGenerationId()
للتطبيق العثور على لمعرفة ما إذا كان قد تم تعديل الصورة النقطية، مثل التخزين المؤقت أم لا. - يُحدِّد
sameAs(android.graphics.Bitmap)
وما إذا كانت صورة نقطية معينة تختلف عن الصورة النقطية الحالية أم لا من حيث البُعد أو التهيئة أو بيانات البكسل.
- يسمح
- ضبط الموقع الجغرافي للكاميرا وتدويرها
- تتم إضافة طريقتَين جديدتَين
rotate()
وsetLocation()
من أجلCamera
للتحكم في موقع الكاميرا، لإجراء تحويلات ثلاثية الأبعاد.
- تتم إضافة طريقتَين جديدتَين
الشبكة
- قفل شبكة 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()
.
- يمكنك الآن الحصول على العدد الصحيح من واصف الملف الأصلي للسمة
WebKit
- ملفات تعريف الارتباط لنظام الملفات
- تتيح
CookieManager
الآن ملفات تعريف الارتباط التي تستخدم الـ مخطط معرِّف الموارد المنتظم (URI) لـfile:
. يمكنك استخدامsetAcceptFileSchemeCookies()
من أجل تفعيل/إيقاف دعم ملفات تعريف ارتباط نظام الملفات، قبل إنشاء مثيل منWebView
أوCookieManager
. في مثيل واحد (CookieManager
)، يمكنك التحقّق مما إذا كانت ملفّات تعريف الارتباط الخاصة بمخطط الملف. تم التفعيل عن طريق الاتصال بـallowFileSchemeCookies()
.
- تتيح
- إشعار بطلب تسجيل الدخول
- لدعم ميزات تسجيل الدخول التلقائي في المتصفح والتي تم تقديمها في الإصدار 3.0 من نظام التشغيل Android، يجب استخدام
جديدتان
طريقة الدفع
onReceivedLoginRequest()
لإعلام المضيف من تطبيقات معالجة طلب تسجيل الدخول التلقائي للمستخدم.
- لدعم ميزات تسجيل الدخول التلقائي في المتصفح والتي تم تقديمها في الإصدار 3.0 من نظام التشغيل Android، يجب استخدام
جديدتان
طريقة الدفع
- تمت إزالة الصفوف والواجهات
- وقد تمت إزالة العديد من الفئات والواجهات من واجهة برمجة التطبيقات العامة بعد كانت متوقّفة في السابق. راجِع واجهة برمجة التطبيقات يمكنك الاطّلاع على تقرير الاختلافات لمزيد من المعلومات.
المتصفح
يضيف تطبيق المتصفح الميزات التالية لدعم الويب التطبيقات:
- دعم التشغيل المضمّن للفيديو المضمّن في HTML5
العلامة
<video>
يتم تسريع التشغيل باستخدام الأجهزة متى أمكن. - دعم طبقات لعناصر الموضع الثابت لجميع المواقع (الأجهزة الجوّالة سطح المكتب).
ثوابت الميزات الجديدة
تضيف المنصة ثوابت جديدة لميزات الأجهزة يمكن للمطوّرين الإفصاح عنها.
في بيانات التطبيقات، لإبلاغ الجهات الخارجية، مثل Google
تشغيل متطلبات التطبيق المتعلقة بإمكانيات الأجهزة الجديدة المتوافقة
في هذا الإصدار من المنصة. يفصح المطوّرون عن هذه الميزة وغيرها.
الثوابت في عناصر البيان <uses-feature>
.
android.hardware.usb.accessory
— يستخدم التطبيق USB API للاتصال بالأجهزة الخارجية المتصلة عبر 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: يمثّل في النظام نفسه. ويتيح هذا المعرّف، يُسمى "مستوى واجهة برمجة التطبيقات"، لتحديد ما إذا كان التطبيق متوافقًا مع النظام، قبل تثبيت التطبيق.
لاستخدام واجهات برمجة التطبيقات المقدّمة في الإصدار 3.1 من نظام التشغيل Android في تطبيقك،
ستحتاج إلى تجميع التطبيق مقابل مكتبة Android المتوفرة
لمنصة Android 3.1 SDK. بناءً على احتياجاتك، يمكنك
قد
يجب أيضًا إضافة android:minSdkVersion="12"
إلى العنصر <uses-sdk>
في العنصر
البيان.
لمزيد من المعلومات، يُرجى الاطّلاع على مقالة ما هي واجهة برمجة التطبيقات؟ ما هو المستوى؟