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

مستوى واجهة برمجة التطبيقات: 9

بالنسبة إلى مطوّري البرامج، تتوفّر منصة Android 2.3 (GINGERBREAD) كمكوِّن يمكن تنزيله لحزمة تطوير البرامج (SDK) لنظام التشغيل Android. وتشتمل المنصة القابلة للتنزيل على مكتبة Android وصورة نظام، بالإضافة إلى مجموعة من مظاهر المحاكيات وغير ذلك. لبدء تطوير التطبيقات أو اختبارها على الإصدار 2.3 من Android، استخدم أداة "مدير SDK لنظام التشغيل Android" لتنزيل النظام الأساسي إلى حزمة SDK.

نظرة عامة على واجهة برمجة التطبيقات

تقدّم الأقسام أدناه نظرة عامة فنية على الميزات الجديدة للمطوّرين في الإصدار 2.3، بما في ذلك الميزات والتغييرات الجديدة في واجهة برمجة التطبيقات لإطار العمل منذ الإصدار السابق.

بروتوكول VoIP مستند إلى SIP

يشمل النظام الأساسي الآن حزمة بروتوكول SIP وواجهة برمجة تطبيقات لإطار العمل تتيح لمطوّري البرامج إنشاء تطبيقات للاتصال الهاتفي على الإنترنت. باستخدام واجهة برمجة التطبيقات، يمكن للتطبيقات توفير ميزات المكالمات الصوتية بدون الحاجة إلى إدارة الجلسات أو الاتصالات على مستوى وسيلة النقل أو الصوت، ويتم التعامل مع هذه الميزات بشفافية من خلال واجهة برمجة تطبيقات SIP وخدماتها في النظام الأساسي.

تتوفّر واجهة برمجة تطبيقات SIP في حزمة android.net.sip. الفئة الرئيسية هي SipManager، والتي تستخدمها التطبيقات لإعداد الملفات الشخصية لبروتوكول SIP وإدارتها، ثم بدء المكالمات الصوتية وتلقّي المكالمات الصوتية. بعد إجراء مكالمة صوتية، يمكن للتطبيقات كتم صوت المكالمات وتفعيل وضع مكبِّر الصوت وإرسال نغمات التردد DTMF والمزيد. يمكن للتطبيقات أيضًا استخدام SipManager لإنشاء اتصالات SIP عامة.

تتوفّر حزمة بروتوكول بدء الجلسة (SIP) الأساسية وخدماتها على الأجهزة وفقًا لتقدير الشركة المصنّعة ومشغّل شبكة الجوّال المرتبط بها. ولهذا السبب، يجب أن تستخدم التطبيقات طريقة isApiSupported() للتحقّق مما إذا كان دعم SIP متاحًا، قبل إطلاع المستخدمين على وظائف الاتصال.

لاستخدام واجهة برمجة تطبيقات SIP، على التطبيقات طلب إذن من المستخدم من خلال الإعلان عن <uses-permission android:name="android.permission.INTERNET"> و<uses-permission android:name="android.permission.USE_SIP"> في ملفات البيان.

بالإضافة إلى ذلك، يمكن للمطوّرين طلب الفلترة على Google Play كي لا يتمكّن المستخدمون من العثور على تطبيقاتهم إذا لم تتضمّن أجهزتهم حزمة بروتوكول SIP وخدماتها للنظام الأساسي. لطلب الفلترة، يُرجى إضافة <uses-feature android:name="android.software.sip" android:required="true"> و<uses-feature android:name="android.software.sip.voip"> إلى بيان التطبيق.

للحصول على مزيد من المعلومات، يُرجى الاطّلاع على دليل المطوِّر SIP.

الاتصال القصير المدى (NFC)

يتضمّن Android 2.3 حزمة NFC وواجهة برمجة تطبيقات إطار عمل تتيح للمطوّرين قراءة علامات NDEF التي يتم اكتشافها عندما يلمس المستخدم جهازًا تم تفعيل NFC عليه لوضع علامات على العناصر المُضمَّنة في الملصقات والملصقات الذكية وحتى الأجهزة الأخرى.

