Android

منصّات آندرويد المختلفة

مقدّمة

تمَّ إطلاق نظام تشغيل آندرويد من قِبَل شركة جوجل في عام 2008م مستهدفةً بشكلٍ أساسيّ أجهزة الهواتف الذكيّة، ومع توالي التحديثات المستمرّة للنظام، أصبح النظام يدعم منصّات متعدّدة أخرى غير الهواتف الذكيّة، فمنذ عام 2014م، تمَّ إطلاق نسختين جديدتين من النظام، وهما: Wear OS؛ والمخصّصة لساعات اليدّ الذكيّة بالإضافة للإكسسوارات الحاسوبيّة الأخرى التي يمكن للشخص لبسها، ونسخة AndroidTV؛ والتي تمَّ تطويرها بغرض دعم أجهزة تشغيل الوسائط الرقميّة (أو Digital media players). في عام 2015م، تمَّ إصدار نسخة أخرى من نظام آندرويد مُخصَّصة للسيّارات، وسُمّيت Android Auto.

 

برمجة التطبيقات لمنصّات آندرويد المختلفة

يمكن من خلال برنامج Android Studio إنشاء وتطوير التطبيقات لجميع منصّات آندرويد المختلفة التي تمَّ ذكرها فيما سبق، فعند إنشاء مشروع جديد من خلال Android Studio، ستظهر قائمة تطلب من مبرمج التطبيق اختيار المنصّات التي يودّ دعمها. سنقوم بتغطية بعض الخطوات الإضافيّة التي يجب على مبرمج التطبيق اتّباعها عند إرادته دعم بعض المنصّات الإضافيّة مثل AndroidTV، وWearOS، وغيرها.

AndroidTV

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

  • أن يتم تحديث مجموعة أدوات SDK Tools إلى نسخة رقم 24 على الأقلّ.
  • أن يتم تحديث واجهة برمجة التطبيقات المُخصًّصة للآندرويد (API) إلى نسخة 21 على الأقلّ، وهذه النسخة تدعم إصدارات الآندرويد من النسخة 5.0 فما فوق.

بعد التأكُّد من المتطلّبات السابقة، يجب على المبرمج إنشاء مشروع جديد في Android Studio يدعم نظام AndroidTV، ومن ثمَّ يقوم باختيار الواجهة المناسبة للتطبيق من بين الواجهات المتاحة:

في حال عدم توفُّر الواجهة المرغوبة، أو كون التطبيق يستهدف منصّات أخرى غير AndroidTV، فيمكن إضافة الأسطر الآتية بداخل وسم “<application>” في ملف الmanifest الخاصّ بالمشروع:

يجب تعديل قيمة android:name بما يتناسب مع اسم المشروع.

 

لدعم بيئة Leanback المُخصّصة للأجهزة الكبيرة، يتمّ وفي نفس الملفّ السابق، إضافة السطر التالي إلى وسم <manifest> (الوسم الرئيسي):

في حال كان التطبيق مُخصَّص لمنصّة AndroidTV فقط دون غيره، فيمكن إجبار دعم بيئة Leanback من خلال جعل قيمة android:required هي true:

كما يمكن أيضاً إلغاء دعم شاشات اللمس كمتطلَّب إجباري بإضافة السطر التالي:

 

بعد الانتهاء من الخطوات السابقة، يمكن إنشاء جهاز AndroidTV افتراضي لتشغيله بواسطة محاكي آندرويد، وذلك من خلال  AVD Manager:

يُفضَّل الاطّلاع على مكتبة android.support.v17.leanback لمعرفة تفاصيل التعامل مع بيئة Leanback.

WearOS

إنَّ الواجهة البرمجيّة لنظام WearOS تتيح لمبرمج تطبيقات هذا النظام إمكانيّة الوصول إلى مكوّنات الجهاز الملبوس كالحسّاسات (Sensors) ووحدة معالجة الرسوميّات (GPU) وبرمجتها. لبدء برمجة تطبيقات نظام WearOS للأجهزة الملبوسة، يتم إنشاء مشروع جديد في Android Studio وتفعيل خيار دعم الأجهزة الملبوسة، بعد ذلك يقوم باختيار الواجهة التي يحتاجها من ضمن الواجهات المتوفّرة:

