4أغسطس

ج 3 – مدخل إلى عالم اﻷندرويد

مكونات التطبيقات في اندرويد :

قبل أن تبدأ في برمجة أي تطبيق لاي نظام تشغيل لابد وان تعلم البنية الأساسية لهذا التطبيق للتمكن من عمل تطبيقات يمكن الاعتماد عليها, فأندوريد به 6 مكونات أساسية كتالي :

1- Activities
كما ذكرنا سابقاً هي تعادل الـ Form في تطبيقات سطح المكتب وبالتالي فهي الشاشة التي تظهر للمستخدم و تحمل صفات الـ Activity Class و تستخدم الـ Activities مجموعة من الـ Views مكونة الواجهة الرسومية التي يتعامل معها المستخدم.

2- Services

تمثل العميل السري !! بحيث تعمل في صمت في خلفية النظام , تقوم بتحديث فاعدة البيانات مثلاً أو بعض العمليات التي تحدث في خلفية النظام و ظهورها على الشاشة يكون في شكل بعض التنبيهات و التحذيرات.

3- Content Providers

تستخدم في مشاركة البيانات بين التطبيقات Shareable Data Store, ذلك يعني انك تقوم بصنع Content Provider خاص بك لتتيح لأحد التطبيقات استخدام بعض البيانات الآخرى في تطبيق آخر كأن تقوم باستخدام الرسائل الموجودة في مدير الرسائل أو تقوم باستدعاء أحد الأسماء الموجودة في قائمة الأسماء الخاصة بالنظام.

4- Intents

عبارة عن منصة لتبادل الرسائل بين تطبيقات النظام أو بين الـ Activities الموجودة في التطبيق الواحد.

5- Broadcast Receivers

يمكنك أن تطلق عليها مستمعات Listeners لأي Intent يقوم بمناداة التطبيق الحاوي لها مما يؤدي إلى تشغيل التطبيق بمجرد استقابله للأمر.

6- Notifications

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

The Application Manifest

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

يحتوي ملف androidmanifest.xml على جميع مكونات التطبيق و بالتالي فهو يحتى بصورة أساسية على الستت مكونات السابق ذكرها(Activities, Services, Content Providers, and Broadcast
Receivers
) كما تحتوي على Intent-Filter و Permissions بحيث تحدد نطاق حركة التطبيق و التصاريح المتاحه له, و تحتوي على على بعض الخصائص الأخرى كالاسم الذي يظهر به التطبيق على النظام و كذلك أيقونة التطبيق.

ونلاحظ ان هذا الملف تمت كتابتة بلغة XML وبالتالي فهو يتكون من مجموعة من النقاط المتفرعه ,يبدأ الملف كالتالي

<manifest xmlns:android=http://schemas.android.com/apk/res/android
package="com.my_domain.my_app">
[ ... manifest nodes ... ]
</manifest>

و يحتوي على العديد من النقاط المنبثقة منها مجموعة من الخصائص.

كل ملف androidmanifest.xml يحتوي على ApplicationTag واحد فقط كالتالي

<application android:icon="@drawable/icon"
android:theme="@style/my_theme">
[ ... application nodes ... ]
</application>

حيث يحتوي على على خصائص التطبيق كأسمه أيقونته و الثيم الخاص به, و يحتوي ايضا على مجموعة من Tags تمثل المكونات الستة الاسبق ذكرهم كالتالي:

Activities

<activity android:name=".MyActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

ويحتوي على جميع الـ Activities الموجودة داخل التطبيق و يقوم باستخدام

android:name=".MyActivity"

لتحديد اسم الكلاس الحاملة للـ Activity

Services

<service android:enabled="true" android:name=".MyService"></service>

يتم عمل لكل كلاس تحمل Service serviceTag ليعبر عن وجودها داخل التطبيق

Provider

<provider android:permission="com.paad.MY_PERMISSION"
android:name=".MyContentProvider"
android:enabled="true"
android:authorities="com.paad.myapp.MyContentProvider">
</provider>

كل تطبيق يحتوي على Content Provider لإدارة الوصول لقاعدة البيننات الخاصة به و كذا إدارة مشاركة البيناتا بينه وبين التطيبيقات الآخرة لابد أن يحتوي على providerTag

Receiver