ويوفّر النظام الأساسي خدمات NFC الأساسية التي تعمل مع أجهزة الجهاز لاكتشاف العلامات عندما تكون في النطاق. عند اكتشاف علامة، ترسل النظام الأساسي إشعارات إلى التطبيقات عن طريق بث Intent، مع إلحاق رسائل NDEF التابعة للعلامة بـ Intent كإضافات. ويمكن للتطبيقات إنشاء فلاتر الأهداف للتعرّف على العلامات والرسائل المستهدَفة والتعامل معها. على سبيل المثال، بعد تلقّي علامة حسب Intent، تستخرج التطبيقات رسائل NDEF أو تخزّنها أو تنبّه المستخدم أو تتعامل معها بطرق أخرى.

تتوفر واجهة برمجة التطبيقات NFC في الحزمة android.nfc. الفئات الرئيسية هي:

  • NfcAdapter، الذي يمثّل أجهزة NFC المتوفّرة على الجهاز.
  • NdefMessage، الذي يمثّل رسالة بيانات NDEF، التنسيق العادي الذي يتم فيه نقل "السجلات" التي تحمل البيانات بين الأجهزة والعلامات. يمكن أن تتلقّى التطبيقات هذه الرسائل من رسائل ACTION_TAG_DISCOVERED Intent.
  • NdefRecord، يتم تسليمها في NdefMessage، وتوضّح نوع البيانات التي تتم مشاركتها وتنقل البيانات نفسها.

يعتمد اتصال NFC على تقنية لاسلكية في مكونات الجهاز، لذلك يتم تحديد دعم ميزات NFC للنظام الأساسي على أجهزة معينة من قبل الشركات المصنّعة لها. لتحديد دعم NFC على الجهاز الحالي، يمكن للتطبيقات الاتصال بـ isEnabled() لإجراء طلب بحث عن NfcAdapter. ومع ذلك، تتوفر واجهة برمجة تطبيقات NFC دائمًا، بغض النظر عن دعم الأجهزة الأساسية.

لاستخدام NFC API، على التطبيقات طلب إذن من المستخدم من خلال الإعلان عن <uses-permission android:name="android.permission.NFC"> في ملفات البيان.

بالإضافة إلى ذلك، يمكن للمطوّرين طلب إجراء فلترة على Google Play كي لا يتمكّن المستخدمون من العثور على تطبيقاتهم إذا كانت أجهزتهم لا تتيح استخدام تقنية NFC. لطلب الفلترة، يُرجى إضافة <uses-feature android:name="android.hardware.nfc" android:required="true"> إلى بيان التطبيق.

للاطّلاع على نموذج تطبيق يستخدم NFC API، يمكنك مراجعة NFCDemo.

الجيروسكوب وأدوات الاستشعار الأخرى

يضيف Android 2.3 إمكانية استخدام النظام الأساسي وواجهة برمجة التطبيقات للعديد من أنواع القراءة الجديدة للمستشعرات، وهي الجيروسكوب ومتجه الدوران والتسارع الخطي والجاذبية ومقياس الضغط الجوي. يمكن للمطورين استخدام القراءات الجديدة للمستشعرات لإنشاء تطبيقات تستجيب بسرعة وسلاسة للتغييرات الدقيقة التي تطرأ على موضع الجهاز والحركة. تُبلغ واجهة برمجة تطبيقات استشعار الجيروسكوب وغير ذلك من تغييرات أدوات الاستشعار في التطبيقات المهتمة، سواء كانت قيد التشغيل في إطار عمل التطبيق أو باستخدام الرموز البرمجية الأصلية.

تجدر الإشارة إلى أنّ المجموعة المحدّدة من أدوات الاستشعار المتوفرة على أي جهاز تختلف حسب تقدير الشركة المصنّعة للجهاز.

يمكن للمطوّرين طلب إجراء فلترة على Google Play، بحيث لا تكون تطبيقاتهم قابلة للاكتشاف من قِبل المستخدمين الذين لا توفّر أجهزتهم أداة استشعار الجيروسكوب. ولإجراء ذلك، أضِف <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true"> إلى بيان التطبيق.

