مقدّمة
تمَّ إطلاق نظام تشغيل آندرويد من قِبَل شركة جوجل في عام 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 الخاصّ بالمشروع:
1 2 3 4 5 6 7 8 9 10 11 |
<activity android:name="com.example.android.TvActivity" android:label="@string/app_name" android:theme="@style/Theme.Leanback"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> </activity> |
يجب تعديل قيمة android:name بما يتناسب مع اسم المشروع.
لدعم بيئة Leanback المُخصّصة للأجهزة الكبيرة، يتمّ وفي نفس الملفّ السابق، إضافة السطر التالي إلى وسم <manifest> (الوسم الرئيسي):
1 |
<uses-feature android:name="android.software.leanback" android:required="false" /> |
في حال كان التطبيق مُخصَّص لمنصّة AndroidTV فقط دون غيره، فيمكن إجبار دعم بيئة Leanback من خلال جعل قيمة android:required هي true:
1 |
<uses-feature android:name="android.software.leanback" android:required="true" /> |
كما يمكن أيضاً إلغاء دعم شاشات اللمس كمتطلَّب إجباري بإضافة السطر التالي:
1 |
<uses-feature android:name="android.hardware.touchscreen" android:required="false" /> |
بعد الانتهاء من الخطوات السابقة، يمكن إنشاء جهاز AndroidTV افتراضي لتشغيله بواسطة محاكي آندرويد، وذلك من خلال AVD Manager:
يُفضَّل الاطّلاع على مكتبة android.support.v17.leanback لمعرفة تفاصيل التعامل مع بيئة Leanback.
WearOS
إنَّ الواجهة البرمجيّة لنظام WearOS تتيح لمبرمج تطبيقات هذا النظام إمكانيّة الوصول إلى مكوّنات الجهاز الملبوس كالحسّاسات (Sensors) ووحدة معالجة الرسوميّات (GPU) وبرمجتها. لبدء برمجة تطبيقات نظام WearOS للأجهزة الملبوسة، يتم إنشاء مشروع جديد في Android Studio وتفعيل خيار دعم الأجهزة الملبوسة، بعد ذلك يقوم باختيار الواجهة التي يحتاجها من ضمن الواجهات المتوفّرة:
بعد الانتهاء من إنشاء المشروع، يتمّ الانتقال إلى ملفّ build.gradle الموجود في بيئة تطوير التطبيق، ومن ثمَّ إجراء العمليّات التالية:
- في قسم android، يتمّ التأكُّد من أنَّ قيمتي compileSdkVersion وtargetSdkVersion هي 26 على الأقلّ.
- إضافة المكتبات التالية في قسم dependencies:
1 2 3 4 5 |
dependencies { implementation 'com.android.support:wear:27.1.1' implementation 'com.google.android.support:wearable:2.3.0' compileOnly 'com.google.android.wearable:wearable:2.3.0' } |
في حال كان التطبيق يهدف إلى العمل بشكل منعزل عن أي هاتف أو جهاز آخر (أي لا يتطلَّب التطبيق وجود هاتف للعمل كما هو الحال في ساعة Apple Watch، والتي تتطلَّب برمجتها للاتصال بجهاز iPhone حتّى تتمكَّن من العمل كما يجب)، فيتم إضافة السطر التالي إلى ملفّ الmanifest في وسم <application>:
1 2 3 4 5 6 7 |
<application> ... <meta-data android:name="com.google.android.wearable.standalone" android:value="true" /> ... </application> |
أخيراً، يتم الإشارة إلى أنَّ التطبيق يدعم الأجهزة الملبوسة بإضافة السطر التالي في نفس الملفّ، ولكن في وسم <manifest> الرئيسي:
1 2 3 4 5 |
<manifest> ... <uses-feature android:name="android.hardware.type.watch" /> ... </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) مثلاً، يتم إضافة الأسطر التالية إلى الملفّ:
1 2 3 |
<automotiveApp> <uses name="media" /> </automotiveApp> |
- في حال أراد المبرمج دعم التنبيهات (Notifications)، فيتم إضافة الأسطر التالي:
1 2 3 |
<automotiveApp> <uses name="notification" /> </automotiveApp> |
ويمكن دعم كلا الخاصيّتين في نفس الوقت بإضافة سطري “uses” إلى الملفّ، بحيث يكونا من ضمن وسم <automotiveApp> واحد:
1 2 3 4 |
<automotiveApp> <uses name="media" /> <uses name="notification" /> </automotiveApp> |
بعد الانتهاء من تحديد خصائص السيّارة، يتم تفعيل ملفّ الXML الذي تمَّ إنشاؤه مُسبقاً في مُجلَّد “res/xml/”، وذلك بالانتقال إلى ملفّ الmanifest الخاصّ بالمشروع وإضافة السطر التالي في وسم <application>:
1 |
<meta-data android:name="com.google.android.gms.car.application" android:resource="@xml/XML_NAME"/> |
يتم استبدال عبارة “XML_NAME” باسم ملفّ الXML الذي تمَّ إنشاؤه، ولكن بدون صيغة الملفّ xml.، فعلى سبيل المثال، لو كان اسم الملفّ الذي تمَّ إنشاؤه في الخطوات السابقة هو “mycar.xml”، فيصبح السطر السابق كما يلي:
1 |
<meta-data android:name="com.google.android.gms.car.application" android:resource="@xml/mycar"/> |
الآن يمكن للمبرمج البدء ببرمجة التطبيق الذي يدعم نظام Android Auto الموجود في السيارات، ولكن يجب عليه مراعاة بعض الشروط الصارمة التي تفرضها شركة جوجل على تطبيقات السيّارات بغرض أمن السائق وسلامته.