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

مستوى واجهة برمجة التطبيقات: 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 يتضمن مصادر أجهزة الإدخال الجديدة هذه:

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

  • المزيد من إحصاءات حركة المرور
    • يمكن للتطبيقات الآن الوصول إلى إحصاءات حول المزيد من أنواع استخدام الشبكة باستخدام طرق جديدة في TrafficStats. يمكن للتطبيقات استخدام طرق للحصول على إحصائيات UDP، وعدد الحزم، ونقل/استلام بايت حمولة TCP المقاطع لمعرف مستخدم معين.
  • اسم مستخدم مصادقة SIP
    • يمكن للتطبيقات الآن الحصول على اسم المستخدم لمصادقة SIP وضبطه لملف شخصي استخدام الطريقتين الجديدتين getAuthUserName() وsetAuthUserName().

تطبيق إدارة التنزيل

  • التعامل مع التنزيلات المكتملة
    • يمكن للتطبيقات الآن بدء عمليات التنزيل التي ترسل إشعارات للمستخدمين فقط على إتمام المشروع. لبدء هذا النوع من التنزيل، تتجاوز التطبيقات 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() لإعلام المضيف من تطبيقات معالجة طلب تسجيل الدخول التلقائي للمستخدم.
  • تمت إزالة الصفوف والواجهات

المتصفح

يضيف تطبيق المتصفح الميزات التالية لدعم الويب التطبيقات:

  • دعم التشغيل المضمّن للفيديو المضمّن في 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> في العنصر البيان.

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