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

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

‫Android 3.2 (HONEYCOMB_MR2) هو إصدار تدريجي للنظام الأساسي يضيف ميزات جديدة للمستخدمين والمطوّرين. تقدّم الأقسام أدناه نظرة عامة على الميزات الجديدة وواجهات برمجة التطبيقات المخصّصة للمطوّرين.

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

أهم اللقطات في المنصة

الميزات الجديدة للمستخدم

  • تحسينات لمجموعة أكبر من الأجهزة اللوحية

    يتضمّن الإصدار 3.2 من Android مجموعة متنوعة من التحسينات على مستوى النظام لضمان تجربة مستخدم رائعة على مجموعة أكبر من أجهزة الكمبيوتر اللوحي.

  • تكبير التوافق للتطبيقات ذات الحجم الثابت

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

  • مزامنة الوسائط من بطاقة SD

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

ميزات جديدة للمطوّرين

  • واجهة برمجة تطبيقات موسّعة لإدارة الشاشات

    يقدّم Android 3.2 إضافات لواجهة برمجة التطبيقات لدعم شاشة النظام الأساسي لمنح المطوّرين طرقًا إضافية لإدارة واجهة مستخدم التطبيقات على مجموعة من الأجهزة التي تعمل بنظام التشغيل Android. تتضمّن واجهة برمجة التطبيقات محددات موارد جديدة وسمات بيان جديدة تمنحك إمكانية التحكّم بدقة أكبر في كيفية عرض تطبيقاتك بأحجام مختلفة، بدلاً من الاعتماد على فئات الأحجام العامة.

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

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

واجهات برمجة تطبيقات دعم الشاشات

يقدّم الإصدار 3.2 من Android واجهات برمجة تطبيقات جديدة تتيح لك التحكّم بشكلٍ أكبر في كيفية عرض تطبيقاتك على مختلف أحجام الشاشات. تستند واجهة برمجة التطبيقات إلى واجهة برمجة التطبيقات الحالية المخصّصة للتوافق مع الشاشات، بما في ذلك نموذج كثافة الشاشة العام للنظام الأساسي، ولكنّها توسّعه من خلال توفير إمكانية تحديد نطاقات شاشات محدّدة بدقة حسب أبعادها، ويتم قياسها باستخدام وحدات بكسل مستقلة عن الكثافة (مثل 600dp أو 720dp عرضًا)، بدلاً من تحديدها حسب أحجام الشاشات العامة (مثل large أو xlarge).

عند تصميم واجهة مستخدم تطبيق ما، لا يزال بإمكانك الاعتماد على النظام الأساسي لتوفير تجريد الكثافة، مما يعني أن التطبيقات لا تحتاج إلى تعويض الاختلافات في كثافة وحدات البكسل الفعلية عبر الأجهزة. يمكنك تصميم واجهة مستخدم التطبيق وفقًا للمساحة المتاحة في الوضع الأفقي أو العمودي. تُعبّر المنصة عن مقدار المساحة المتاحة باستخدام ثلاث سمات جديدة: smallestWidth وwidth و height.

  • smallestWidth للشاشة هو الحد الأدنى الأساسي لحجمها، ويُقاس بوحدات بكسل مستقلة الكثافة ("dp"). هو أقصر ارتفاع أو عرض للشاشة. بالنسبة إلى الشاشة في الوضع العمودي، يستند عادةً smallestWidth إلى عرضها، بينما يستند في الوضع الأفقي إلى ارتفاعها. في جميع الحالات، يتم اشتقاق smallestWidth من سمة ثابتة للشاشة ولا تتغيّر القيمة بغض النظر عن الاتجاه. السمة smallestWidth مهمة للتطبيقات لأنّها تمثّل أقصر عرض ممكن يجب رسم واجهة مستخدم التطبيق فيه، باستثناء مناطق الشاشة التي يحتجزها النظام.
  • في المقابل، يمثّل كلٌّ من عرض وارتفاع الشاشة المساحة الأفقية أو الرأسية الحالية المتاحة لتنسيق التطبيق، والتي يتم قياسها بوحدات "dp"، ولا تشمل مساحات الشاشة التي حجزها النظام. يتغيّر عرض الشاشة وارتفاعها عندما يغيّر المستخدم اتجاه الشاشة بين الوضع الأفقي والوضع العمودي.