<receiver android:enabled="true"
android:label="My Broadcast Receiver"
android:name=".MyBroadcastReceiver">
</receiver>

بإضافة receiverTag يكون التطبيق على استعداد أن يتم تشغيلة بوساطة تطبيق آخر , أي تكون قادر على إنشاء Broadcast Receiver مستمع لأي Intent يقوم بتشغيلة

Uses-Permissions

<uses-permission android:name="android.permission.ACCESS_LOCATION">
</uses-permission>

يقوم uses-permissionTag بإدارة الصلاحيات التي سوف يستخدمها التطبيق و التي يقوم النظام بتنبيه المستخدم ان هذا التطبيق سوف يقوم باستخدامها عن عملية تنصيب التطبيق على النظام , كالوصول لخدمات الأنترنت أو الأسماء

Instrumentation

<instrumentation android:label="My Test"
android:name=".MyTestClass"
android:targetPackage="com.paad.aPackage">
</instrumentation>

تحتوي على مجموعة من الأدوات للتأكد من عمل الـ Activities و Services بصورة جيدة في وقت التشغيل RunTime

للمزيد من المعلومات حولandroidmanifest.xml يمكنك زيارة الموقع الرسمي للأندوريد

http://developer.android.com/guide/topics/manifest/manifest-intro.html

استخدام محرر Manifest

تحتو يالإضافة التي قمنا بإضافتها للـ Eclipse مسبقاً (ADT) على محرر رسومي لملف Manifest بحيث تقوم بإعطاء الصلاحيات و إضافة كل Activity بعيداً عن الكود , لوكن لابد لك ان يكون لك سابق خبرة بكيفية تعديل هذا الملف باستخدام الكود منعا لحدوث الأخطاء.

بمكنك الوصول لهذا المحرر عن طريق الضغط بالزر الأيمن على الملف و اختيار فتح بواسطة محرر Manifest

ملحوظة :

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

يعمل كل تطبيق في أندوريد كعملية منفردة Process وكل عملية تأخذ نسخه منفردة من الـ DVM و على غير العادة فيمكنك استخدام مجموعة من المكونات في تطبيقين مختلفين في نفس الوقت و كل تطبيق في Process مختلفة عن الآخر ولكن باستخدام خاصية

android : process

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

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

ادخل أندوريد مجموعة من المطلحات الجديدة التي سوف نقوم باستخدامها بصورة مستمرة والتي وف اقوم بذكرها كالتالي :

1- Views
وهي الكلاس الاساسية الخاصة بالواجهات الرسومية والتي تحتوي على المكونات المرئية (الأزرار و الحقول …. إلخ).و ينبثق منها كل الكلاسات الخاصة بالـ Layouts.

2- ViewGroups

هي امتداد للـ View والتي يمكن ان تجتوي على أكثر من ابن, و بالتالي فإن ViewGroups يمكن عن طريقها عمل مجموعات من المكونات الجاهزة للاستخدام دون الحاجه ابنائها في كل مرة.

3- Activities
قم الحديث عنها في السابق بصورة مفصلة

مقارنة سريعة بين أندوريد و الجافا Swing
سوف نرى مكونات أندوريد و مثيلاتها في الجافا Swing
Android < ————————————————————— > Swing
Activities < ———————————————————– > (J)Frame
Views < ————————————————– > (J)Components
TextViews < ———————————————————– > (J)Labels
EditTexts < —————————————————— > (J)TextFields
Buttons < ——————————————————— > (J)Buttons.

كما سوف نلاحظ أن وضع المستمعات Listeners متشابه ايضا
أندوريد

myView.setOnClickListener(new OnClickListener(){

Swing

myButton.addActionListener(new ActionListener() {
شارك التدوينة !

عن Mr.Xprt

تعليق واحد

  1. شكرا جدا جدا
    و ياريت تكمل بجد
    لان مشروع تخرجنا هيكون على اندرويد
    و ياريت لو معاك كتاب كمرجع كويس ضعه هنا

    انا عاوز اعرف كمان طريقة كتابة الأنترفيس و عمل action عليه

    شكرا

أضف رد على beshoy atef إلغاء الرد

لن يتم نشر البريد الإلكتروني . الحقول المطلوبة مشار لها بـ *

*

© Copyright 2014, All Rights Reserved