واجهات برمجة التطبيقات لنظام التشغيل Android 3.1

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

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

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

مجموعة أدوات الويب

  • ملفات تعريف الارتباط لنظام الملفات
    • تتيح CookieManager الآن ملفات تعريف الارتباط التي تستخدم الـ مخطط معرِّف الموارد المنتظم (URI) لـ file:. يمكنك استخدام setAcceptFileSchemeCookies() من أجل تفعيل/إيقاف دعم ملفات تعريف ارتباط نظام الملفات، قبل إنشاء مثيل من WebView أو CookieManager. في مثيل واحد (CookieManager)، يمكنك التحقّق مما إذا كانت ملفّات تعريف الارتباط الخاصة بمخطط الملف. تم التفعيل عن طريق الاتصال بـ allowFileSchemeCookies().
  • إشعار بطلب تسجيل الدخول
    • لدعم ميزات تسجيل الدخول التلقائي للمتصفّح التي تم تقديمها في Android 3.0، تُرسِل المحاولة الجديدة onReceivedLoginRequest() إشعارًا إلى التطبيق المضيف بأنّه تمّت معالجة طلب تسجيل الدخول التلقائي للمستخدم.
  • الفئات الواجهات التي تمّت إزالتها

المتصفح

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

  • إتاحة تشغيل الفيديو المضمّن في علامة HTML5 <video> يتم تسريع التشغيل باستخدام الأجهزة متى أمكن.
  • دعم طبقات لعناصر الموضع الثابت لجميع المواقع (الأجهزة الجوّالة سطح المكتب).

ثوابت الميزات الجديدة

تضيف المنصة ثوابت جديدة لميزات الأجهزة يمكن للمطوّرين الإفصاح عنها. في بيانات التطبيقات، لإبلاغ الجهات الخارجية، مثل Google تشغيل متطلبات التطبيق المتعلقة بإمكانيات الأجهزة الجديدة المتوافقة في هذا الإصدار من المنصة. يفصح المطوّرون عن هذه الميزة وغيرها. الثوابت في عناصر البيان <uses-feature>.

يفلتر 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> في العنصر البيان.

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