تم تصميم واجهة برمجة التطبيقات الجديدة المتوافقة مع الشاشات للسماح لك بإدارة واجهة مستخدم التطبيق وفقًا لأصغر عرض للشاشة الحالية. يمكنك أيضًا إدارة واجهة المستخدم وفقًا للعرض أو الارتفاع الحالي حسب الحاجة. ولهذه الأغراض، توفّر واجهة برمجة التطبيقات الأدوات التالية:

  • محددات موارد جديدة لاستهداف التنسيقات والموارد الأخرى لتحديد الحد الأدنى من smallestWidth أو العرض أو الارتفاع
  • سمات البيان الجديدة، لتحديد نطاق توافق الشاشة الأقصى للتطبيق

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

بما أنّ واجهة برمجة التطبيقات الجديدة تتيح لك استهداف الشاشات بشكل مباشر أكثر من خلال smallestWidth و width و height، من المفيد فهم الخصائص النموذجية لأنواع الشاشات المختلفة. يعرض الجدول أدناه بعض الأمثلة التي يتم قياسها بوحدات "dp".

الجدول 1: الأجهزة النموذجية، مع الكثافة والحجم بالوحدات dp

النوع الكثافة (عامة) الأبعاد (وحدة بكسل مستقلة الكثافة) smallestWidth (dp)
رقم الهاتف الأساسي mdpi 320 × 480 320
جهاز لوحي صغير/هاتف كبير mdpi ‫480x800 480
جهاز لوحي مقاس 7 بوصات mdpi 600 × 1024 600
جهاز لوحي مقاس 10 بوصات mdpi ‫800x1280 800

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

مؤهِّلات موارد جديدة لدعم الشاشات

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

في ما يلي المؤهّلات الجديدة:

  • swNNNdp: لتحديد الحد الأدنى لقيمة smallestWidth التي يجب استخدام المورد عندها، ويتم قياسها بوحدات dp. كما ذكرنا أعلاه، فإن أصغر عرض للشاشة ثابت، بغض النظر عن الاتجاه. أمثلة: sw320dp وsw720dp وsw720dp
  • wNNNdp وhNNNdp: لتحديد الحد الأدنى للعرض أو الارتفاع الذي يجب استخدام المورد عليه، ويتم قياسه بوحدات "dp". كما ذكرنا أعلاه، يرتبط عرض الشاشة وارتفاعها باتجاه الشاشة، ويتغيران عند تغيير الاتجاه. أمثلة: w320dp وw720dp وh1024dp

يمكنك أيضًا إنشاء عدّة إعدادات موارد متداخلة إذا لزم الأمر. على سبيل المثال، يمكنك الإشارة إلى بعض الموارد لاستخدامها على أي شاشة أعرض من 480 وحدة بكسل مستقلة الكثافة، وأخرى لشاشة أعرض من 600 وحدة بكسل مستقلة الكثافة، وأخرى لشاشة أعرض من 720 وحدة بكسل مستقلة الكثافة. عندما تكون إعدادات موارد متعددة مؤهَّلة لشاشة معيّنة، يختار النظام الإعداد الأقرب تطابقًا. للتحكّم بدقة في الموارد التي يتم تحميلها على شاشة معيّنة، يمكنك وضع علامة على الموارد باستخدام أحد المؤهّلين أو دمج عدة مؤهّلين جدد أو حاليين.

استنادًا إلى السمات النموذجية المذكورة سابقًا، إليك بعض الأمثلة على كيفية استخدام المؤهّلات الجديدة:

res/layout/main_activity.xml   # For phones
res/layout-sw600dp/main_activity.xml   # For 7” tablets
res/layout-sw720dp/main_activity.xml   # For 10” tablets
res/layout-w600dp/main_activity.xml   # Multi-pane when enough width
res/layout-sw600dp-w720dp/main_activity.xml   # For large width

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

res/layout/main_activity.xml   # For phones
res/layout-xlarge/main_activity.xml   # For pre-3.2 tablets
res/layout-sw600dp/main_activity.xml   # For 3.2 and up tablets