للحصول على تفاصيل حول واجهة برمجة التطبيقات، يُرجى الاطّلاع على Sensor.

دعم عدة كاميرات

الآن يمكن للتطبيقات الاستفادة من أي كاميرات متوفرة على الجهاز، لالتقاط الصور أو الفيديو. تتيح Camera للتطبيقات الاستعلام عن عدد الكاميرات المتاحة والخصائص الفريدة لكل منها.

  • وتخزِّن فئة Camera.CameraInfo الجديدة الخصائص الموضعية للكاميرا (الاتجاه أو الواجهة الأمامية أو الخلفية).
  • إنّ الطريقتين getNumberOfCameras() وgetCameraInfo() الجديدتين في الفئة Camera تتيحان للتطبيقات طلب البحث عن الكاميرات المتاحة وفتح الكاميرا التي تحتاجها.
  • وتتيح طريقة get() الجديدة للتطبيقات استرداد CamcorderProfile لكاميرا معيّنة.
  • ويتيح الإصدار الجديد getJpegEncodingQualityParameter() للتطبيقات الحصول على مستوى جودة التقاط الصور الثابتة لكاميرا معيّنة.

لإلقاء نظرة على رمز نموذجي للوصول إلى كاميرا أمامية، يمكنك الاطّلاع على cameraPreview.java في نموذج تطبيق ApiDemos.

تضيف واجهة برمجة تطبيقات الكاميرا أيضًا ما يلي:

  • معلَمات جديدة للكاميرات، بما في ذلك مسافة التركيز ووضع التركيز ومعاينة الحد الأقصى/الحد الأدنى لعدد اللقطات في الثانية. تم استخدام getFocusDistances() وgetPreviewFpsRange() وgetSupportedPreviewFpsRange() جديدة للحصول على معلَمات الكاميرا، بالإضافة إلى setPreviewFpsRange() لضبط عدد اللقطات في المعاينة.

تأثيرات صوتية قابلة للمزج

يتيح إطار العمل الإعلامي الخاص بالمنصة استخدام التأثيرات الصوتية العالمية الجديدة أو حسب كل مقطع صوتي، بما في ذلك تعزيز الجهير والمحاكاة الافتراضية لسماعات الرأس ومعادلة الصوت والصدى.

للاطّلاع على رمز نموذجي للتأثيرات الصوتية، يمكنك الاطّلاع على AudioFxDemo.java في نموذج تطبيق ApiDemos.

ويضيف أيضًا إطار العمل الإعلامي ما يلي:

  • اعتماد جديد لعلامة الارتفاع في بيانات EXIF الوصفية لملفات JPEG طريقة getAltitude() جديدة لاسترداد قيمة علامة ارتفاع EXIF.
  • تتيح طريقة setOrientationHint() الجديدة للتطبيق إعلام MediaRecorder بالاتجاه أثناء التقاط الفيديو.

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

يشتمل النظام الأساسي على خدمة نظام DownloadManager جديدة تعالج عمليات تنزيل HTTP التي تستغرق وقتًا طويلاً. يمكن أن تطلب التطبيقات تنزيل عنوان URI إلى ملف وجهة معين. سيجري DownloadManager التنزيل في الخلفية، مع الاهتمام بتفاعلات HTTP وإعادة محاولة التنزيل بعد حدوث الإخفاقات أو عند إجراء تغييرات في الاتصال وإعادة تشغيل النظام.

  • ويمكن للتطبيقات الحصول على نسخة افتراضية من الفئة DownloadManager عن طريق استدعاء getSystemService(String) واجتياز DOWNLOAD_SERVICE. على التطبيقات التي تطلب عمليات التنزيل من خلال واجهة برمجة التطبيقات هذه أن تسجِّل جهاز استقبال البث في ACTION_NOTIFICATION_CLICKED، وذلك لكي يعالج بشكل مناسب عندما ينقر المستخدم على عملية تنزيل قيد التشغيل في الإشعار أو من واجهة مستخدم عمليات التنزيل.
  • تتيح الفئة DownloadManager.Request للتطبيق توفير جميع المعلومات اللازمة لطلب تنزيل جديد، مثل معرّف الموارد المنتظم (URI) الخاص بالطلب ووجهة التنزيل. ويكون عنوان URI للطلب هو المعلمة الوحيدة المطلوبة. لاحظ أن وجهة التنزيل الافتراضية هي وحدة تخزين مشتركة، حيث يمكن للنظام حذف ملفك إذا كان يحتاج إلى استرداد مساحة لاستخدام النظام. للحصول على تخزين دائم لعملية تنزيل، حدِّد وجهة تنزيل على وحدة تخزين خارجية (راجع setDestinationUri(Uri)).
  • توفّر فئة DownloadManager.Query طرقًا تسمح لطلب بحث التطبيق لعمليات التنزيل النشطة وفلترتها.