بعد الانتهاء من إنشاء المشروع، يتمّ الانتقال إلى ملفّ build.gradle الموجود في بيئة تطوير التطبيق، ومن ثمَّ إجراء العمليّات التالية:

  • في قسم android، يتمّ التأكُّد من أنَّ قيمتي compileSdkVersion وtargetSdkVersion هي 26 على الأقلّ.
  • إضافة المكتبات التالية في قسم dependencies:
 

في حال كان التطبيق يهدف إلى العمل بشكل منعزل عن أي هاتف أو جهاز آخر (أي لا يتطلَّب التطبيق وجود هاتف للعمل كما هو الحال في ساعة Apple Watch، والتي تتطلَّب برمجتها للاتصال بجهاز iPhone حتّى تتمكَّن من العمل كما يجب)، فيتم إضافة السطر التالي إلى ملفّ الmanifest في وسم <application>:

أخيراً، يتم الإشارة إلى أنَّ التطبيق يدعم الأجهزة الملبوسة بإضافة السطر التالي في نفس الملفّ، ولكن في وسم <manifest> الرئيسي:

 

في حال كان يرغب المبرمج بتجربة تطبيقه في محاكي آندرويد، فيمكنه إنشاء جهاز افتراضي جديد من نوع Wear من خلال AVD Manager:

Android Auto

يختلف نظام Android Auto عن النّظامين السابقين بكونه يعمل جنباً إلى جنب مع هاتف آندرويد؛ أي يُتطلَّب إنشاء اتّصال بين نظام واجهة المستخدم في السيّارة مع الهاتف حتّى يتمكَّن نظام Android Auto من العمل بكافّة خصائصه. يجب مراعاة بعض المتطلّبات المُسبقة اللازمة لبدء برمجة تطبيقات نظام Android Auto، وهي ما يلي:

  • أن يتم تحديث واجهة برمجة التطبيقات المُخصًّصة للآندرويد (API) إلى نسخة 21 على الأقلّ، وهذه النسخة تدعم إصدارات الآندرويد من النسخة 5.0 فما فوق.
  • في حال إرادة برمجة تطبيقات المراسلة (Messaging apps)، فيجدر إدراج مكتبة NotificationCompat.CarExtender من أجل دعم التنبيهات (Notifications).

بعد التأكُّد من تحقيق المتطلّبات السابقة، يتم الآن التعريف بالخصائص التي تدعمها السيّارة، والتي من المفترض أن يدعمها التطبيق. لتعريف الخصائص التي تدعمها السيارة، يتم إنشاء ملفّ جديد (ذو صيغة xml.) وإضافته إلى المجلَّد “res/xml/”، ومن ثمَّ يتم تحديد الخصائص كالتالي:

  • في حال أراد مبرمج التطبيق دعم تشغيل الوسائط كالصوتيّات (Audio) مثلاً، يتم إضافة الأسطر التالية إلى الملفّ:
  • في حال أراد المبرمج دعم التنبيهات (Notifications)، فيتم إضافة الأسطر التالي:
 

ويمكن دعم كلا الخاصيّتين في نفس الوقت بإضافة سطري “uses” إلى الملفّ، بحيث يكونا من ضمن وسم <automotiveApp> واحد:

 

بعد الانتهاء من تحديد خصائص السيّارة، يتم تفعيل ملفّ الXML الذي تمَّ إنشاؤه مُسبقاً في مُجلَّد “res/xml/”، وذلك بالانتقال إلى ملفّ الmanifest الخاصّ بالمشروع وإضافة السطر التالي في وسم <application>:

 

يتم استبدال عبارة “XML_NAME” باسم ملفّ الXML الذي تمَّ إنشاؤه، ولكن بدون صيغة الملفّ xml.، فعلى سبيل المثال، لو كان اسم الملفّ الذي تمَّ إنشاؤه في الخطوات السابقة هو “mycar.xml”، فيصبح السطر السابق كما يلي:

 

الآن يمكن للمبرمج البدء ببرمجة التطبيق الذي يدعم نظام Android Auto الموجود في السيارات، ولكن يجب عليه مراعاة بعض الشروط الصارمة التي تفرضها شركة جوجل على تطبيقات السيّارات بغرض أمن السائق وسلامته.