للحصول على معلومات كاملة عن كيفية استخدام المحدّدات الجديدة، يُرجى الاطّلاع على استخدام المحدّدات الجديدة للحجم.

سمات جديدة في البيان لتوافق حجم الشاشة

يوفّر إطار العمل مجموعة جديدة من سمات بيان <supports-screens> التي تتيح لك إدارة توافق تطبيقك مع أحجام الشاشات المختلفة. وعلى وجه التحديد، يمكنك تحديد أكبر وأصغر الشاشات التي تم تصميم تطبيقك للعمل عليها، بالإضافة إلى أكبر شاشة تم تصميمه للعمل عليها بدون الحاجة إلى وضع ملاءمة الشاشة الجديد للنظام. مثل محددات الموارد الموضّحة أعلاه، تحدِّد سمات ملف البيان الجديدة نطاقات الشاشات التي يتوافق معها التطبيق، كما هو محدّد من خلال سمة smallestWidth.

في ما يلي سمات البيان الجديدة المتوافقة مع الشاشة:

  • android:compatibleWidthLimitDp="numDp": تتيح لك هذه السمة تحديد الحد الأقصى لقيمة smallestWidth التي يمكن تشغيل التطبيق عليها بدون الحاجة إلى وضع التوافق. إذا كانت الشاشة الحالية أكبر من القيمة المحددة، يعرض النظام التطبيق في الوضع العادي ولكنه يسمح للمستخدم بالتبديل اختياريًا إلى وضع التوافق من خلال إعداد في شريط النظام.
  • android:largestWidthLimitDp="numDp": تتيح لك هذه السمة تحديد الحد الأقصى لقيمة smallestWidth التي تم تصميم التطبيق للعمل عليها. إذا كانت الشاشة الحالية أكبر من القيمة المحددة، يفرض النظام استخدام التطبيق في وضع التوافق مع الشاشة، وذلك لضمان أفضل عرض على الشاشة الحالية.
  • android:requiresSmallestWidthDp="numDp": تتيح لك هذه السمة تحديد الحد الأدنى لقيمة smallestWidth التي يمكن تشغيل التطبيق عليها. إذا كانت الشاشة الحالية أصغر من القيمة المحددة، يعتبر النظام التطبيق غير متوافق مع الجهاز، ولكنه لا يمنع تثبيته وتشغيله.

ملاحظة: لا يفرِّط Google Play حاليًا في التطبيقات استنادًا إلى أيّ من السمات المذكورة أعلاه. وستتم إضافة دعم التصفية في إصدار نظام أساسي لاحق. يمكن للتطبيقات التي تتطلّب الفلترة استنادًا إلى حجم الشاشة استخدام سمات <supports-screens> الحالية.

للحصول على معلومات كاملة حول كيفية استخدام السمات الجديدة، يمكنك الاطّلاع على توضيح توافق الشاشة.

وضع التوافق مع حجم الشاشة

ويوفر Android 3.2 وضعًا جديدًا لتوافق الشاشة مع التطبيقات التي تعلن صراحةً أنها لا تتوافق مع الشاشات الكبيرة مثل الشاشة التي يتم تشغيلها عليها. يتميز وضع "التكبير/التصغير" الجديد هذا بمقياس بكسل، حيث يعرض التطبيق في منطقة شاشة أصغر ثم يغير حجم وحدات البكسل لملء الشاشة الحالية.

يقدّم النظام تلقائيًا وضع توافق الشاشة كخيار للمستخدمين للتطبيقات التي تتطلّب ذلك. يمكن للمستخدمين تفعيل وضع التكبير أو التصغير وإيقافه باستخدام عنصر تحكُّم متاح في شريط النظام.

بما أنّ وضع التوافق مع الشاشة الجديد قد لا يكون مناسبًا لجميع التطبيقات، تسمح المنصة للتطبيق بإيقافه باستخدام سماتملف البيان. عندما يوقف التطبيق هذا الخيار، لا يقدّم النظام وضع التوافق مع "التكبير/التصغير" كخيار للمستخدمين عندما يكون التطبيق قيد التشغيل.