الوضع الصارم

لمساعدة المطورين على مراقبة وتحسين أداء تطبيقاتهم، يقدم النظام الأساسي ميزة نظام جديدة تسمى StrictMode. عند تنفيذه في أحد التطبيقات، يرصد StrictMode ومطوّر البرامج النشاط غير المقصود على القرص أو الشبكة الذي قد يؤدي إلى انخفاض أداء التطبيق، مثل النشاط الذي يحدث في سلسلة التعليمات الرئيسية للتطبيق (حيث يتم تلقّي عمليات واجهة المستخدم وكذلك الأحداث المتحركة أيضًا). يمكن للمطوّرين تقييم مشاكل استخدام الشبكة والقرص التي تم طرحها في StrictMode وتصحيحها إذا لزم الأمر، ما يحافظ على استجابة سلسلة التعليمات الرئيسية أكثر استجابة ويمنع عرض مربّعات حوار ANR للمستخدمين.

  • StrictMode هي الفئة الأساسية ونقطة الدمج الرئيسية مع النظام والجهاز الافتراضي (VM). توفّر هذه الفئة طرقًا ملائمة لإدارة سياسات سلسلة التعليمات والجهاز الافتراضي التي تنطبق على المثيل.
  • يتضمن السمتان StrictMode.ThreadPolicy وStrictMode.VmPolicy السياسات التي تحدّدها وتطبّقها على مثيلات سلاسل المحادثات والأجهزة الافتراضية.

لمزيد من المعلومات حول كيفية استخدام StrictMode لتحسين تطبيقك، يمكنك الاطّلاع على مستندات الفئة ونموذج الرموز على android.os.StrictMode.