ملاحظة: للحصول على معلومات مهمة حول كيفية التحكّم في وضع التوافق في تطبيقاتك، يُرجى مراجعة مقالة وضع جديد للتطبيقات على الشاشات الكبيرة على مدوّنة مطوّري تطبيقات Android.

كثافة شاشة جديدة لأجهزة التلفزيون بدقة 720p والأجهزة المشابهة

لتلبية احتياجات التطبيقات التي تعمل على أجهزة التلفزيون بدقة 720p أو ما شابه ذلك والتي تستخدم شاشات ذات كثافة معتدلة، يقدّم Android 3.2 كثافة عامة جديدة، tvdpi، بمعدّل تقريبي لنقاط الديسيمتر المربّع يبلغ 213. يمكن للتطبيقات البحث عن الكثافة الجديدة في densityDpi ويمكنها استخدام المؤهّل tvdpi الجديد لوضع علامات على موارد أجهزة التلفزيون وغيرها من الأجهزة المشابهة. مثلاً:

res/drawable-tvdpi/my_icon.png   # Bitmap for tv density

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

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

  • الأجزاء
    • تحتوي فئة Fragment.SavedState الجديدة على معلومات الحالة التي تم استرجاعها من مثيل العنصر من خلال saveFragmentInstanceState().
    • تحفظ الطريقة الجديدة saveFragmentInstanceState() حالة المثيل الحالية للوحدة المحدّدة. يمكن استخدام الحالة لاحقًا عند إنشاء مثيل جديد من المقتطف الذي يتطابق مع الحالة الحالية.
    • تُستخدَم الطريقة الجديدة setInitialSavedState() لضبط الحالة المحفوظة الأولية لجزء عند إنشائه لأول مرة.
    • تُعلم طريقة الاستدعاء الجديدة لـ onViewCreated() المقتطف بأنّه onCreateView() قد عاد، ولكن قبل استعادة أي حالة محفوظة في العرض.
    • تحدِّد طريقة isDetached() ما إذا كان قد تم فصل المقتطف صراحةً عن واجهة المستخدم.
    • تتيح الطريقتان الجديدتان attach() وdetach() للتطبيق إعادة إرفاق الأجزاء أو فصلها في واجهة المستخدم.
    • تتيح لك طريقة setCustomAnimations() الجديدة لزيادة الحمولة ضبط موارد متحركة معيّنة لتشغيل عمليات الدخول/الخروج، وتحديدًا عند إغلاق الحزمة الخلفية. لا يراعي التنفيذ الحالي سلوك الشرائح المختلفة عند إزالة الحزمة الخلفية.
  • معلومات حجم الشاشة في ActivityInfo وApplicationInfo
  • أدوات مساعدة للحصول على حجم العرض من WindowManager
    • تتيح الطريقتان الجديدتان getSize() وgetRectSize() للتطبيقات الحصول على الحجم الأولي للشاشة.
  • أنماط "holographic" علنية جديدة
    • تعرض المنصة الآن مجموعة متنوعة من الأنماط "المجسمة" العلنية للنص وأداوت التطبيقات المصغّرة في شريط الإجراءات وعلامات التبويب وغير ذلك. اطّلِع على R.style للحصول على قائمة كاملة.
  • تم إيقاف LocalActivityManager وActivityGroup LocalActivityManager نهائيًا
    • يجب أن تستخدم التطبيقات الجديدة فِرق النموذج بدلاً من هذه الفئات. لمواصلة التشغيل على الإصدارات القديمة من النظام الأساسي، يمكنك استخدام مكتبة دعم الإصدار 4 (مكتبة التوافق) المتوفّرة في حزمة تطوير البرامج (SDK) لنظام التشغيل Android. توفّر مكتبة الإصدار 4 إصدارًا من Fragment API متوافقًا مع الإصدار 1.6 من نظام التشغيل Android (المستوى 4 لواجهة برمجة التطبيقات).
    • بالنسبة إلى التطبيقات التي يتم تطويرها لنظام التشغيل Android 3.0 (المستوى 11 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث، يتم عادةً عرض علامات التبويب في واجهة المستخدم باستخدام العنصر الجديد ActionBar.newTab() وواجهات برمجة التطبيقات ذات الصلة لوضع علامات التبويب ضمن منطقة شريط الإجراءات.

إطار عمل الوسائط

  • يمكن للتطبيقات التي تستخدم مقدّم خدمات الوسائط في المنصة (MediaStore) الآن قراءة بيانات الوسائط مباشرةً من بطاقة SD القابلة للإزالة، إذا كان الجهاز يتيح ذلك. يمكن للتطبيقات أيضًا التفاعل مع ملفات بطاقة SD مباشرةً باستخدام واجهة برمجة التطبيقات MTP API.

الرسومات

إطار عمل IME

  • طريقة getModifiers() جديدة ل retrieving the current state of the modifier keys

إطار عمل USB

  • طريقة getRawDescriptors() جديدة ل retrieving the raw USB descriptors for the device يمكنك استخدام الأسلوب للوصول إلى الأوصاف غير المتوافقة مباشرةً من خلال واجهات برمجة التطبيقات ذات المستوى الأعلى.

الشبكة

الاتصالات الهاتفية

المرافق الأساسية

  • مرافق نقل الأراضي
  • Binder وIBinder
    • تسمح الطريقة الجديدة dumpAsync() في Binder وIBinder للتطبيقات بتفريغ البيانات في ملف محدّد، ما يضمن تنفيذ الهدف بشكل غير متزامن.
    • يتيح رمز المعاملات الجديد في بروتوكول IBinder TWEET_TRANSACTION للتطبيقات إرسال تغريدة إلى العنصر المستهدَف.

سمات الميزة الجديدة

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

يفلتر Google Play التطبيقات استنادًا إلى سمات <uses-feature>، لضمان توفّرها فقط على الأجهزة التي يتم استيفاء متطلباتها عليها.

  • سمات ثابتة للميزات المتعلّقة بمتطلبات الوضع الأفقي أو العمودي

    يقدّم Android 3.2 ثوابتًا جديدة في الميزات تسمح للتطبيقات بتحديد ما إذا كانت تتطلب العرض في الاتجاه الأفقي أو الاتجاه العمودي أو كليهما. يشير تعريف هذه الثوابت إلى أنه يجب عدم تثبيت التطبيق على جهاز لا يوفر الاتجاه المرتبط بها. في المقابل، إذا لم يتم الإعلان عن أحد الثابتَين أو كليهما، يعني ذلك أنّ التطبيق ليس لديه إعداد مفضّل للاتجاهات غير المعلَن عنها، وقد يتم تثبيته على جهاز لا يقدّم هذه الاتجاهات.

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

    في حال تنفيذ أي من الأنشطة المعرَّفة في طلب البيان في اتجاه معيّن باستخدام السمة android:screenOrientation، يشير ذلك أيضًا إلى أنّ التطبيق يتطلّب هذا الاتجاه.

  • ثوابت العناصر الأخرى

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

لعرض تفصيلي لجميع التغييرات في واجهة برمجة التطبيقات في Android 3.2 (المستوى 13 من واجهة برمجة التطبيقات)، يُرجى الاطّلاع على تقرير الاختلافات في واجهة برمجة التطبيقات.

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

يوفر النظام الأساسي Android 3.2 إصدارًا محدَّثًا من واجهة برمجة تطبيقات إطار العمل. تم منح واجهة برمجة التطبيقات لنظام التشغيل Android 3.2 معرّفًا عدديًا هو 13 ويتم تخزينه في النظام نفسه. يُعرف هذا المعرّف باسم "مستوى واجهة برمجة التطبيقات"، ويسمح للنظام بتحديد ما إذا كان التطبيق متوافقًا مع النظام بشكلٍ صحيح قبل تثبيته.

لاستخدام واجهات برمجة التطبيقات التي تم تقديمها في Android 3.2 في تطبيقك، عليك تجميع التطبيق باستخدام مكتبة Android المقدَّمة في نظام التشغيل Android 3.2 SDK. وحسب احتياجاتك، قد تحتاج أيضًا إلى إضافة السمة android:minSdkVersion="13" إلى العنصر <uses-sdk> في بيان التطبيق.

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