إطار عمل واجهة المستخدم

  • إتاحة التمرير الزائد
    • دعم جديد للتمرير الزائد في طرق العرض والتطبيقات المصغّرة. وفي طرق العرض، يمكن للتطبيقات تفعيل/إيقاف التمرير الزائد لعرض معيّن، وضبط وضع التمرير الزائد، والتحكّم في مسافة التمرير الزائد، والتعامل مع نتائج التمرير الزائد.
    • في التطبيقات المصغَّرة، يمكن للتطبيقات التحكّم في خصائص التمرير الزائد مثل الرسوم المتحركة، ونظام Springback، ومسافة التمرير الزائد. لمزيد من المعلومات، يمكنك الاطّلاع على "android.view.View" و"android.widget.OverScroller".
    • توفّر "ViewConfiguration" أيضًا الطريقتَين getScaledOverflingDistance() وgetScaledOverscrollDistance().
    • السمات الجديدة overScrollMode وoverScrollFooter وoverScrollHeader لعناصر <ListView>، للتحكم في سلوك التمرير الزائد.
  • إتاحة ميزة الفلترة باللمس
    • دعم جديد للتصفية باللمس، والتي تتيح للتطبيق تحسين أمان طرق العرض التي تتيح الوصول إلى وظائف حساسة. على سبيل المثال، تُعد ميزة الفلترة باللمس مناسبة لضمان أمان إجراءات المستخدم، مثل تقديم طلب الإذن أو إجراء عملية شراء أو النقر على إعلان. للحصول على تفاصيل، راجع عرض وثائق الصف.
    • السمة filterTouchesWhenObscured الجديدة لعناصر العرض، التي تحدد ما إذا كان يجب فلترة اللمسات عندما تحجب نافذة العرض نافذة مرئية أخرى. وعند ضبط القيمة على "true"، لن يتلقّى العرض أي لمس عند ظهور إشعار نخب أو مربّع حوار أو نافذة أخرى أعلى نافذة العرض. راجع عرض وثائق الأمان للحصول على تفاصيل.

    لإلقاء نظرة على رمز نموذجي لفلترة اللمس، يمكنك الاطّلاع على SecureView.java في نموذج تطبيق ApiDemos.

  • إدارة محسّنة للأحداث
    • فئة أساسية جديدة لأحداث الإدخال: InputEvent وتقدّم الفئة طرقًا تسمح للتطبيقات بتحديد معنى الحدث، مثلاً عن طريق الاستعلام عن جهاز الإدخال الذي تم إنشاء الحدث منه. KeyEvent وMotionEvent هما فئتان فرعيتان من InputEvent.
    • فئة أساسية جديدة لأجهزة الإدخال: InputDevice تخزِّن الفئة معلومات حول إمكانات جهاز إدخال معيّن، كما تقدّم طرقًا تسمح للتطبيقات بتحديد كيفية تفسير الأحداث من جهاز الإدخال.
  • ميزة رصد حركة محسَّنة
    • تم توسيع نطاق واجهة برمجة التطبيقات MotionEvent لتشمل معلومات "معرّف المؤشر"، ما يتيح للتطبيقات تتبُّع الأصابع الفردية أثناء تحريكها للأعلى وللأسفل. يضيف الفصل مجموعة متنوعة من الطرق التي تتيح للتطبيق العمل بكفاءة مع أحداث الحركة.
    • أصبح نظام الإدخال الآن لديه منطق لإنشاء أحداث الحركة باستخدام معلومات معرّف المؤشر الجديدة، وتوليف المعرّفات عندما تكون المؤشرات الجديدة معطلة. يتتبع النظام معرّفات المؤشر المتعددة بشكل منفصل أثناء حدث الحركة، ويضمن الاستمرارية الصحيحة للمؤشرات من خلال تقييمها على المسافة بين المجموعة الأخيرة والتالية.
  • عناصر التحكّم في تحديد النص
    • تتيح طريقة setComposingRegion الجديدة للتطبيق وضع علامة على منطقة من النص تشير إلى أنّها تنشئ نصًّا، ما يحافظ على النمط الحالي. تعرض طريقة getSelectedText النص المحدَّد إلى التطبيق. تتوفّر الطرق في BaseInputConnection وInputConnection وInputConnectionWrapper.
    • السمات الجديدة textSelectHandle وtextSelectHandleLeft وtextSelectHandleRight وtextSelectHandleWindowStyle الخاصة بـ <TextView>، للإشارة إلى العناصر القابلة للرسم التي سيتم استخدامها لعرض علامات الارتساء لاختيار النص ونمط النافذة التي تتضمنها.
  • عناصر التحكّم في النشاط
  • أنماط نص الإشعارات والرموز
  • شاشات كبيرة جدًا

    يدعم النظام الأساسي الآن أحجام الشاشات الكبيرة جدًا، مثل تلك التي قد تكون موجودة على الأجهزة اللوحية. ويمكن أن يشير المطوّرون إلى أنّ تطبيقاتهم مصممة لتوافق مع أحجام الشاشات الكبيرة جدًا من خلال إضافة عنصر <supports screens ... android:xlargeScreens="true"> إلى ملفات البيان. يمكن للتطبيقات استخدام مؤهِّل موارد جديد، وهو xlarge، للإشارة إلى الموارد الخاصة بالشاشات الكبيرة جدًا. وللحصول على تفاصيل حول طريقة إتاحة أحجام الشاشات الكبيرة جدًا والأخرى، راجِع إتاحة الشاشات المتعددة.

    الرسومات

    موفّرو المحتوى

    • فئة جديدة من مزوّدي خدمات AlarmClock لضبط منبّه أو التعامل مع أحد المنبّهات يحتوي مقدّم الخدمة على إجراء ACTION_SET_ALARM Intent وعناصر إضافية يمكن استخدامها لبدء نشاط من أجل ضبط منبّه جديد في تطبيق منبّه. يجب أن تنشئ التطبيقات التي تريد تلقّي هدف SET_ALARM نشاطًا يتطلب إذن SET_ALARM. ويجب أن تستخدم التطبيقات التي تريد إنشاء منبّه جديد Context.startActivity()، بحيث يتاح للمستخدم خيار اختيار تطبيق المنبّه الذي يستخدمه.
    • يتيح MediaStore إجراء Intent جديد، وهو PLAY_FROM_SEARCH، والذي يسمح للتطبيق بالبحث عن الوسائط الموسيقية وتشغيل المحتوى من النتيجة تلقائيًا متى أمكن. على سبيل المثال، يمكن أن يعمل أحد التطبيقات على تنشيط رسالة Intent هذه كنتيجة لأمر التعرّف على الصوت للاستماع إلى الموسيقى.
    • يضيف MediaStore أيضًا علامة MEDIA_IGNORE_FILENAME جديدة تطلب من ماسح الوسائط تجاهل الوسائط في الدليل الذي يحتوي على الوسائط والأدلة الفرعية التابعة له. يمكن للمطوّرين استخدام هذا الإعداد لتجنّب ظهور رسومات في المعرض وكذلك منع ظهور أصوات التطبيق والموسيقى في تطبيق YouTube Music.
    • يضيف موفِّر خدمة Settings إجراءَي النشاط الجديدَين APPLICATION_DETAILS_SETTINGS وMANAGE_ALL_APPLICATIONS_SETTINGS، واللذين يتيحان لأحد التطبيقات عرض شاشة تفاصيل تطبيق معيّن أو عرض شاشة "إدارة التطبيقات".
    • يضيف موفِّر خدمة ContactsContract نوع بيانات ContactsContract.CommonDataKinds.SipAddress لتخزين عنوان SIP (الاتصال الهاتفي على الإنترنت) لجهة الاتصال.

    الموقع الجغرافي

    • يتتبّع LocationManager الآن طلبات التطبيقات التي تؤدي إلى عمليات قفل التنشيط أو قفل Wi-Fi وفقًا لفئة WorkSource التي يديرها النظام وتتعرّف على التطبيق.

      تتتبّع السمة LocationManager جميع العملاء الذين يطلبون تحديثات دورية، وتخبر مقدّمي الخدمات عنهم كمَعلمة WorkSource، عند ضبط الحدّ الأدنى لأوقات التحديث. يستخدم موفِّر موقع الشبكة WorkSource لتتبُّع عمليات قفل التنشيط وشبكة Wi-Fi التي يبدأها أحد التطبيقات وإضافة هذا الإذن إلى استخدام بطارية التطبيق الذي تم الإبلاغ عنه في "إدارة التطبيقات".

    • يضيف LocationManager العديد من الطرق الجديدة التي تسمح لسجل النشاط بتلقي تحديثات الموقع الدورية أو لمرة واحدة بناءً على معايير محددة (انظر أدناه).
    • تتيح فئة Criteria الجديدة للتطبيق تحديد مجموعة من المعايير لاختيار مقدّم خدمة الموقع الجغرافي. على سبيل المثال، قد يتم ترتيب مقدّمي الخدمات وفقًا للدقة واستخدام الطاقة والقدرة على الإبلاغ عن الارتفاع والسرعة وتحمل التكلفة النقدية.

    مساحة التخزين

    • يضيف نظام Android 2.3 رمز StorageManager جديدًا يتوافق مع ملفات OBB (Opaque Binary Blob). على الرغم من توفُّر دعم النظام الأساسي لـ OBB في الإصدار Android 2.3، لن تتوفر أدوات التطوير لإنشاء ملفات OBB وإدارتها حتى أوائل عام 2011.
    • يضيف نظام Android 2.3 الأساسي توافقًا رسميًا مع الأجهزة التي لا تتضمن بطاقات SD (مع أنه يوفّر قسمًا افتراضيًا على بطاقة SD، في حال عدم توفّر بطاقة SD فعلية). وهي طريقة ملائمة، isExternalStorageRemovable()، تتيح للتطبيقات تحديد ما إذا كانت بطاقة SD الفعلية متوفّرة أم لا.

    مدير الحزم

    التلفونية

    • تضيف TelephonyManager القيمة الثابتة NETWORK_TYPE_EVDO_B لتحديد نوع الشبكة CDMA EVDO Rev B.
    • تعرض طريقة getPsc() الجديدة رمز التشفير الأساسي لخلية العرض على شبكة النظام العالمي لاتصالات الجوال عن بعد (UMTS).

    الوصول الأصلي إلى مراحل نشاط النشاط، والنوافذ

    يعرض نظام التشغيل Android 2.3 مجموعة واسعة من واجهات برمجة التطبيقات للتطبيقات التي تستخدم الرموز البرمجية الأصلية. تتضمن فئات إطار العمل ذات الاهتمام بهذه التطبيقات ما يلي:

    • NativeActivity هي نوع جديد من فئات النشاط، والتي يتم تنفيذ استرجاعات مراحل نشاطها مباشرةً بالرمز الأصلي. يتم تشغيل NativeActivity ورمزه الأصلي الأساسي في النظام تمامًا كما يتم تنفيذ الأنشطة الأخرى، خاصةً في عمليات النظام في تطبيق Android ويتم تنفيذها من خلال سلسلة التعليمات الرئيسية لواجهة المستخدم في التطبيق، وتتلقّى هذه العمليات نفس استدعاءات مراحل نشاط العملية التي يتم تنفيذها في الأنشطة الأخرى.
    • تتيح الواجهة الجديدة لفئة InputQueue وواجهة معاودة الاتصال للرموز البرمجية الأصلية إدارة وضع الأحداث في لائحة الانتظار.
    • تتيح واجهة SurfaceHolder.Callback2 الجديدة للترميز الأصلي إدارة SurfaceHolder.
    • تتيح الطريقتان takeInputQueue وtakeSurface() الجديدتان في Window للرموز البرمجية الأصلية إدارة الأحداث ومساحات العرض.

    للحصول على معلومات كاملة حول استخدام الرمز الأصلي أو تنزيل NDK، راجع صفحة Android NDK.

    وقت تشغيل Dalvik

    عناصر البيان والسمات الجديدة

    • سمة xlargeScreens جديدة للعنصر <supports-screens> للإشارة إلى ما إذا كان التطبيق يتيح استخدام عوامل شكل الشاشة الكبيرة جدًا. للاطّلاع على التفاصيل، يُرجى مراجعة القسم دعم الشاشات المتعددة.
    • القيم الجديدة للسمة android:screenOrientation للعنصر <activity>:
      • "reverseLandscape" — يريد النشاط أن تكون الشاشة في الاتجاه الأفقي، وأن يتم تدويرها في الاتجاه المعاكس من الوضع الأفقي العادي.
      • "reversePortrait" — يريد النشاط أن يكون على الشاشة في الاتجاه العمودي، مع تدويرها في الاتجاه المعاكس من الوضع العمودي العادي.
      • "sensorLandscape" — يريد النشاط أن تكون الشاشة في اتجاه أفقي، لكن يمكنه استخدام أداة الاستشعار لتغيير الاتجاه الذي تواجهه الشاشة.
      • "sensorPortrait" — يريد النشاط أن تكون الشاشة في الاتجاه العمودي، لكن يمكنه استخدام أداة الاستشعار لتغيير الاتجاه الذي تتجه إليه الشاشة.
      • "fullSensor" — يتم تحديد الاتجاه بواسطة أداة استشعار الاتجاه المادي: سيتم تدوير الشاشة بناءً على كيفية تحرك المستخدم للجهاز. يسمح هذا بإجراء أي من التدوير الأربع الممكنة، بغض النظر عن الإجراء الذي سينفذه الجهاز في العادة (على سبيل المثال، لن تستخدم بعض الأجهزة عادةً الدوران بزاوية 180 درجة).

    الأذونات الجديدة

    • com.android.permission.SET_ALARM - يتيح هذا الإذن للتطبيق بث هدف من أجل ضبط منبّه للمستخدم. إنّ النشاط الذي يعالج إجراء Intent SET_ALARM يجب أن يتطلّب هذا الإذن.
    • android.permission.USE_SIP — للسماح لتطبيق باستخدام SIP API لإجراء مكالمات على الإنترنت أو تلقّيها.
    • android.permission.NFC — يتيح هذا الإذن للتطبيق استخدام NFC API لقراءة علامات NFC.

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

    يضيف النظام الأساسي العديد من ميزات الأجهزة الجديدة التي يمكن للمطوّرين الإفصاح عنها في بيانات التطبيقات على أنّها مطلوبة من تطبيقاتهم. يسمح ذلك للمطوّرين بالتحكّم في كيفية فلترة تطبيقاتهم عند نشرها على Google Play.

    • android.hardware.audio.low_latency — يستخدم التطبيق مسارًا صوتيًا بزمن انتقال منخفض على الجهاز ويكون حساسًا للتأخير أو التأخر في إدخال الصوت أو إخراجه.
    • android.hardware.camera.front — يستخدم التطبيق كاميرا أمامية على الجهاز.
    • android.hardware.nfc: يستخدم التطبيق ميزات راديو NFC في الجهاز.
    • android.hardware.sensor.barometer — يستخدم التطبيق مقياس الضغط الجوي للجهاز.
    • android.hardware.sensor.gyroscope — يستخدم التطبيق أداة استشعار الجيروسكوب الخاصة بالجهاز.
    • android.software.sip: يستخدم التطبيق واجهة برمجة التطبيقات SIP API على الجهاز.
    • android.software.sip.voip — يستخدم التطبيق خدمة VoIP مستندة إلى بروتوكول SIP على الجهاز.
    • android.hardware.touchscreen.multitouch.jazzhand — يستخدم التطبيق إمكانات اللمس المتعدد النقاط المتقدمة على شاشة الجهاز، لتتبع خمس نقاط أو أكثر بشكل مستقل بالكامل.

    للحصول على معلومات كاملة عن كيفية الإعلان عن الميزات واستخدامها للفلترة، يمكنك الاطّلاع على مستندات <uses-feature>.

    تقرير الاختلافات في واجهة برمجة التطبيقات

    للحصول على عرض تفصيلي لجميع التغييرات في واجهة برمجة التطبيقات في الإصدار Android 2.3 (المستوى 9 من واجهة برمجة التطبيقات)، يمكنك الاطّلاع على تقرير الاختلافات في واجهة برمجة التطبيقات.

    مستوى واجهة برمجة التطبيقات

    يقدم نظام Android 2.3 إصدارًا محدثًا من واجهة برمجة التطبيقات لإطار العمل. ويتم تخصيص معرّف عدد صحيح 9 لواجهة برمجة التطبيقات Android 2.3 ويتم تخزينه في النظام نفسه. ويتيح هذا المعرّف، المسمى "مستوى واجهة برمجة التطبيقات"، للنظام تحديد ما إذا كان التطبيق متوافقًا مع النظام بشكل صحيح قبل تثبيت التطبيق.

    لاستخدام واجهات برمجة التطبيقات التي تم تقديمها في الإصدار Android 2.3 في تطبيقك، يجب تجميع التطبيق في مكتبة Android التي تتوفر في النظام الأساسي لحزمة تطوير البرامج (SDK) لنظام التشغيل Android 2.3. بناءً على احتياجاتك، قد تحتاج أيضًا إلى إضافة السمة android:minSdkVersion="9" إلى العنصر <uses-sdk> في بيان التطبيق. إذا تم تصميم تطبيقك بحيث لا يعمل إلا على الإصدار 2.3 من نظام التشغيل Android والإصدارات الأحدث، فإن الإعلان عن السمة يمنع تثبيت التطبيق على الإصدارات السابقة من النظام الأساسي.

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