<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>Ardroid &#124; أردرويد &#187; Eclipse</title> <atom:link href="http://ardroid.com/tag/eclipse/feed/" rel="self" type="application/rss+xml" /><link>http://ardroid.com</link> <description>أندرويد للمستخدمين العرب</description> <lastBuildDate>Fri, 10 Feb 2012 17:25:29 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>غوغل تطلق نسخة جديدة من إضافة ADT لـ Eclipse</title><link>http://ardroid.com/2011/06/07/google-releases-a-new-version-of-adt-for-eclipse/</link> <comments>http://ardroid.com/2011/06/07/google-releases-a-new-version-of-adt-for-eclipse/#comments</comments> <pubDate>Tue, 07 Jun 2011 09:19:55 +0000</pubDate> <dc:creator>أنس المعراوي</dc:creator> <category><![CDATA[أخبار أندرويد]]></category> <category><![CDATA[برمجة أندرويد]]></category> <category><![CDATA[ADT]]></category> <category><![CDATA[ADT 11.0.0]]></category> <category><![CDATA[Android Development Tools]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Google I/O 2011]]></category><guid
isPermaLink="false">http://ardroid.com/?p=9052</guid> <description><![CDATA[إن كنت من مطوري أندرويد تستطيع الآن تحميل النسخة الجديدة 11.0.0 من إضافة &#8216;أدوات تطوير أندرويد&#8217; أو ADT لمنصة Eclipse. هذه النسخة تم الإعلان عنها ضمن مؤتمر Google I/O الشهر الماضي والآن أصبحت متاحة للمطورين كي يقوموا بتحميلها. تقدم النسخة الجديدة الكثير من الميزات التي يتركز معظمها على مساعدة المطور في تصميم واجهات أجمل بمجهود&#8230; <a
href="http://ardroid.com/2011/06/07/google-releases-a-new-version-of-adt-for-eclipse/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<p>إن كنت من مطوري أندرويد تستطيع الآن تحميل النسخة الجديدة 11.0.0 من إضافة &#8216;أدوات تطوير أندرويد&#8217; أو ADT لمنصة Eclipse. هذه النسخة تم الإعلان عنها ضمن مؤتمر Google I/O الشهر الماضي والآن أصبحت متاحة للمطورين كي يقوموا بتحميلها.</p><p>تقدم النسخة الجديدة الكثير من الميزات التي يتركز معظمها على مساعدة المطور في تصميم واجهات أجمل بمجهود أقل. إن كنت تعتقد بأن تطبيقات أندرويد التي تستخدم عناصر وواجهات أندرويد الافتراضية من أزرار ونوافذ .. الخ لا تبدو جميلة جداً, فالهدف من هذا الإصدار هو تقديم أدوات جديدة تسهم في تصاميم أفضل وأجمل لتطبيقات أندرويد.</p><p>إن كنت مهتماً يمكنك معرفة المزيد <a
href="http://developer.android.com/sdk/eclipse-adt.html" target="_blank">من هنا</a>, ومشاهدة الفيديو التالي الذي يستعرض في ساعة كاملة جميع ميزات النسخة الجديدة من ADT خلال مؤتمر Google I/O.</p><p><a
href="http://ardroid.com/2011/06/07/google-releases-a-new-version-of-adt-for-eclipse/"><em>Click here to view the embedded video.</em></a></p><p>[<a
href="http://androidandme.com/2011/06/news/google-releases-a-new-version-of-the-adt-with-the-goal-of-making-android-apps-look-better/" target="_blank">Android and Me</a>]</p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2011/06/07/google-releases-a-new-version-of-adt-for-eclipse/feed/</wfw:commentRss> <slash:comments>8</slash:comments> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2011/03/androideasily.jpg" /> </item> <item><title>إطلاق النسخة النهائية من حزمة التطوير لأندرويد 3.0</title><link>http://ardroid.com/2011/02/23/final-android-3-0-sdk-released/</link> <comments>http://ardroid.com/2011/02/23/final-android-3-0-sdk-released/#comments</comments> <pubDate>Wed, 23 Feb 2011 13:31:24 +0000</pubDate> <dc:creator>أنس المعراوي</dc:creator> <category><![CDATA[أخبار أندرويد]]></category> <category><![CDATA[Android 3.0]]></category> <category><![CDATA[Android SDK]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Honeycomb]]></category> <category><![CDATA[Motorola Xoom]]></category> <category><![CDATA[تطوير]]></category> <category><![CDATA[تطوير أندرويد]]></category> <category><![CDATA[مطورون]]></category><guid
isPermaLink="false">http://ardroid.com/?p=7616</guid> <description><![CDATA[أطلقت غوغل اليوم النسخة النهائية من حزمة التطوير SDK الخاصة بنسخة أندرويد 3.0 &#8211; Honeycomb, بعد أن كانت قد أطلقت الشهر الماضي نسخة مبكرة وتجريبية من نفس الحزمة. النسخة النهائية من الـ SDK تعني بأن المطورين الذين طوروا تطبيقاتهم بناءاً على النسخة التجريبية السابقة يستطيعون الآن اختبارها بشكل نهائي على النسخة الجديدة ثم إطلاقها إلى&#8230; <a
href="http://ardroid.com/2011/02/23/final-android-3-0-sdk-released/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<img
width="600" height="375" src="http://ardroid.com/wp-content/uploads/2011/02/246646435-600x375.png" class="attachment-large" alt="246646435" title="246646435" /><p>أطلقت غوغل اليوم النسخة النهائية من حزمة التطوير SDK الخاصة بنسخة أندرويد 3.0 &#8211; Honeycomb, بعد أن كانت قد أطلقت الشهر الماضي نسخة مبكرة وتجريبية من نفس الحزمة.</p><p><span
id="more-7616"></span>النسخة النهائية من الـ SDK تعني بأن المطورين الذين طوروا تطبيقاتهم بناءاً على النسخة التجريبية السابقة يستطيعون الآن اختبارها بشكل نهائي على النسخة الجديدة ثم إطلاقها إلى سوق أندرويد فوراً, بحيث سيستطيع المستخدمون تحميل التطبيقات الخاصة بقرص العسل على حاسب Motorola Xoom الذي سيصبح متوفراً في الولايات المتحدة بدءاً من يوم غد.</p><p>ترافق مع إطلاق الحزمة الجديدة أيضاً إطلاق نسخة محدثة من الإضافة الخاصة بـ Eclipse والتي تمكن المطورين من تطوير تطبيقات أندرويد بشكل أفضل وأسرع ومن المتوقع أن يتم إطلاق الكود المصدري لأندرويد 3.0 خلال الساعات القادمة.</p><p><a
href="http://ardroid.com/wp-content/uploads/2011/02/thumb_550_Android_SDK.png" rel="lightbox[7616]"><img
class="aligncenter size-full wp-image-7618" title="thumb_550_Android_SDK" src="http://ardroid.com/wp-content/uploads/2011/02/thumb_550_Android_SDK.png" alt="" width="550" height="322" /></a></p><p><a
href="http://ardroid.com/wp-content/uploads/2011/02/246645607.png" rel="lightbox[7616]"><img
class="aligncenter size-large wp-image-7619" title="246645607" src="http://ardroid.com/wp-content/uploads/2011/02/246645607-600x376.png" alt="" width="600" height="376" /></a></p><p><a
href="http://ardroid.com/wp-content/uploads/2011/02/246646435.png" rel="lightbox[7616]"><img
class="aligncenter size-large wp-image-7620" title="246646435" src="http://ardroid.com/wp-content/uploads/2011/02/246646435-600x375.png" alt="" width="600" height="375" /></a></p><p>[<a
href="http://android-developers.blogspot.com/2011/02/final-android-30-platform-and-updated.html" target="_blank">Android Developers blog</a>]</p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2011/02/23/final-android-3-0-sdk-released/feed/</wfw:commentRss> <slash:comments>30</slash:comments> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2011/01/honeycomb-bee-550x550-540x540.png" /> </item> <item><title>سلسلة تعلم برمجة تطبيقات الأندرويد .. الدرس الخامس</title><link>http://ardroid.com/2010/01/27/android-programming-series-l5/</link> <comments>http://ardroid.com/2010/01/27/android-programming-series-l5/#comments</comments> <pubDate>Wed, 27 Jan 2010 20:21:55 +0000</pubDate> <dc:creator>وائل العلواني</dc:creator> <category><![CDATA[دروس وتعليمات]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Android SDK]]></category> <category><![CDATA[developers]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[أندرويد]]></category> <category><![CDATA[برامج]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[تطبيقات]]></category> <category><![CDATA[مطورون]]></category><guid
isPermaLink="false">http://ardroid.com/?p=1107</guid> <description><![CDATA[مرحبا.. مع وصولنا الى الحلقة الخامسة من سلسلة تعلم برمجة الأندرويد، وبعد تغطيتنا لأهم المفاهيم، ستكون الحلقات القادمة عبارة عن أمثلة متنوعة أنقلها لكم من مصادر مختلفة كالكتب والمواقع الالكترونية. وستتنوع هذه الأمثلة كون البرمجة والحزمة البرمجية SDK ماهي الا أدوات في صندوق العدة الذي يحمله المبرمج، والتطبيقات تتشكل بحسب إبداع ومهارة المبرمج. سنتعلم في&#8230; <a
href="http://ardroid.com/2010/01/27/android-programming-series-l5/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<img
width="363" height="292" src="http://ardroid.com/wp-content/uploads/2010/01/android_flickr_samuraispy-copy.jpg" class="attachment-large" alt="android_flickr_samuraispy copy" title="android_flickr_samuraispy copy" /><p
dir="rtl">مرحبا..</p><p
dir="rtl">مع وصولنا الى الحلقة الخامسة من سلسلة تعلم برمجة الأندرويد، وبعد تغطيتنا لأهم المفاهيم، ستكون الحلقات القادمة عبارة عن أمثلة متنوعة أنقلها لكم من مصادر مختلفة كالكتب والمواقع الالكترونية. وستتنوع هذه الأمثلة كون البرمجة والحزمة البرمجية SDK ماهي الا أدوات في صندوق العدة الذي يحمله المبرمج، والتطبيقات تتشكل بحسب إبداع ومهارة المبرمج.</p><p
dir="rtl">سنتعلم في هذا الدرس المواضيع التالية:</p><p
dir="rtl">١- استخدام الواجهة الخاصة بالإعدادات كتلك المستخدمة في نظام الأندرويد</p><p
dir="rtl">٢- تعديل الثيم الخاص بعرض الرسالة</p><p
dir="rtl">٣- تشغيل مقاطع صوتية داخل التطبيق</p><p
dir="rtl"><p
dir="rtl"><strong>١- استخدام الواجهة الخاصة بالإعدادات كالمستخدمة في الأندرويد<span
style="font-weight: normal"> </span></strong></p><p
dir="rtl">سنستخدم التطبيق الذي قمنا بالعمل عليه في الحلقة السابقة لنضيف نشاطا ثالثا. ننشيء ملفا باسم: Act3.java ونضع فيه التالي:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">android.programming.series.ArdroidMultiActs</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.preference.PreferenceActivity</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Act3 <span style="color: #000000; font-weight: bold;">extends</span> PreferenceActivity
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
@Override
&nbsp;
<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
addPreferencesFromResource<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">act3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>ننشيء ملفا تحت res/layout تحت مسمى act3.xml ونضع فيه التالي:</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;PreferenceScreen</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;CheckBoxPreference</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:key</span>=<span style="color: #ff0000;">&quot;setting1&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:title</span>=<span style="color: #ff0000;">&quot;Setting 1&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:summary</span>=<span style="color: #ff0000;">&quot;Modify setting 1&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:defaultValue</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;CheckBoxPreference</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:key</span>=<span style="color: #ff0000;">&quot;setting2&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:title</span>=<span style="color: #ff0000;">&quot;Setting 2&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:summary</span>=<span style="color: #ff0000;">&quot;Modify setting 2&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:defaultValue</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;CheckBoxPreference</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:key</span>=<span style="color: #ff0000;">&quot;setting3&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:title</span>=<span style="color: #ff0000;">&quot;Setting 3&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:summary</span>=<span style="color: #ff0000;">&quot;Modify setting 3&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:defaultValue</span>=<span style="color: #ff0000;">&quot;false&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/PreferenceScreen<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><p
dir="rtl">نضيف التالي في ملف القائمة ArdroidMultiActs.java :</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">menu.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #0000ff;">&quot;Act3&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>ومن ثم:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> onOptionsItemSelected <span style="color: #009900;">&#40;</span><span style="color: #003399;">MenuItem</span> item<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">switch</span> <span style="color: #009900;">&#40;</span>item.<span style="color: #006633;">getItemId</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">:</span>
&nbsp;
showAct1<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span>
&nbsp;
showAct2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">:</span>
&nbsp;
showAct3<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p
dir="rtl">ومن ثم:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> showAct3<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
Intent autocomplete3 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, Act3.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
startActivity<span style="color: #009900;">&#40;</span>autocomplete3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>وختاما نضيف التالي في ArdroidMultiActs Manifest.java :</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;activity</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;.Act3&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;activity 3&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.action.MAIN&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.category.LAUNCHER&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/activity<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><p
dir="rtl">البرنامج يصبح كالتالي عند اختيار الخيار الثالث:</p><p
style="text-align: center" dir="rtl"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-27-at-12.38.58-PM.png" rel="lightbox[1107]"><img
class="size-medium wp-image-1113  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-27-at-12.38.58-PM-203x300.png" alt="" width="203" height="300" /></a></p><p
dir="rtl"><strong>٢- تعديل الثيم الخاص بعرض الرسالة</strong></p><p
dir="rtl">يمكننا استخدام ثيمات معرفة مسبقا في الحزمة التطويرية لعرض المحتوى الذي نرغبه. وسنجد أن هذه الثيمات تشابه تلك المستخدمة في الأندرويد نفسه. لتحديد نوع الثيم الخاص بنشاط معين، ننشيء ملفا باسم: Act4.java ونضع فيه التالي:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">android.programming.series.ArdroidMultiActs</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Activity</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Act4 <span style="color: #000000; font-weight: bold;">extends</span> Activity
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
@Override
&nbsp;
<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">act4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p
dir="rtl">ننشيء ملفا تحت res/layout تحت مسمى act4.xml ونضع فيه التالي:</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;LinearLayout</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:orientation</span>=<span style="color: #ff0000;">&quot;vertical&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TextView</span> <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/text&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;This is an android powered application&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/LinearLayout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><p
dir="rtl">نضيف التالي في ملف القائمة ArdroidMultiActs.java :</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">menu.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #0000ff;">&quot;Act4&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p
dir="rtl">ومن ثم:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> onOptionsItemSelected <span style="color: #009900;">&#40;</span><span style="color: #003399;">MenuItem</span> item<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">switch</span> <span style="color: #009900;">&#40;</span>item.<span style="color: #006633;">getItemId</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">:</span>
&nbsp;
showAct1<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span>
&nbsp;
showAct2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">:</span>
&nbsp;
showAct3<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">:</span>
&nbsp;
showAct4<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p
dir="rtl">ومن ثم:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> showAct4<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
Intent autocomplete4 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, Act4.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
startActivity<span style="color: #009900;">&#40;</span>autocomplete4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p
dir="rtl">وختاما نضيف التالي في ArdroidMultiActs Manifest.java :</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;activity</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;.Act4&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;activity 4&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:theme</span>=<span style="color: #ff0000;">&quot;@android:style/Theme.Dialog&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.action.MAIN&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.category.LAUNCHER&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/activity<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><p
dir="rtl">بالضغط على الخيار الرابع، يظهر لدينا ما يلي:</p><p
style="text-align: center" dir="rtl"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-27-at-4.56.37-PM.png" rel="lightbox[1107]"><img
class="size-medium wp-image-1108  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-27-at-4.56.37-PM-204x300.png" alt="" width="204" height="300" /></a></p><p
dir="rtl"><strong>٣- تشغيل مقاطع صوتية داخل التطبيق</strong></p><p
dir="rtl">من المفيد أحيانا إضافة مقاطع صوتية للتطبيق وتمكينه من تشغيلها. قد تكون المقاطع مقترنة بأزرار لوحة المفاتيح إن وجدت، أو بأزرار نقوم بإنشائها داخل التطبيق. سنقوم بعمل تطبيق يحتوي على زر واحد من شأنه تشغيل مقطع صوتي في حال الضغط عليه. كما سيقوم بعمل إيقاف مؤقت للمقطع في حال ضغطنا عليه من جديد.</p><p
dir="rtl">أود التنبيه لنقطة مهمة. فيما سبق، قمت بذكر أن المقاطع الصوتية ومقاطع الفيديو يتم إضافتها الى ملف ال  assets. ولكن التغييرات العديدة في الحزمة البرمجية التطويرية SDK قامت باسترجاع الطريقة السابقة من حيث المكان الذي توضع فيه مقاطع الصوت. والطريقة السابقة تقتضي بوضع المقطع في مجلد اسمه raw نقوم بإنشائه تحت المجلد res. سأقوم بوضع أغنية سميتها song.mp3 في مشروع جديد أسميته AndroidAudio على النحو التالي:</p><p
style="text-align: center" dir="rtl"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-27-at-8.22.01-PM.png" rel="lightbox[1107]"><img
class="size-full wp-image-1109  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-27-at-8.22.01-PM.png" alt="" width="158" height="136" /></a></p><p
dir="rtl">في ملف ال main.xml، قمت بإضافة الكود التالي:</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;LinearLayout</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:orientation</span>=<span style="color: #ff0000;">&quot;vertical&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:background</span>=<span style="color: #ff0000;">&quot;#4500ffff&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:padding</span>=<span style="color: #ff0000;">&quot;40dip&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TextView</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;Android Audio&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Button</span> <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/ac1&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;play/pause&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/LinearLayout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><p
dir="rtl">الآن نعود الى ملف المصدر البرمجي AndroidAudio.java وأقوم باستيراد المكتبات والمجموعات التالية:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Activity</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.media.MediaPlayer</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.view.View</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.Button</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.Toast</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p
dir="rtl">المجموعة الثانية خاصة بالكائن الذي سنقوم بإضافة الأغنية له. بالنسبة لآخر مجموعة، سنرى تأثيرها فيما بعد.</p><p
dir="rtl">نقوم بإضافة الكود التالي:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> AndroidAudio <span style="color: #000000; font-weight: bold;">extends</span> Activity <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> playstop <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> MediaPlayer mp<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle ww<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>ww<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">Button</span> play <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Button</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">findViewById</span><span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">ac1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> MediaPlayer mp <span style="color: #339933;">=</span> MediaPlayer.<span style="color: #006633;">create</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, R.<span style="color: #006633;">raw</span>.<span style="color: #006633;">song</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
play.<span style="color: #006633;">setOnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Button</span>.<span style="color: #006633;">OnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onClick<span style="color: #009900;">&#40;</span><span style="color: #003399;">View</span> v<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>playstop <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
MediaHandler<span style="color: #009900;">&#40;</span>mp,<span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//mp.start();</span>
&nbsp;
playstop <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
&nbsp;
show1<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;played&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">else</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
MediaHandler<span style="color: #009900;">&#40;</span>mp,<span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//mp.pause();</span>
&nbsp;
playstop <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
&nbsp;
show1<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;paused&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p
dir="rtl">المتغير playstop يتم استخدامه أثناء الضغط على الزر حتى نتمكن من معرفة حالة المقطع (يعمل أو متوقف). الدالة MediaHandler هي دالة قمت بتعريفها والغرض منها تمرير الكائن الذي يحمل المقطع الصوتي إضافة الى رقم تقوم من خلاله الدالة بإيقاف المقطع أو إعادة تشغيله (ويمكن الاستعاضة عنها باستخدام السطر الذي يليها مباشرة). الدالة show1 هي دالة نقوم بتمرير عبارة نصية عبرها تقوم بإظهارها بشكل مؤقت على الشاشة.</p><p
dir="rtl">الدالة MediaHandler :</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> MediaHandler<span style="color: #009900;">&#40;</span>MediaPlayer mp, <span style="color: #000066; font-weight: bold;">int</span> e<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>e <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
mp.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">else</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
mp.<span style="color: #006633;">pause</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p
dir="rtl">الدالة show1 :</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> show1<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> ss<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
Toast.<span style="color: #006633;">makeText</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, ss,Toast.<span style="color: #006633;">LENGTH_SHORT</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p
dir="rtl">الشكل النهائي لملف AndroidAudio.java</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">android.programming.series.AndroidAudio</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Activity</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.media.MediaPlayer</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.view.View</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.Button</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.Toast</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> AndroidAudio <span style="color: #000000; font-weight: bold;">extends</span> Activity <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> playstop <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> MediaPlayer mp<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle ww<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>ww<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">Button</span> play <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Button</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">findViewById</span><span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">ac1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> MediaPlayer mp <span style="color: #339933;">=</span> MediaPlayer.<span style="color: #006633;">create</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, R.<span style="color: #006633;">raw</span>.<span style="color: #006633;">song</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
play.<span style="color: #006633;">setOnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Button</span>.<span style="color: #006633;">OnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onClick<span style="color: #009900;">&#40;</span><span style="color: #003399;">View</span> v<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>playstop <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
MediaHandler<span style="color: #009900;">&#40;</span>mp,<span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//mp.start();</span>
&nbsp;
playstop <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
&nbsp;
show1<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;played&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">else</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
MediaHandler<span style="color: #009900;">&#40;</span>mp,<span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//mp.pause();</span>
&nbsp;
playstop <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
&nbsp;
show1<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;paused&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> MediaHandler<span style="color: #009900;">&#40;</span>MediaPlayer mp, <span style="color: #000066; font-weight: bold;">int</span> e<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>e <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
mp.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">else</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
mp.<span style="color: #006633;">pause</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> show1<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> ss<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
Toast.<span style="color: #006633;">makeText</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, ss,Toast.<span style="color: #006633;">LENGTH_SHORT</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-27-at-8.35.50-PM.png" rel="lightbox[1107]"><img
class="size-medium wp-image-1110  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-27-at-8.35.50-PM-203x300.png" alt="" width="203" height="300" /></a></p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-27-at-8.37.26-PM.png" rel="lightbox[1107]"><img
class="size-medium wp-image-1111  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-27-at-8.37.26-PM-259x300.png" alt="" width="259" height="300" /></a></p><p
style="text-align: center"><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-27-at-8.37.43-PM.png" rel="lightbox[1107]"><img
class="size-medium wp-image-1112  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-27-at-8.37.43-PM-249x300.png" alt="" width="249" height="300" /></a></p><p
dir="rtl">أتمنى أن تكون هذه الحلقة قد نالت إعجابكم. تحياتي لكم <img
src='http://ardroid.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2010/01/27/android-programming-series-l5/feed/</wfw:commentRss> <slash:comments>9</slash:comments> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2010/01/android_flickr_samuraispy-copy.jpg" /> </item> <item><title>سلسلة تعلم برمجة تطبيقات الأندرويد .. الدرس الرابع</title><link>http://ardroid.com/2010/01/18/android-programming-series-l4/</link> <comments>http://ardroid.com/2010/01/18/android-programming-series-l4/#comments</comments> <pubDate>Mon, 18 Jan 2010 21:37:46 +0000</pubDate> <dc:creator>وائل العلواني</dc:creator> <category><![CDATA[دروس وتعليمات]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[developers]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[tutorial]]></category> <category><![CDATA[أندرويد]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[دروس]]></category> <category><![CDATA[مطورون]]></category><guid
isPermaLink="false">http://ardroid.com/?p=1002</guid> <description><![CDATA[مرحبا بكم من جديد.. تساءل عدد من القراء إن كان يلزمهم الالمام بلغة الجافا حتى يتمكنوا من اتمام هذه السلسلة واستيعابها. الجواب نعم! وهناك عدد من الكتب التي تشرح لغة الجافا البرمجية بشكل مبسط وسهل الفهم ولعل أهمها برأيي هو كتاب Thinking in Java. وطبعا يوجد عدد من المواقع\المنتديات العربية التي تقدم دروسا في الجافا&#8230; <a
href="http://ardroid.com/2010/01/18/android-programming-series-l4/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<img
width="460" height="285" src="http://ardroid.com/wp-content/uploads/2010/01/Android-SS1.jpg" class="attachment-large" alt="Android SS1" title="Android SS1" /><p>مرحبا بكم من جديد..</p><p>تساءل عدد من القراء إن كان يلزمهم الالمام بلغة الجافا حتى يتمكنوا من اتمام هذه السلسلة واستيعابها. الجواب نعم! وهناك عدد من الكتب التي تشرح لغة الجافا البرمجية بشكل مبسط وسهل الفهم ولعل أهمها برأيي هو كتاب <a
href="http://www.amazon.com/Thinking-Java-4th-Bruce-Eckel/dp/0131872486">Thinking in Java</a>. وطبعا يوجد عدد من المواقع\المنتديات العربية التي تقدم دروسا في الجافا لمختلف المستويات.</p><p>وأرسل لي أحد القراء الأفاضل رسالة يتساءل فيها عن أفضل الكتب التي تشرح برمجة الأندرويد. في الواقع هناك كتب عديدة يمكن مطالعة عناوينها وتقييماتها عبر أمازون، على أنني لا أفضل الكتاب الذي ذكرت في بداية السلسلة بأنني سأستخدمه أثناء الشرح والسبب كمية الأخطاء الكبيرة الموجودة في هذا الكتاب، إضافة الى أنه يستخدم الحزم البرمجية القديمة التي انقرض عدد من أهم دوالها في الحزم الجديدة، وهذا ما أدى الى حصول الكتاب على تقييم منخفض في Amazon من قبل القراء، حتى أن عددا منهم انتقدوا عدم تقيد الكاتب ب &#8220;عرف&#8221; الجافا <a
href="http://java.sun.com/docs/codeconv/">Java Convention</a> في تسمية الدوال وال Packages، وأعترف بأنني لم أقم بالا لهذا الأمر في هذه السلسلة ولكنني سأعمل على تدارك الموضوع في الدروس القادمة، فمعذرة من قرائنا الأعزاء.</p><p>ابتداء من هذا الدرس ستتنوع المصادر التي سأستخدمها في الشرح العملي، حيث أننا استوفينا شرح الجانب النظري المبسط من الأندرويد بمساعدة الكتاب آنف الذكر وهي بالمناسبة النقطة الوحيدة المضيئة في هذا الكتاب، وكان لزاما عليّ أن ألجأ لأحد الكتب في شرح المفاهيم النظرية لأنني لست بارعا في شرحها مرتبة ومتسلسلة <img
src='http://ardroid.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p><p>حسنا، بعد المقدمة الطويلة، سنتعرف اليوم على:</p><p><strong>١- كيفية التأكد من صحة المدخلات باستخدام Regular Expressions وكيفية إظهار رسالة خطأ.</strong></p><p><strong>٢- استخدام زر القائمة Menu وكيفية اضافة خيارات له.</strong></p><p><strong>٣- كيفية عمل تطبيق متعدد الأنشطة.</strong></p><p>لنبدأ..</p><p><strong>١- كيفية التأكد من صحة المدخلات باستخدام Regular Expressions وكيفية إظهار رسالة خطأ.</strong></p><p>سنقوم باستدعاء المكتبة</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.regex.*</span><span style="color: #339933;">;</span></pre></div></div><p>وسنقوم في داخل المجموعة المجهولة الخاصة بزر الاتصال بعمل باستدعاء دالة validatePhoneNumber (سنقوم بكتابة محتواها بعد قليل) لتتحقق من البيانات التي قام بإدخالها المستخدم. والآن، عند استدعاء الدالة الخاصة بالزر (عند ضغط الزر) سنستخدم جملة if على الشكل التالي:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;">callButton.<span style="color: #006633;">setOnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Button</span>.<span style="color: #006633;">OnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onClick<span style="color: #009900;">&#40;</span><span style="color: #003399;">View</span> v<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>validatePhoneNumber<span style="color: #009900;">&#40;</span>phoneNumber.<span style="color: #006633;">getText</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
Intent callIntent <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span>Intent.<span style="color: #006633;">ACTION_CALL</span>,Uri.<span style="color: #006633;">parse</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;tel:&quot;</span> <span style="color: #339933;">+</span> phoneNumber.<span style="color: #006633;">getText</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
callIntent.<span style="color: #006633;">setFlags</span><span style="color: #009900;">&#40;</span>Intent.<span style="color: #006633;">FLAG_ACTIVITY_NEW_TASK</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
startActivity<span style="color: #009900;">&#40;</span>callIntent<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">else</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
showDialog<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>بالنسبة لما ورد في جملة else، سنقوم بتجاهله حاليا.</p><p>علينا الآن كتابة محتوى الدالة validatePhoneNumber على الشكل التالي: (وهي ستكون كدالة تابعة للمجموعة المجهولة Anonymous Class):</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">boolean</span> validatePhoneNumber<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> number<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
Pattern phoneNumber1 <span style="color: #339933;">=</span> Pattern.<span style="color: #006633;">compile</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;(<span style="color: #000099; font-weight: bold;">\\</span>d{2}-)?<span style="color: #000099; font-weight: bold;">\\</span>d{7}&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
Matcher matcher <span style="color: #339933;">=</span> phoneNumber1.<span style="color: #006633;">matcher</span><span style="color: #009900;">&#40;</span>number<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> matcher.<span style="color: #006633;">matches</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>عند استدعاء هذه الدالة، نستدعي بداية الدالة Pattern.compile التي تقوم بإنشاء رقم بناء على الصيغة التي عرفناها (وهناك قواعد عديدة لصيغ التحقق وقمت باختيار</p><p>(\\d{2}-)?\\d{7}</p><p>والتي تعني أن المستخدم يمكنه ادخال رقمين في البداية ووضع &#8211; بعدهم ومن ثم اكمال الرقم بسبعة أعداد. كما يحق له عدم ادخال الرقمين الأولين وعدم ادخال &#8211; ولكنه يجب أن يدخل سبعة أعداد. فمثلا الرقم 01-1234567 هو رقم صحيح، والرقم 1234567صحيح ولكن 1-1234567 والرقم 123456 هو غير صحيح.).</p><p>تقوم الدالة</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">matcher<span style="color: #009900;">&#40;</span>number<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>بمقارنة الرقم المدخل من قبل المستخدم بالرقم المنشأ الذي يتبع الصيغة التي عرّفناها. تقوم الدالة</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">validatePhoneNumber<span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>بإعادة صح أم خطأ True or Flase .</p><p>المجموعة المجهولة الخاصة بالزر تصبح على النحو التالي:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;">callButton.<span style="color: #006633;">setOnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Button</span>.<span style="color: #006633;">OnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onClick<span style="color: #009900;">&#40;</span><span style="color: #003399;">View</span> v<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>validatePhoneNumber<span style="color: #009900;">&#40;</span>phoneNumber.<span style="color: #006633;">getText</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
Intent callIntent <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span>Intent.<span style="color: #006633;">ACTION_CALL</span>,Uri.<span style="color: #006633;">parse</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;tel:&quot;</span> <span style="color: #339933;">+</span> phoneNumber.<span style="color: #006633;">getText</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
callIntent.<span style="color: #006633;">setFlags</span><span style="color: #009900;">&#40;</span>Intent.<span style="color: #006633;">FLAG_ACTIVITY_NEW_TASK</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
startActivity<span style="color: #009900;">&#40;</span>callIntent<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">else</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
showDialog<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">boolean</span> validatePhoneNumber<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> number<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
Pattern phoneNumber1 <span style="color: #339933;">=</span> Pattern.<span style="color: #006633;">compile</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;(<span style="color: #000099; font-weight: bold;">\\</span>d{2}-)?<span style="color: #000099; font-weight: bold;">\\</span>d{7}&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
Matcher matcher <span style="color: #339933;">=</span> phoneNumber1.<span style="color: #006633;">matcher</span><span style="color: #009900;">&#40;</span>number<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> matcher.<span style="color: #006633;">matches</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p>نتحول الآن الى كيفية إظهار رسالة خطأ والتي استدعيناها في جملة ال Else في الدالة السابقة عبر استدعاء</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">showDialog<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>وهي دالة موجودة في مجموعة Activity التي يتبع لها تطبيقنا ككل. تقوم دالة أخرى موجودة في ال Activity أيضا وتسمى</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">onCreateDialog<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> id<span style="color: #009900;">&#41;</span></pre></div></div><p>باستقبال الطلب الذي أطلقته الدالة السابقة</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">showDialog<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span></pre></div></div><p>بداية، نقوم باستدعاء المكتبات والمجموعات التالية:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Dialog</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.AlertDialog</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.content.DialogInterface</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p>ونقوم الآن بكتابة محتوى الدالة</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">onCreateDialog<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> id<span style="color: #009900;">&#41;</span></pre></div></div><p>بالشكل التالي:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #003399;">Dialog</span> onCreateDialog<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> id<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>id <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">new</span> AlertDialog.<span style="color: #006633;">Builder</span><span style="color: #009900;">&#40;</span>AndroidPhoneDialer.<span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>
&nbsp;
.<span style="color: #006633;">setTitle</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Error&quot;</span><span style="color: #009900;">&#41;</span>
&nbsp;
.<span style="color: #006633;">setMessage</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;please enter a valid number&quot;</span><span style="color: #009900;">&#41;</span>
&nbsp;
.<span style="color: #006633;">setPositiveButton</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;OK&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> DialogInterface.<span style="color: #006633;">OnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onClick<span style="color: #009900;">&#40;</span>DialogInterface dialog, <span style="color: #000066; font-weight: bold;">int</span> whichButton<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* User clicked OK so do some stuff */</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
&nbsp;
.<span style="color: #006633;">create</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">else</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>لا صعوبة تذكر في هذه الدالة، ولاحظوا كيفية تحديد النص المراد عرضه. لاحظوا أيضا إمكانية عمل شيء معين في حال ضغط المستخدم زر ال OK في رسالة الخطأ. ولاحظوا أيضا أننا مررنا رقم ١ في showDialog ويمكننا طبعا تمرير أرقام مختلفة لعرض رسائل مختلفة بحسب الحالة، وهذا يتم عبر If .</p><p>اذا يصبح الملف المصدري ArdroidCaller.java  كاملا:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">android_programmers_guide.AndroidPhoneDialer</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Activity</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.content.Intent</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.net.Uri</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.Button</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.EditText</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.view.View</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.regex.*</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Dialog</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.AlertDialog</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.content.DialogInterface</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ArdroidCaller <span style="color: #000000; font-weight: bold;">extends</span> Activity <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/** Called when the activity is first created. */</span>
&nbsp;
@Override
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> EditText phoneNumber <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>EditText<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">findViewById</span><span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">phoneNumber</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">Button</span> callButton <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Button</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">findViewById</span><span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">callButton</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
callButton.<span style="color: #006633;">setOnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Button</span>.<span style="color: #006633;">OnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onClick<span style="color: #009900;">&#40;</span><span style="color: #003399;">View</span> v<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>validatePhoneNumber<span style="color: #009900;">&#40;</span>phoneNumber.<span style="color: #006633;">getText</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
Intent callIntent <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span>Intent.<span style="color: #006633;">ACTION_CALL</span>,Uri.<span style="color: #006633;">parse</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;tel:&quot;</span> <span style="color: #339933;">+</span> phoneNumber.<span style="color: #006633;">getText</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
callIntent.<span style="color: #006633;">setFlags</span><span style="color: #009900;">&#40;</span>Intent.<span style="color: #006633;">FLAG_ACTIVITY_NEW_TASK</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
startActivity<span style="color: #009900;">&#40;</span>callIntent<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">else</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
showDialog<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">boolean</span> validatePhoneNumber<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> number<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
Pattern phoneNumber1 <span style="color: #339933;">=</span> Pattern.<span style="color: #006633;">compile</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;(<span style="color: #000099; font-weight: bold;">\\</span>d{2}-)?<span style="color: #000099; font-weight: bold;">\\</span>d{7}&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
Matcher matcher <span style="color: #339933;">=</span> phoneNumber1.<span style="color: #006633;">matcher</span><span style="color: #009900;">&#40;</span>number<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> matcher.<span style="color: #006633;">matches</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #003399;">Dialog</span> onCreateDialog<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> id<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">new</span> AlertDialog.<span style="color: #006633;">Builder</span><span style="color: #009900;">&#40;</span>AndroidPhoneDialer.<span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>
&nbsp;
.<span style="color: #006633;">setTitle</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Error&quot;</span><span style="color: #009900;">&#41;</span>
&nbsp;
.<span style="color: #006633;">setMessage</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;please enter a valid number&quot;</span><span style="color: #009900;">&#41;</span>
&nbsp;
.<span style="color: #006633;">setPositiveButton</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;OK&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> DialogInterface.<span style="color: #006633;">OnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onClick<span style="color: #009900;">&#40;</span>DialogInterface dialog, <span style="color: #000066; font-weight: bold;">int</span> whichButton<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
&nbsp;
.<span style="color: #006633;">create</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-18-at-1.56.10-PM.png" rel="lightbox[1002]"><img
class="size-medium wp-image-1015  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-18-at-1.56.10-PM-300x273.png" alt="" width="300" height="273" /></a></p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-18-at-1.56.29-PM.png" rel="lightbox[1002]"><img
class="size-medium wp-image-1016    aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-18-at-1.56.29-PM-300x275.png" alt="" width="300" height="275" /></a></p><p><strong>٢- استخدام زر القائمة Menu وكيفية اضافة خيارات له.</strong></p><p>ما سنقوم بعمله بكل بساطة هو انشاء المشروع التالي:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-18-at-2.08.16-PM.png" rel="lightbox[1002]"><img
class="size-medium wp-image-1017  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-18-at-2.08.16-PM-220x300.png" alt="" width="220" height="300" /></a></p><p>والذي سيقوم باستخدام زر القائمة لعرض محتوياتها، ولكل خيار، سنقوم بعمل نشاط Activity معين. اذا سنبدأ بكيفية توظيف زر القائمة.</p><p>نقوم بداية باستدعاء المكتبات التالية:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.view.Menu</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.view.MenuItem</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p>ومن ثم نقوم بإعادة كتابة Override الدالة الموجودة في مجموعة Activity والمسماة onCreateOptionsMenu على النحو التالي:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;">@Override
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> onCreateOptionsMenu<span style="color: #009900;">&#40;</span><span style="color: #003399;">Menu</span> menu<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreateOptionsMenu</span><span style="color: #009900;">&#40;</span>menu<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
menu.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #0000ff;">&quot;Act1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
menu.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #0000ff;">&quot;Act2&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>الدالة menu.add لها عدة أشكال ولكننا سنستعمل:</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">add <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> groupId, <span style="color: #000066; font-weight: bold;">int</span> itemId, <span style="color: #000066; font-weight: bold;">int</span> order, CharSequence title<span style="color: #009900;">&#41;</span></pre></div></div><p>حيث أن أول عنصر يدل على رقم المجموعة الخاصة بخيارات القوائم، وافترضت أنهم في مجموعة واحدة، لذلك قمت بوضع 0 عند استدعاء الدالة كما هو الحال في عنصر order حيث أنني لا أهتم بترتيب الخيارات. itemId هو ما يهمني لذلك استخدمت الترقيم لمعرفة هوية الخيار.</p><p>الدالة onCreateOptionsMenu تقوم بتعبئة الخيارات في القائمة عند تشغيل البرنامج. لذلك، سنقوم بإعادة كتابة دالة أخرى موجودة في Activity والتي يتم استدعاؤها بمجرد اختيار أي خيار في القائمة وهي onOptionsItemSelected. في هذه الدالة، سنستخدم Switch المعروفة وذلك لاطلاق النشاط المقترن بالخيار الذي اختير من قبل المستخدم على النحو التالي:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> onOptionsItemSelected <span style="color: #009900;">&#40;</span><span style="color: #003399;">MenuItem</span> item<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">switch</span> <span style="color: #009900;">&#40;</span>item.<span style="color: #006633;">getItemId</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">:</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>الشكل النهائي لملف:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">android.programming.series.ArdroidMultiActs</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Activity</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.view.Menu</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.view.MenuItem</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ArdroidMultiActs <span style="color: #000000; font-weight: bold;">extends</span> Activity <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/** Called when the activity is first created. */</span>
&nbsp;
@Override
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
@Override
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> onCreateOptionsMenu<span style="color: #009900;">&#40;</span><span style="color: #003399;">Menu</span> menu<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreateOptionsMenu</span><span style="color: #009900;">&#40;</span>menu<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
menu.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #0000ff;">&quot;Act1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
menu.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #0000ff;">&quot;Act2&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> onOptionsItemSelected <span style="color: #009900;">&#40;</span><span style="color: #003399;">MenuItem</span> item<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">switch</span> <span style="color: #009900;">&#40;</span>item.<span style="color: #006633;">getItemId</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">:</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-18-at-2.36.09-PM.png" rel="lightbox[1002]"><img
class="size-medium wp-image-1018  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-18-at-2.36.09-PM-229x300.png" alt="" width="229" height="300" /></a></p><p><strong>٣- كيفية عمل تطبيق متعدد الأنشطة.</strong></p><p>لنتذكر قضية مهمة وهي أن كل نشاط له ملف مصدري .java وله ملف .xml خاص بتصميمه. وهذا ما سنفعله. سنقوم بإنشاء ملف xml للنشاط الأول تحت اسم act1.xml في res/layout وليكن كالتالي:</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;LinearLayout</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:orientation</span>=<span style="color: #ff0000;">&quot;vertical&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:padding</span>=<span style="color: #ff0000;">&quot;30dip&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:background</span>=<span style="color: #ff0000;">&quot;#8123f555&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;AutoCompleteTextView</span> <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/act1Test&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/LinearLayout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><p>ثم نقوم بإنشاء ملف Act1.java داخل ال Package في src. المطلوب من النشاط هو عرض مربع النص التلقائي وهو الذي يقوم باقتراح عدة خيارات للمستخدم (نقوم بتحديدها مسبقا) ليكمل عنه الكلمة بدلا من كتابتها كاملة. سنقوم بوضع ما يلي في الملف:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">android.programming.series.ArdroidMultiActs</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Activity</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.ArrayAdapter</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.AutoCompleteTextView</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Act1 <span style="color: #000000; font-weight: bold;">extends</span> Activity <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/** Called when the activity is first created. */</span>
&nbsp;
@Override
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">act1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//android.R.layout.simple_dropdown_item_1line is an existing file that contains a style of presenting the list in the application</span>
&nbsp;
ArrayAdapter<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>String<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> monthArray <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ArrayAdapter<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>String<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>,android.<span style="color: #006633;">R</span>.<span style="color: #006633;">layout</span>.<span style="color: #006633;">simple_dropdown_item_1line</span>,months<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> AutoCompleteTextView textView <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>AutoCompleteTextView<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">act1Test</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
textView.<span style="color: #006633;">setAdapter</span><span style="color: #009900;">&#40;</span>monthArray<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> months <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#123;</span><span style="color: #0000ff;">&quot;January&quot;</span>,<span style="color: #0000ff;">&quot;February&quot;</span>,<span style="color: #0000ff;">&quot;March&quot;</span>,
&nbsp;
<span style="color: #0000ff;">&quot;April&quot;</span>,<span style="color: #0000ff;">&quot;May&quot;</span>, <span style="color: #0000ff;">&quot;June&quot;</span>,<span style="color: #0000ff;">&quot;July&quot;</span>,<span style="color: #0000ff;">&quot;August&quot;</span>,<span style="color: #0000ff;">&quot;September&quot;</span>,<span style="color: #0000ff;">&quot;October&quot;</span>,<span style="color: #0000ff;">&quot;November&quot;</span>,
&nbsp;
<span style="color: #0000ff;">&quot;December&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>بالنسبة للنشاط الثاني، نقوم بإنشاء ملف act2.xml :</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;LinearLayout</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:orientation</span>=<span style="color: #ff0000;">&quot;vertical&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;CheckBox</span> <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/act2CheckBox&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;Act2 checkbox&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Button</span> <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/act2ColorButton&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;Change Text Color&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/LinearLayout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><p>والنشاط الثاني يقوم بعرض Check Box وزر خاص بتغيير لون النص. نقوم بوضع الكود التالي في Act2.java:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">android.programming.series.ArdroidMultiActs</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Activity</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.view.View</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.Button</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.graphics.Color</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.CheckBox</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Act2 <span style="color: #000000; font-weight: bold;">extends</span> Activity <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/** Called when the activity is first created. */</span>
&nbsp;
@Override
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">act2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> CheckBox checkbox <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>CheckBox<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">findViewById</span><span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">act2CheckBox</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">Button</span> changeButton <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Button</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">findViewById</span><span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">act2ColorButton</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
changeButton.<span style="color: #006633;">setOnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Button</span>.<span style="color: #006633;">OnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onClick<span style="color: #009900;">&#40;</span><span style="color: #003399;">View</span> v<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
changeColor<span style="color: #009900;">&#40;</span>checkbox<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> changeColor<span style="color: #009900;">&#40;</span>CheckBox checkbox<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
checkbox.<span style="color: #006633;">setTextColor</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Color</span>.<span style="color: #006633;">RED</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><div><span
style="font-family: Monaco, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size: small"><br
/> </span></div><p>نعود الآن الى ملف ArdroidMultiActs.java لنضيف ما يلي لجملة ال Switch:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> onOptionsItemSelected <span style="color: #009900;">&#40;</span><span style="color: #003399;">MenuItem</span> item<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">switch</span> <span style="color: #009900;">&#40;</span>item.<span style="color: #006633;">getItemId</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">:</span>
&nbsp;
showAct1<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span>
&nbsp;
showAct2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>ونقوم الآن بكتابة الدالتين showAct1 و showAct2. بداية، دعوني أصحح أحد المفاهيم التي كنت قد مررت عليها وهو مفهوم النوايا Intents. كنت قد ذكرت التالي:</p><p><span
style="font-family: Tahoma, sans-serif;line-height: 18px;font-size: 12px;color: #404040"><em><strong>&#8220;</strong>النوايا Intents بكل بساطة هي وسيلة لتمرير المعلومات من نشاط لآخر وبكلمات أخرى، تمرير ما ينوي فعله المبرمج بين الأنشطة. ولكنها تستخدم فقط في حالة وددنا استخدام نشاط خارج التطبيق الذي نعمل عليه. مثلا، اذا أراد المبرمج من تطبيقه أن يأخذ كلمة معينة من المستخدم ليبحث عنها بين ملفات النظام فإنه سيقوم بتصميم نشاط تحتوي واجهته على حقل نصي يمكن للمستخدم الكتابة فيها، وما يتم ادخاله يتم تمريره الى نظام الأندرويد تحت نية عمل بحث في ملفات النظام (وال Intent اسمه في هذه الحالة: SEARCH_ACTION) الذي يستقبل الطلب ويفهم النية\المعلومة المرغوب تحقيقها ويستدعي بدوره نشاط البحث Search Activity. نلاحظ أن النية تم تمريرها الى نشاط خارج التطبيق، وهو نشاط يقوم عليه نظام التشغيل. بالنسبة للأنشطة التي ذكرتها في معرض حديثي عن تطبيق الرسائل النصية، فهي أنشطة داخل التطبيق الواحد ولا يتم استخدام مفهوم النوايا Intents عليها (سنرى كيفية التعامل معها في الدرس القادم).<strong>&#8220;</strong></em></span></p><p>وهذا غير صحيح بشكل كامل حقيقة. النوايا يمكن استخدامها داخل التطبيق الواحد، ويتم استدعاء الأنشطة المختلفة باستخدام هذا المفهوم، ولكن الذي كنت أقصده بما ذكرت في الأعلى هو عدم امكانية استخدام النوايا المعرفة مسبقا ك SEARCH_ACTION وغيرها لاستدعاء نشاط داخلي، بل يجب علينا تعريف نوايا خاصة بتطبيقنا. وهذا ما سنقوم به في داخل الدالتين أعلاه على النحو التالي:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> showAct1<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
Intent autocomplete <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, Act1.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
startActivity<span style="color: #009900;">&#40;</span>autocomplete<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> showAct2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
Intent autocomplete2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, Act2.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
startActivity<span style="color: #009900;">&#40;</span>autocomplete2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>يصبح ملف ArdroidMultiActs.java كاملا:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
</pre></td><td
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">android.programming.series.ArdroidMultiActs</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Activity</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.content.Intent</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.view.Menu</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.view.MenuItem</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ArdroidMultiActs <span style="color: #000000; font-weight: bold;">extends</span> Activity <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/** Called when the activity is first created. */</span>
&nbsp;
@Override
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
@Override
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> onCreateOptionsMenu<span style="color: #009900;">&#40;</span><span style="color: #003399;">Menu</span> menu<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreateOptionsMenu</span><span style="color: #009900;">&#40;</span>menu<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
menu.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #0000ff;">&quot;Act1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
menu.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #0000ff;">&quot;Act2&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> onOptionsItemSelected <span style="color: #009900;">&#40;</span><span style="color: #003399;">MenuItem</span> item<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">switch</span> <span style="color: #009900;">&#40;</span>item.<span style="color: #006633;">getItemId</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">:</span>
&nbsp;
showAct1<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span>
&nbsp;
showAct2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> showAct1<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
Intent autocomplete <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, Act1.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
startActivity<span style="color: #009900;">&#40;</span>autocomplete<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> showAct2<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
Intent autocomplete2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, Act2.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
startActivity<span style="color: #009900;">&#40;</span>autocomplete2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>يبقى لدينا إضافة ما يسمى بفلتر النوايا Intents Filter وهو عبارة عن كود XML يتم وضعه في ArdroidMultiActs Manifest ومهمته تمرير النوايا الى لنشاط المقترن بها وتمييزها عن الآخرين بشكل صحيح. نقوم بإضافة ما يلي:</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;activity</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;.Act1&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;activity 1&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.action.MAIN&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.category.LAUNCHER&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/activity<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;activity</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;.Act2&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;activity 2&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.action.MAIN&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.category.LAUNCHER&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/activity<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><p>ليصبح الملف كاملا:</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;manifest</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">package</span>=<span style="color: #ff0000;">&quot;android.programming.series.ArdroidMultiActs&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:versionCode</span>=<span style="color: #ff0000;">&quot;1&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:versionName</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;application</span> <span style="color: #000066;">android:icon</span>=<span style="color: #ff0000;">&quot;@drawable/icon&quot;</span> <span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;@string/app_name&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;activity</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;.ArdroidMultiActs&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;@string/app_name&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.action.MAIN&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.category.LAUNCHER&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/activity<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;activity</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;.Act1&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;activity 1&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.action.MAIN&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.category.LAUNCHER&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/activity<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;activity</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;.Act2&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;activity 2&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.action.MAIN&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.category.LAUNCHER&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/activity<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/application<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uses-sdk</span> <span style="color: #000066;">android:minSdkVersion</span>=<span style="color: #ff0000;">&quot;6&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/manifest<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><p>نقوم بتشغيل التطبيق لنحصل على:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-18-at-10.26.18-PM.png" rel="lightbox[1002]"><img
class="size-medium wp-image-1019  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-18-at-10.26.18-PM-203x300.png" alt="" width="203" height="300" /></a></p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-18-at-10.26.53-PM.png" rel="lightbox[1002]"><img
class="size-medium wp-image-1020  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-18-at-10.26.53-PM-203x300.png" alt="" width="203" height="300" /></a></p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-18-at-10.27.15-PM.png" rel="lightbox[1002]"><img
class="size-medium wp-image-1021  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-18-at-10.27.15-PM-203x300.png" alt="" width="203" height="300" /></a></p><p>الدرس القادم سيكون عبارة عن عدد من الأمثلة المتنوعة التي سأختارها من هنا وهناك وأعرضها عليكم.</p><p>تحياتي لكم <img
src='http://ardroid.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2010/01/18/android-programming-series-l4/feed/</wfw:commentRss> <slash:comments>15</slash:comments> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2010/01/Android-SS1.jpg" /> </item> <item><title>سلسلة تعلم برمجة تطبيقات الأندرويد .. الدرس الثالث</title><link>http://ardroid.com/2010/01/12/android-programming-series-l3/</link> <comments>http://ardroid.com/2010/01/12/android-programming-series-l3/#comments</comments> <pubDate>Tue, 12 Jan 2010 07:55:18 +0000</pubDate> <dc:creator>وائل العلواني</dc:creator> <category><![CDATA[دروس وتعليمات]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[developers]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[أندرويد]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[تطبيقات]]></category><guid
isPermaLink="false">http://ardroid.com/?p=913</guid> <description><![CDATA[أهلا بمحبي الأندرويد في الدرس الماضي، قمنا بتشغيل الأمثلة التي تأتي مع الحزمة البرمجية. كما قمنا باستعراض دورة حياة تطبيق الأندرويد Software Development Life Cycle SDLC وانتهينا بالتعرف على الملفات المكونة لنظام الأندرويد وبرمجة تطبيق أهلا بالعالم. في درسنا الثالث، سنقوم بما يلي: ١- شرح طريقة عرض النص بشكل مغاير لما قمنا به في الدرس&#8230; <a
href="http://ardroid.com/2010/01/12/android-programming-series-l3/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<img
width="173" height="130" src="http://ardroid.com/wp-content/uploads/2010/01/imageviewar.png" class="attachment-large" alt="imageviewar" title="imageviewar" /><p>أهلا بمحبي الأندرويد <img
src='http://ardroid.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>في الدرس الماضي، قمنا بتشغيل الأمثلة التي تأتي مع الحزمة البرمجية. كما قمنا باستعراض دورة حياة تطبيق الأندرويد Software Development Life Cycle SDLC وانتهينا بالتعرف على الملفات المكونة لنظام الأندرويد وبرمجة تطبيق أهلا بالعالم.</p><p>في درسنا الثالث، سنقوم بما يلي:</p><p><strong>١- شرح طريقة عرض النص بشكل مغاير لما قمنا به في الدرس الماضي.</strong></p><p><strong>٢- شرح طريقة إظهار صورة في التطبيق.</strong></p><p><strong>٣- شرح مفهوم النوايا Intents وبرمجة تطبيق يقوم بالاتصال على رقم يدخله المستخدم.</strong></p><p>لنبدأ !</p><p><strong>١- طريقة عرض النص.</strong></p><p>تذكرون أننا في الدرس الثاني قمنا بتغيير النص الذي أردنا إظهاره عن طريق ملف ال main.xml، كما في الصورة</p><p
style="text-align: center;"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-8.08.13-PM.png" rel="lightbox[913]"><img
class="size-medium wp-image-762  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-8.08.13-PM-300x47.png" alt="" width="300" height="47" /></a></p><p>ما نود الآن عمله هو إيضاح إمكانية عدم استعمال الدالة</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>والتي تقوم بعرض الواجهة التي حُددت معالمها ومحتوياتها باستخدام ملف main.xml. الهدف من عرض هذه النقطة هو التركيز على أهمية ملفات ال XML التي تسهل الأداء بشكل أكبر وأكثر فعالية.</p><p>ببساطة (باستخدام ملفات الدرس السابق) قم بمسح:</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;">TextView
&nbsp;
android:layout_width=&quot;fill_parent&quot;
&nbsp;
android:layout_height=&quot;wrap_content&quot;
&nbsp;
android:text=&quot;@string/hello&quot;</pre></div></div><p>من main.xml ليصبح محتوى الملف بعدها:</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;LinearLayout</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:orientation</span>=<span style="color: #ff0000;">&quot;vertical&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/LinearLayout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><div><span
style="font-family: Monaco, 'Times New Roman', 'Bitstream Charter', Times, serif; color: #009292; font-size: small;"><br
/> </span></div><p>الآن في ملف HelloWorldArdroid.java قم باستدعاء المكتبة التالية:</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.TextView</span><span style="color: #339933;">;</span></pre></div></div><p>عبر هذه المكتبة، سنقوم باستعمال عنصر الواجهة النصية TextView بتعريف كائن Object داخل دالة onCreate على النحو التالي:</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">TextView HelloWorldText <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> TextView<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>لا يخفى على مبرمج الجافا الغرض من تمرير this عند استدعاء الدوال البرمجية في الجافا Functions/Methods. وفي هذه الحالة، this تستخدم للدلالة على أن الكائن المنشأ ينتمي للسياق البرمجي الحالي المتمثل بمجموعة السياق  Context Class والتي هي أحد أسلاف Ancestors المجموعة التي نعمل عليها حاليا (بتتبع التسلسل الهرمي نجد أن: HelloWorldArdroid <em>extends</em> Activity <em>extends</em> ApplicationContext <em>extends</em> Context).</p><p>الآن نقوم باستعمال الدالة setText لتعيين النص الذي نريد الكائن HelloWorldText أن يحمله:</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">HelloWorldText.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Hello World&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>والآن نطلب من دالة setContentView أن تعرض الكائن على النحو التالي:</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">setContentView<span style="color: #009900;">&#40;</span>HelloWorldText<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>المحتوى النهائي للملف:</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">android_programming_series.HelloWorldArdroid</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Activity</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.TextView</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> HelloWorldArdroid <span style="color: #000000; font-weight: bold;">extends</span> Activity <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/** Called when the activity is first created. */</span>
&nbsp;
@Override
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
TextView HelloWorldText <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> TextView<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
HelloWorldText.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Hello World&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
setContentView<span style="color: #009900;">&#40;</span>HelloWorldText<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div><p
style="text-align: center;"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-11-at-1.20.54-PM.png" rel="lightbox[913]"><img
class="size-medium wp-image-918  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-11-at-1.20.54-PM-300x212.png" alt="" width="300" height="212" /></a></p><p>مشكلة هذه الطريقة تكمن في أنها تعرض عنصرا واحدا فقط (أو واجهة واحدة كالواجهة النصية أعلاه). لذلك سنقوم من الآن وصاعدا باستخدام ملف XML لإضافة العناصر والواجهات بمختلف أنواعها.</p><p><strong>٢- شرح طريقة إظهار صورة في التطبيق.</strong></p><p>يمكنكم استكمال العمل على المشروع الحالي أو انشاء مشروع جديد تحت أي مسمى، مثلا HelloWorldImage. علينا إنشاء صورة لنقوم بعرضها. اخترت الصورة التالية</p><p
style="text-align: center;"><a
href="http://ardroid.com/wp-content/uploads/2010/01/imageviewar.png" rel="lightbox[913]"><img
class="size-full wp-image-926  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/imageviewar.png" alt="" width="173" height="130" /></a></p><p>وقمت بحفظها تحت مجلد drawable_hdpi.</p><p>نقوم بفتح ملف الmain.xml ونضيف بداية العنصر الخاص بالواجهة الرسومية (صورة) وهو &lt;ImageView. ثم نقوم بعدها بإضافة الخصائص التالية:</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;">android:id=&quot;@+id/imageviewar&quot;
&nbsp;
android:layout_width=&quot;fill_parent&quot;
&nbsp;
android:layout_height=&quot;wrap_content&quot;
&nbsp;
android:src=&quot;@drawable/imageviewar&quot;</pre></div></div><p>تقوم الخاصية الأولى بتوليد رقم خاصID بالعنصر المسمى imageviewar (حيث يتم التعامل مع الواجهات Viewsعبر أرقامها الخاصة). تتحكم الخاصيتان اللاحقتان بطول وعرض الصورة. أما الخاصية الأخيرة فعن طريقها يتم تحديد مصدر الصورة (وهو تحت مجلد drawable بغض النظر عن تفرعات المجلد).</p><p>ملف ال XML:</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;LinearLayout</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:orientation</span>=<span style="color: #ff0000;">&quot;vertical&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ImageView</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/imageviewar&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:src</span>=<span style="color: #ff0000;">&quot;@drawable/imageviewar&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/LinearLayout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><div><span
style="font-family: Monaco, 'Times New Roman', 'Bitstream Charter', Times, serif; color: #009292; font-size: small;"><br
/> </span></div><div>الملف المصدري هو كالتالي:</div><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">android_programmers_guide.HelloWorldImage</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Activity</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> HelloWorldImage <span style="color: #000000; font-weight: bold;">extends</span> Activity <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/** Called when the activity is first created. */</span>
&nbsp;
@Override
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div><p>التطبيق في الجهاز الافتراضي:</p><p
style="text-align: center;"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-11-at-2.07.15-PM.png" rel="lightbox[913]"><img
class="size-medium wp-image-919  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-11-at-2.07.15-PM-300x210.png" alt="" width="300" height="210" /></a></p><p><strong>٣- شرح مفهوم النوايا Intents وبرمجة تطبيق يقوم بالاتصال على رقم يدخله المستخدم.</strong></p><p>قبل تعريف ال Intents، علينا التفريق بين مفهومين: التطبيق Application و النشاط Activity. التطبيق هو عبارة عن نشاط واحد أو أكثر. في تطبيق الرسائل النصية مثلا، كل اختيار يمثل نشاطا. بمعنى، خيار كتابة الرسائل هو نشاط، وخيار عرض الرسائل هو نشاط مختلف وهكذا.</p><p>النوايا Intents بكل بساطة هي وسيلة لتمرير المعلومات من نشاط لآخر وبكلمات أخرى، تمرير ما ينوي فعله المبرمج بين الأنشطة. ولكنها تستخدم فقط في حالة وددنا استخدام نشاط خارج التطبيق الذي نعمل عليه. مثلا، اذا أراد المبرمج من تطبيقه أن يأخذ كلمة معينة من المستخدم ليبحث عنها بين ملفات النظام فإنه سيقوم بتصميم نشاط تحتوي واجهته على حقل نصي يمكن للمستخدم الكتابة فيها، وما يتم ادخاله يتم تمريره الى نظام الأندرويد تحت نية عمل بحث في ملفات النظام (وال Intent اسمه في هذه الحالة: SEARCH_ACTION) الذي يستقبل الطلب ويفهم النية\المعلومة المرغوب تحقيقها ويستدعي بدوره نشاط البحث Search Activity. نلاحظ أن النية تم تمريرها الى نشاط خارج التطبيق، وهو نشاط يقوم عليه نظام التشغيل. بالنسبة للأنشطة التي ذكرتها في معرض حديثي عن تطبيق الرسائل النصية، فهي أنشطة داخل التطبيق الواحد ولا يتم استخدام مفهوم النوايا Intents عليها (سنرى كيفية التعامل معها في الدرس القادم).</p><p>هناك نوعان من النوايا، نوايا النشاط Activity Intents و النوايا واسعة الانتشار Broadcast Intents. النوع الأول هو ما قمنا بشرحه. بينما النوع الثاني فهو نوع عكسي نوعا ما. النوع الثاني عبارة عن رسائل يرسلها نظام التشغيل للأنشطة العاملة التي يمكنها التفاعل مع هذه الرسائل بحسب وظيفتها. مثلا نجد أن النية المسماة CAMERA_BUTTON_ACTION يتم اطلاقه عند تشغيل الكاميرا. اضغط هنا للاطلاع على ال Intents المتاحة لكل نوع: <a
href="http://www.openintents.org/en/node/35">Activity Action Intents</a> ، <a
href="http://developer.android.com/guide/topics/intents/intents-filters.html">Broadcast Intents</a>.</p><p>ستتضح الصورة بشكل أكبر في نهاية هذا الدرس.</p><p>ما سنقوم به هو التالي: سنقوم بكتابة تطبيق يحتوي على حقل نصي\رقمي يتيح للمستخدم ادخال رقم ويوجد في أسفل الحقل زر بمجرد الضغط عليه، يتم الاتصال بالرقم المدخل.</p><p
style="text-align: center;"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-11-at-4.26.48-PM.png" rel="lightbox[913]"><img
class="size-medium wp-image-920  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-11-at-4.26.48-PM-228x300.png" alt="" width="228" height="300" /></a></p><p>سنبدأ بملف ال main.xml: (أفترض الآن أنكم تفهمون محتواه دون الحاجة الى شرح)</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;LinearLayout</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:orientation</span>=<span style="color: #ff0000;">&quot;vertical&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TextView</span> <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/textLabel&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;Enter Number to Dial:&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;EditText</span> <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/phoneNumber&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Button</span> <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/callButton&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;wrap_content&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;Call&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/LinearLayout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><div><span
style="font-family: Monaco, 'Times New Roman', 'Bitstream Charter', Times, serif; color: #009292; font-size: small;"><br
/> </span></div><p>تم شرح الغرض من عنصر TextView من قبل. بالنسبة لعنصر EditText فهو يعني الحقل النصي القابل للتغيير (الحقل الذي سيتم ادخال الرقم فيه). عنصر الزر Button وهو الزر الذي بضغطه سيتم الاتصال.</p><p>بالنسبة لملف ArdroidCaller.java نقوم بداية باستدعاء المكتبات التالية:</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Activity</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.content.Intent</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.net.Uri</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.Button</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.EditText</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.view.View</span><span style="color: #339933;">;</span></pre></div></div><p>تتضح نسبيا مهمة كل مكتبة بمجرد قراءة اسمها باستثناء الرابعة والأخيرة اللتان سنرى الغرض من استدعائهما قريبا.</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ArdroidCaller <span style="color: #000000; font-weight: bold;">extends</span> Activity <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/** Called when the activity is first created. */</span>
&nbsp;
@Override
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> EditText phoneNumber <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>EditText<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">findViewById</span><span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">phoneNumber</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">Button</span> callButton <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Button</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">findViewById</span><span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">callButton</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><div><span
style="font-family: Monaco, 'Times New Roman', 'Bitstream Charter', Times, serif;"><span
style="font-size: small;"><br
/> </span></span></div><p>نلاحظ في السطرين الأخيرين كيفية استدعاء المؤشر الذي يشير الى الرقم ID الخاص بالعنصر. لاحظوا أننا قمنا بعمل Downcast في كلا السطرين لأن مخرج الدالة findViewById هو من نوع View.<br
/> أعتقد أن العديدين ممن برمجوا بلغة الجافا كانوا قد مروا على برمجة واجهات المستخدم User Interface وتحديدا برمجة الأزرار Buttons واستخدموا أحد مفاهيم برمجة الجافا وهو مبدأ المجموعات المجهولة Anonymous Classes الذي يستخدم عادة في كتابة setOnClickListener المسؤول عن متابعة الزر وتنفيذ عدد من الأوامر عند ضغط الزر من قبل المستخدم.</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">callButton.<span style="color: #006633;">setOnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Button</span>.<span style="color: #006633;">OnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onClick<span style="color: #009900;">&#40;</span><span style="color: #003399;">View</span> v<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span></pre></div></div><p>المفترض أن نقوم باستدعاء ال Intent المسؤول عن الاتصال ويسمى ACTION_CALL وأن نقوم بدمجه مع الرقم المدخل وارساله الى نظام التشغيل. وهذا ما يحصل باستخدام:</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">Intent callIntent <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span>Intent.<span style="color: #006633;">ACTION_CALL</span>,Uri.<span style="color: #006633;">parse</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;tel:&quot;</span> <span style="color: #339933;">+</span> phoneNumber.<span style="color: #006633;">getText</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>ثم نطلب من نظام التشغيل إطلاق النشاط الخاص بعمل المكالمة:</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">callIntent.<span style="color: #006633;">setFlags</span><span style="color: #009900;">&#40;</span>Intent.<span style="color: #006633;">FLAG_ACTIVITY_NEW_TASK</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>لاحظ أن FLAG_ACTIVITY_NEW_TASK تعني اطلاق النشاط كمهمة جديدة، وهناك في الواقع عدة أوامر توضح الكيفية التي يريد المبرمج عبرها اطلاق النشاط، فمثلا يوجد: FLAG_MULTIPLE_TASK_LAUNCH التي تقوم بإطلاق النشاط حتى لو أنه يعمل في الأصل (نسخة ثانية من النشاط)، وغيرها.<br
/> في النهاية سنطلب من النظام تشغيل ال Intent عبر:</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">startActivity<span style="color: #009900;">&#40;</span>callIntent<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>اذا، يصبح الملف في النهاية كما يلي:</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">android_programming_series.ArdroidCaller</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.app.Activity</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.os.Bundle</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.content.Intent</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.net.Uri</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.Button</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">android.widget.EditText</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ArdroidCaller  <span style="color: #000000; font-weight: bold;">extends</span> Activity <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/** Called when the activity is first created. */</span>
&nbsp;
@Override
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> EditText phoneNumber <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>EditText<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">findViewById</span><span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">phoneNumber</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> <span style="color: #003399;">Button</span> callButton <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Button</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">findViewById</span><span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">callButton</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
callButton.<span style="color: #006633;">setOnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Button</span>.<span style="color: #006633;">OnClickListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onClick<span style="color: #009900;">&#40;</span><span style="color: #003399;">View</span> v<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
Intent callIntent <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span>Intent.<span style="color: #006633;">ACTION_CALL</span>,Uri.<span style="color: #006633;">parse</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;tel:&quot;</span> <span style="color: #339933;">+</span> phoneNumber.<span style="color: #006633;">getText</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
callIntent.<span style="color: #006633;">setFlags</span><span style="color: #009900;">&#40;</span>Intent.<span style="color: #006633;">FLAG_ACTIVITY_NEW_TASK</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
startActivity<span style="color: #009900;">&#40;</span>callIntent<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div><p>قبل تشغيل البرنامج، بقي لدينا مسألة صغيرة. هل لاحظت عند تنصيبك للتطبيقات على جهازك أنك تُسأل عما اذا كنت تصرح للتطبيق باستخدام الانترنت مثلا أو الاطلاع على رسائلك وغيرها؟ هذه هي الأذونات Permissions المرتبطة بالتطبيقات التي يجب أن توافق عيها ليعمل البرنامج بشكل صحيح.<br
/> ما قمنا به في تطبيقنا لا يختلف حالا عن باقي التطبيقات، فاستخدام خاصية الاتصال تحتاج اذن المستخدم. لذلك، في ملف الاعدادات العامة ArdroidCaller Manifest.xml ، نضيف سطر ال XML التالي:</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uses-permission</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.permission.CALL_PHONE&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/uses-permission<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><div><span
style="font-family: Monaco, 'Times New Roman', 'Bitstream Charter', Times, serif; color: #009292; font-size: small;"><br
/> </span></div><p>ليصبح ملف  ArdroidCaller Manifest.xml كاملا:</p><div
class="wp_syntax"><div
class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;manifest</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">package</span>=<span style="color: #ff0000;">&quot;android_programming_guide.ArdroidCaller&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:versionCode</span>=<span style="color: #ff0000;">&quot;1&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:versionName</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;application</span> <span style="color: #000066;">android:icon</span>=<span style="color: #ff0000;">&quot;@drawable/icon&quot;</span> <span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;@string/app_name&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;activity</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;.ArdroidCaller&quot;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;@string/app_name&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.action.MAIN&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.category.LAUNCHER&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/activity<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/application<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uses-sdk</span> <span style="color: #000066;">android:minSdkVersion</span>=<span style="color: #ff0000;">&quot;6&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uses-permission</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.permission.CALL_PHONE&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/uses-permission<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/manifest<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div><p>للاطلاع على معظم الأذونات الموجودة <a
href="http://www.chinaup.org/docs/reference/android/Manifest.permission.html">اضغط هنا</a>.<br
/> الآن نشغل التطبيق على الجهاز الافتراضي لنرى التالي:<br
/> <a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-11-at-6.26.51-PM.png" rel="lightbox[913]"></a></p><p
style="text-align: center;"><img
class="size-medium wp-image-921  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-11-at-6.26.51-PM-300x211.png" alt="" width="300" height="211" /></p><p
style="text-align: right;"><p
style="text-align: right;">وبالضغط على زر الاتصال Call يظهر:</p><p
style="text-align: center;"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-11-at-6.27.12-PM.png" rel="lightbox[913]"><img
class="size-medium wp-image-922  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-11-at-6.27.12-PM-300x211.png" alt="" width="300" height="211" /></a></p><p
style="text-align: right;">أعتقد أن هذا الدرس كان طويلا بعض الشيء <img
src='http://ardroid.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p
style="text-align: right;">الدروس القادمة تعتمد على المفاهيم التي طرحت في هذا الدرس، لذلك أدعوكم للتعمق في فهم جميع الخطوات التي وردت، واستغلال خاصية التعليق للنقاش والحوار.</p><p
style="text-align: right;">درسنا القادم سيكون عن كيفية التأكد من المدخلات التي يدخلها المستخدم، فكما تلاحظون في التطبيق أعلاه، قد يدخل المستخدم أحرفا ورموزا تجعل عملية الاتصال خاطئة. كما أننا سنتعلم طريقة استغلال زر القائمة Menu في عملية التنقل بين الأنشطة المختلفة الموجودة في التطبيق الواحد (اذا سنتعلم أيضا كيفية عمل تطبيق متعدد الأنشطة).</p><p
style="text-align: right;"><p
style="text-align: right;">بالتوفيق يا أصدقاء !</p><p
style="text-align: right;"> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2010/01/12/android-programming-series-l3/feed/</wfw:commentRss> <slash:comments>22</slash:comments> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2010/01/android.jpg" /> </item> <item><title>سلسلة تعلم برمجة تطبيقات الأندرويد .. الدرس الثاني</title><link>http://ardroid.com/2010/01/04/android-programming-series-l2/</link> <comments>http://ardroid.com/2010/01/04/android-programming-series-l2/#comments</comments> <pubDate>Mon, 04 Jan 2010 21:16:32 +0000</pubDate> <dc:creator>وائل العلواني</dc:creator> <category><![CDATA[دروس وتعليمات]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[أندرويد]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[تطبيقات]]></category> <category><![CDATA[مطورون]]></category><guid
isPermaLink="false">http://ardroid.com/?p=672</guid> <description><![CDATA[مرحبا بكم ! في الدرس الماضي، قمنا بشرح طريقة تهيئة البيئة البرمجية التي سنستخدمها في تعلم برمجة تطبيقات الأندرويد. درسنا اليوم، سيكون عن: ١. تشغيل الأمثلة Samples المتوفرة في الحزمة البرمجية التطويرية للأندرويد Android SDK. ٢. دورة حياة تطبيق الأندرويد Software Development Life Cycle SDLC. ٣. برمجة تطبيق &#8220;أهلا بالعالم&#8221; Hello World Application والتعرف على&#8230; <a
href="http://ardroid.com/2010/01/04/android-programming-series-l2/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<img
width="249" height="18" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-11.51.14-PM.png" class="attachment-large" alt="Screen shot 2010-01-04 at 11.51.14 PM" title="Screen shot 2010-01-04 at 11.51.14 PM" /><p>مرحبا بكم !</p><p>في الدرس الماضي، قمنا بشرح طريقة تهيئة البيئة البرمجية التي سنستخدمها في تعلم برمجة تطبيقات الأندرويد.</p><p>درسنا اليوم، سيكون عن:</p><p>١. تشغيل الأمثلة Samples المتوفرة في الحزمة البرمجية التطويرية للأندرويد Android SDK.<br
/> ٢. دورة حياة تطبيق الأندرويد Software Development Life Cycle SDLC.<br
/> ٣. برمجة تطبيق &#8220;أهلا بالعالم&#8221; Hello World Application والتعرف على الملفات المكونة لتطبيقات الأندرويد.</p><p>هل أنتم جاهزون؟ لنبدأ <img
src='http://ardroid.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p><strong>١. تشغيل الأمثلة Samples المتوفرة في الحزمة البرمجية التطويرية للأندرويد Android SDK</strong></p><p>سنقوم بداية بالتأكد من وجود المجلد الذي يحتوي على الأمثلة. سنتوجه الى المجلد الذي حفظنا فيه ال SDK. ومن ثم:</p><p>Platforms&gt;android-2.0.1&gt;samples</p><p>الآن نتوجه الى برنامج الاكليبس ونقوم بالتأكد من وجود نسخة افتراضية من جهاز الأندرويد جاهزة للعمل (طبعا في نافذة منفصلة عن الاكليبس):</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-12.03.06-PM.png" rel="lightbox[672]"><img
class="size-medium wp-image-593  aligncenter" src="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-12.03.06-PM-300x210.png" alt="" width="300" height="210" /></a></p><p>من الآن فصاعدا، ينصح بإبقاء النسخة الافتراضية فعالة. بمعنى، لا داعي من إغلاق نسخة الجهاز الافتراضي من أندرويد بعد تشغيل التطبيقات عليها.</p><p>نقوم الآن بالتوجه الى:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.23.33-AM.png" rel="lightbox[672]"><img
class="size-medium wp-image-741  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.23.33-AM-300x53.png" alt="" width="300" height="53" /></a></p><p>ثم</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.24.49-AM.png" rel="lightbox[672]"><img
class="size-full wp-image-742  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.24.49-AM.png" alt="" width="187" height="166" /></a></p><p>ثم</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.33.13-AM.png" rel="lightbox[672]"><img
class="size-medium wp-image-743  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.33.13-AM-262x300.png" alt="" width="262" height="300" /></a></p><p>تأكد من إدخال جميع القيم بشكل صحيح. اضغط على Finish لترى أن المثال الخاص بلعبة الثعبان Snake قد تم فتحه.</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.37.12-AM.png" rel="lightbox[672]"><img
class="size-medium wp-image-744  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.37.12-AM-203x300.png" alt="" width="203" height="300" /></a></p><p>دعكم الآن من هذه الملفات ولنقم بتشغيل التطبيق. اضغط على:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.37.57-AM.png" rel="lightbox[672]"><img
class="size-medium wp-image-745  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.37.57-AM-300x82.png" alt="" width="300" height="82" /></a></p><p>سيظهر المربع التالي. اختر Android Application ثم اضغط OK:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.38.12-AM.png" rel="lightbox[672]"><img
class="size-medium wp-image-746  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.38.12-AM-300x298.png" alt="" width="300" height="298" /></a></p><p>ننتقل مباشرة الى نافذة الجهاز الافتراضي، فنجد التطبيق يعمل عليها:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.39.08-AM.png" rel="lightbox[672]"><img
class="size-medium wp-image-747    aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.39.08-AM-300x211.png" alt="" width="300" height="211" /></a></p><p>ملاحظة: ربما تواجهك مشكلة أثناء محاولتك تشغيل التطبيق وتظهر لك رسالة تفيد بأن التطبيق يحتوي على خطأ معين. الحل قد يبدو غريبا بعض الشيء، ولكنه يعمل على الأقل. افتح الملف الذي يحمل اسم Snake_layout.xml وهو موجود تحت مجلد res/layout وقم بحذف أي مسافة بيضاء white space ومن ثم احفظ الملف. يفترض أن تختفي العلامة الحمراء المجاورة لاسم التطبيق في العمود الجانبي الذي يحتوي ملفات التطبيق. يمكنك الآن تشغيل البرنامج عبر Run.</p><p><strong>٢. دورة حياة تطبيق الأندرويد Software Development Life Cycle SDLC</strong></p><p>من ناحية برمجية بحتة، من المفترض أن يحتوي أي تطبيق أندرويدي على عدد من الدوال والتي ستتضح مهمة كل منها بمجرد قراءة اسمها:</p><ul><li>onCreate</li><li>onStart</li><li>Process-specific events</li><li>onStop</li><li>onDestroy</li></ul><p>ببساطة، الدالة Function الأولى تحوي الأوامر المتعلقة ببداية انشاء التطبيق، كتهيئة الواجهة الرسومية له واعداد البيانات المرتبطة بالقوائم. الدالة الثانية، onStart، تحوي الأوامر الخاصة بالتطبيق عند بداية عمل العملية Process الخاصة به، وهي اذا الدالة التي عند بداية تنفيذها، نرى التطبيق وقد ظهر على الشاشة. الدالة الثالثة هي ليست دالة فعليا بقدر ماهي عدد من الدوال Functions التي تتعامل مع الأحداث Events التي تحدث أثناء عمل التطبيق، كتحليل قراءات الجي بي اس ودخول قاعدة بيانات وغيرها.</p><p>دالة onStop تتعلق بالعملية Process الخاصة بالتطبيق عند توقفها. يقترن استدعاء هذه الدالة باختفاء التطبيق من على الشاشة Foreground وعمله في الخلفية Background (أو حتى توقفه مؤقتا). فمثلا اذا ضغطنا الزر الذي يعيدنا الى الشاشة الرئيسية Home button أثناء استخدامنا لأحد التطبيقات، فإن التطبيق سيستدعي هذه الدالة ويختفي من على الشاشة. تختلف التطبيقات في التعامل مع هذا الحدث. فهناك تطبيقات تستدعي دالة onDestroy المشروحة في النقطة اللاحقة، أو أن يتم الحفاظ على العملية في الخلفية وإعادة تشغيلها عندما يضغط المستخدم على أيقونة التطبيق من جديد عبر استدعاء الدالة onRestart.</p><p>دالة onDestroy يتم استدعاؤها في حال رغبنا بإنهاء التطبيق وبالتالي قيام نظام التشغيل بقتل\انهاء العلمية الخاصة به.</p><p><strong>٣. برمجة تطبيق &#8220;أهلا بالعالم&#8221; Hello World Application والتعرف على الملفات المكونة لتطبيقات الأندرويد</strong></p><p>سنقوم الآن بإنشاء مشروع جديد. حاول أن تغلق جميع المشاريع المفتوحة حاليا في برنامج الاكليبس (اضغط بالزر الأيمن على اسم المشروع ومن ثم Close Project).</p><p>اضغط الآن على:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.23.33-AM.png" rel="lightbox[672]"><img
class="size-medium wp-image-741      aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.23.33-AM-300x53.png" alt="" width="300" height="53" /></a></p><p>ثم</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.24.49-AM.png" rel="lightbox[672]"><img
class="size-full wp-image-742  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.24.49-AM.png" alt="" width="187" height="166" /></a></p><p>نقوم بإدخال البيانات التالية:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-1.05.34-PM.png" rel="lightbox[672]"><img
class="size-medium wp-image-751  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-1.05.34-PM-228x300.png" alt="" width="228" height="300" /></a></p><p>بعد إنشاء المشروع، تظهر لنا الملفات التالية:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-1.06.42-PM.png" rel="lightbox[672]"><img
class="size-full wp-image-752  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-1.06.42-PM.png" alt="" width="213" height="137" /></a></p><p>بالنسبة لملف ال AndroidManifest.xml فهو ملف يحتوي الاعدادات العامة للتطبيق (لمطوري ال ASP.NET، هذا الملف مكافىء لحد ما لملف ال Web.config). عبر هذا الملف، يتم التحكم بأنشطة التطبيق Activities، وال Intents وأذونات التطبيق Permissions. (سنقوم بشرح هذه المفاهيم لاحقا).</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-6.59.49-PM.png" rel="lightbox[672]"><img
class="size-medium wp-image-753  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-6.59.49-PM-300x229.png" alt="" width="300" height="229" /></a></p><p>بالانتقال الى مجلد res، نجد أن هذا المجلد يحتوي على المصادر والمواد التي سيتم استخدامها في التطبيق. كما في الصورة في الأسفل، نجد المجلدات التالية:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.06.51-PM.png" rel="lightbox[672]"><img
class="size-full wp-image-754  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.06.51-PM.png" alt="" width="204" height="191" /></a></p><ul><li>drawable: هنا نضع ملفات الصور التي يستخدمها التطبيق.</li><li>layout: يحتوي هذا المجلد على ملفات من نوع XML وهي المسؤولة عن تصميم وتهيئة الواجهات الرسومية Views and User Interface الخاصة بالتطبيق.</li><li>values: يحتوي على القيم النصية المشتركة Global String Values التي يمكن استخدامها في التطبيق (وما يحتويه من أنشطة وواجهات Activities and Views)</li></ul><p>بالنسبة لمجلد assets، يتم وضع ملفات الصوت والحركة Animation في داخله.</p><p>مجلد Android 2.0.1 هو مجلد يحتوي على المكتبات البرمجية Libraries المتاحة للتطبيق كي يستخدمها. في الواقع هو مجلد يحتوي على مؤشرات الى هذه المكتبات الموجودة في الحزمة التطويرية للأندرويد.</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.23.03-PM.png" rel="lightbox[672]"><img
class="size-full wp-image-755  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.23.03-PM.png" alt="" width="239" height="36" /></a></p><p>مجلد gen يحتوي ملفا اسمه R.java وهو ملف يتم تشكيله بشكل آلي ليحتوي على مؤشرات Pointers تشير الى المواد والمصادر الموجودة في res.</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.28.43-PM.png" rel="lightbox[672]"><img
class="size-medium wp-image-756  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.28.43-PM-300x214.png" alt="" width="300" height="214" /></a></p><p>أخيرا، نصل الى مجلد src والذي يحتوي الشفرة المصدرية Source Code للتطبيق.</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.36.18-PM.png" rel="lightbox[672]"><img
class="size-medium wp-image-757  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.36.18-PM-300x48.png" alt="" width="300" height="48" /></a></p><p>نفتح الآن الملف HelloWorldArdroid.java :</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.44.04-PM.png" rel="lightbox[672]"><img
class="size-medium wp-image-758  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.44.04-PM-300x143.png" alt="" width="300" height="143" /></a></p><p>في أعلى الملف، نستدعي المكتبات التالية:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.47.20-PM.png" rel="lightbox[672]"><img
class="size-full wp-image-759  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.47.20-PM.png" alt="" width="222" height="36" /></a></p><p>وهاتان المكتبتان هما من أهم المكتبات التي سيتم استخدامها في برمجة جميع التطبيقات. ولا ننس أن من سيتولى عملية الاستدعاء الفعلية هو مجلد Android 2.0.1 آنف الذكر.</p><p>ننتقل الى ال Class الخاصة بالتطبيق. لاحظ أن دالة onCreate قد تم تحديد مهمتها باستدعاء الدالة</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-11.51.14-PM.png" rel="lightbox[672]"><img
class="size-full wp-image-778  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-11.51.14-PM.png" alt="" width="249" height="18" /></a></p><p
style="text-align: center"><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.52.39-PM.png" rel="lightbox[672]"><img
class="size-medium wp-image-760  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.52.39-PM-300x93.png" alt="" width="300" height="93" /></a></p><p>والتي تم تمرير اليها المؤشر Pointer الموجود في ملف R.java والذي يشير بدوره الى ملف ال XML الموجود في مجلد res/layout المسؤول عن إعداد الواجهة الرسومية.</p><p>بفتح ملف ال main.xml  الموجود في res/layout نجد عددا من عناصر ال XML وما يهمنا هو &lt;TextView&gt;</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.59.49-PM.png" rel="lightbox[672]"><img
class="size-full wp-image-761  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-7.59.49-PM.png" alt="" width="287" height="76" /></a></p><p>نجد أن لهذا العنصر الخصائص Attributes التالية: layout_width, layout_height, text.</p><p>الخاصيتان Width and Height تهتمان بطريقة عرض النص (طوله وعرضه). الخاصية الأخيرة تحتوي على قيمة النص. نجد أن القيمة هي: @string/hello وهذا يعني أن النص موجود في مكان ما. تكلمنا في منتصف الدرس عن ملف يحتوي القيم النصية التي يمكن استدعاؤها من أي مكان في التطبيق وهو الملف الموجود تحت مجلد res/values :</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-8.08.13-PM.png" rel="lightbox[672]"><img
class="size-medium wp-image-762  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-8.08.13-PM-300x47.png" alt="" width="300" height="47" /></a></p><p>نجد القيمة الفعلية للنص hello ويمكننا الآن تغييرها لو أردنا.</p><p>نقوم الآن بتشغيل البرنامج عبر Run&gt;Run :</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.37.57-AM.png" rel="lightbox[672]"><img
class="size-medium wp-image-745  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-12.37.57-AM-300x82.png" alt="" width="300" height="82" /></a></p><p>ننتقل الى نافذة الجهاز الافتراضي وننتظر قليلا حتى تظهر النتيجة التالية:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-8.13.10-PM.png" rel="lightbox[672]"><img
class="size-medium wp-image-763  aligncenter" src="http://ardroid.com/wp-content/uploads/2010/01/Screen-shot-2010-01-04-at-8.13.10-PM-300x210.png" alt="" width="300" height="210" /></a></p><p>ممتاز! الآن نكون قد شغلنا التطبيق الأول لنا في بيئة الأندرويد. أدعوكم الآن الى محاولة التعرف بشكل أكبر على الملفات والمجلدات ومحاولة فهم الغرض منها.</p><p>في الدرس القادم، سنبدأ بكتابة الكود الخاص بإظهار نص بطريقة مغايرة للموجودة في الأعلى، ومن ثم طريقة عرض صور في التطبيق، وختاما سنقوم بالتعرف الى مفهوم ال Intents أو النوايا (بصراحة عجزت عن تعريبها بكلمة أخرى <img
src='http://ardroid.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) وهي حقيقة تعمل كما النوايا، أي أن المبرمج يكون لديه نية في عمل مكالمة طوارىء في وقت معين من التطبيق، أو مثلا عرض جميع التطبيقات الموجودة في الجهاز على شكل قائمة وغيرها.</p><p>سيكون الدرس القادم وجبة برمجية متقدمة قليلا فكونوا بانتظارنا. والمجال مفتوح دائما لاستقبال مقترحاتكم وتعليقاتكم حول هذه السلسلة.</p><p>دمتم بودّ.</p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2010/01/04/android-programming-series-l2/feed/</wfw:commentRss> <slash:comments>29</slash:comments> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2010/01/native.jpg" /> </item> <item><title>سلسلة تعلم برمجة تطبيقات الأندرويد .. الدرس الأول</title><link>http://ardroid.com/2009/12/30/android-programming-series-l1/</link> <comments>http://ardroid.com/2009/12/30/android-programming-series-l1/#comments</comments> <pubDate>Wed, 30 Dec 2009 14:45:08 +0000</pubDate> <dc:creator>وائل العلواني</dc:creator> <category><![CDATA[دروس وتعليمات]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[أندرويد]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[تطبيقات]]></category> <category><![CDATA[مطورون]]></category><guid
isPermaLink="false">http://ardroid.com/?p=583</guid> <description><![CDATA[تتطرق هذه السلسلة التعليمية لأحد أهم أنظمة تشغيل الأجهزة الكفية والمحمولة الذي بدأ يبرز نجمه مؤخرا وهو نظام الأندرويد. أندرويد يقدم للمطورين بيئة تطوير قوية وغير محدودة، وإن كنت متشوقا لبدء تطوير البرامج لأندرويد، أو لديك الحماس لتجرب كيف تجري تلك العملية حتى لو كان هذا على سبيل التجربة العلمية، فسلسلة الدروس هذه سوف تساعدك&#8230; <a
href="http://ardroid.com/2009/12/30/android-programming-series-l1/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<img
width="500" height="330" src="http://ardroid.com/wp-content/uploads/2009/12/eclipse_logo.gif" class="attachment-large" alt="eclipse_logo" title="eclipse_logo" /><p>تتطرق هذه السلسلة التعليمية لأحد أهم أنظمة تشغيل الأجهزة الكفية والمحمولة الذي بدأ يبرز نجمه مؤخرا وهو نظام الأندرويد. أندرويد يقدم للمطورين بيئة تطوير قوية وغير محدودة، وإن كنت متشوقا لبدء تطوير البرامج لأندرويد، أو لديك الحماس لتجرب كيف تجري تلك العملية حتى لو كان هذا على سبيل التجربة العلمية، فسلسلة الدروس هذه سوف تساعدك خطوة بخطوة كي تنطلق بسرعة إلى عالم تطوير التطبيقات لأندرويد.</p><p>سنتعلم برمجة التطبيقات Applications على منصة الأندرويد بشكل متدرج يضمن إلمام القارىء بمختلف المراحل التي تمر بها عملية البرمجة.</p><p
style="text-align: center"><p>بداية أدعوكم لقراءة المقالة التي أدرجناها في موقعنا والتي تحدثت عن <a
href="http://ardroid.com/2009/11/23/introduction-to-androi/">الأندرويد في لمحة</a> وما يهمنا هو المعلومات التقنية الخاصة بهذا النظام.</p><p>يتم تطوير تطبيقات الأندرويد بلغة <a
href="http://java.sun.com/">الجافا Java</a> ويتم تشغيلها على نواة لينوكس Linux Kernel 2.6 . ما يميز الأندرويد عن غيره هو أنه يتعامل مع جميع التطبيقات المتاحة من طرف ثالث Third Party  بنفس الأولوية المعطاة لتطبيقات النظام نفسه، وهذا ما تفتقره الأنظمة الأخرى التي تعطي أولوية لتطبيقات قلب النظام System Core  .</p><p>كل تطبيق في الأندرويد يعمل على شكل عملية مستقلة <a
href="http://en.wikipedia.org/wiki/Process_(computing)">Process </a>على نسخة مستقلة من آلة افتراضية <a
href="http://en.wikipedia.org/wiki/Virtual_machine">Virtual Machine</a> من نوع Dalvik. وللمطور كامل الصلاحية في النفاذ الى العتاد الذي يستطيع نظام التشغيل استخدامه، مما يضمن عدم تحديد أو تأطير المبرمج بأي شكل وهذا يعني انتاج تطبيقات ابداعية.</p><p>هناك نقطة تحسب لصالح تطبيقات الأندرويد وهي التسهيلات المعطاة من غووغل لمطوري التطبيقات لربط تطبيقاتهم بخدمات وتطبيقات غووغل المعروفة كـ Google Maps, Gtalk, Gmail,… وذلك لأن غووغل عضو في تحالف الـ <a
href="http://www.openhandsetalliance.com/">Open Handset Alliance OHA </a> الذي يضم شركات كبيرة منها: Google, HTC, Intel, LG, Motorla, Nvidia, Samsung, Sony Ericsson, Toshipa, Vodafone, T-Mobile, وغيرها  ومن أهم أهداف هذا التحالف تشكيل ووضع مقاييس جديدة لأجهزة الهواتف النقالة. وكان أندرويد هو أول مشروع تم الإعلان عنه من قبل هذه المجموعة.</p><p><strong>بعد هذه المقدمة البسيطة، قد يتساءل البعض، وماهي البيئة البرمجية\التطويرية التي سنستخدمها؟ وماهي متطلبات سلسلة &#8220;تعلم برمجة تطبيقات الأندرويد&#8221;؟</strong></p><p
style="text-align: center"><p
style="text-align: center"><img
class="size-medium wp-image-628 aligncenter" src="http://ardroid.com/wp-content/uploads/2009/12/eclipse_logo-300x198.gif" alt="" width="300" height="198" /></p><p>الجواب أننا سنستخدم البيئة التطويرية أو ما يعرف بـ Integrated Development Environment IDE الذي نصحت به الـ OHA وهو البرنامج الشهير <a
href="http://www.eclipse.org/">Eclipse</a>. سنقوم بإضافة ملحقة Android Plug-in الى الاكليبس. كما سنقوم بتشغيل التطبيقات التي سنكتبها على المحاكي Emulator الذي يطابق تماما عمل الأندرويد على الأجهزة المتنقلة. في نهاية هذا الدرس، سنكون قد أعددنا الاكليبس ليكون قادرا على تشغيل تطبيقات الأندرويد.</p><p>بالنسبة للسؤال الثاني، تتطلب هذه السلسلة من القارىء أن يكون ملما بلغة الجافا بمستوى مبتدىء متقدم الى متوسط.</p><p>الشرح سيأخذ بعين الاعتبار مستخدمي الويندوز والماك، ولكن الصور ستكون مأخوذة من جهاز الماك خاصتي <img
src='http://ardroid.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p><p>بقي التنويه على أنني لازلت أتعلم برمجة الأندرويد ولم أحترفها بعد، لذلك أعتذر مقدما إن لم يلق أحدكم جوابا عندي، ولكنني سأبذل كل الجهد في المساعدة على تحصيل الإجابة. والنقطة الثانية هي أنني كنت محتارا في كيفية تنظيم هذه السلسلة لذلك قررت الاستعانة بأحد الكتب التي تشرح برمجة الأندرويد وهو كتاب: <a
href="http://www.amazon.com/ANDROID-PROGRAMMERS-GUIDE-Jerome-DiMarzio/dp/0071599886">Android: A Programmer’s Guide لمؤلفه J.F DiMarzio ودار النشر McGrawHill</a>.</p><p><strong>هل أنتم جاهزون؟ حسنا لنبدأ :</strong></p><p>1- قبل كل شيء، يجب أن يكون لدينا Java Runtime Environment JRE التي تجعل تنفيذ تطبيقات الجافا ممكنا على جهاز الكمبيوتر. اذا كنت تملكها، فننصح بتحديثها لآخر إصدار JRE 6 Update 17، ولتحميل نسخة منها: <a
href="http://java.sun.com/javase/downloads/index.jsp">http://java.sun.com/javase/downloads/index.jsp</a></p><p>2- الخطوة الثانية هي تحميل الاكليبس: <a
href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a></p><p>اختر Eclipse IDE for Java Developers (92 MB) واختر النسخة المناسبة لنظام التشغيل الذي تملكه (بالنسبة للماك، اختر Cocoa).</p><p>أثناء تنصيب البرنامج، يفضل الموافقة على <strong>مكان</strong> انشاء منطقة العمل Workspace التي يقترحها الاكليبس.</p><p>3- الخطوة التالية هي تنصيب الحزمة التطويرية البرمجية للأندرويد الـ Android SDK.</p><p>قم بتحميل النسخة المناسبة من هنا: <a
href="http://developer.android.com/sdk/index.html">http://developer.android.com/sdk/index.html</a></p><p>4- علينا الآن إضافة ملحقة الأندرويد Android Plug-in الى الاكليبس. للقيام بهذه الخطوة، علينا عمل التالي: <strong>(لأجهزة الماك وحتى لو كنت تملك ويندوز، اقرأ الشرح التالي)</strong>:</p><p>من قائمة Help اختر Install New Software (آخر اختيار)</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-11.36.15-AM.png" rel="lightbox[583]"><img
class="size-medium wp-image-586 aligncenter" src="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-11.36.15-AM-300x235.png" alt="" width="300" height="235" /></a></p><p>اضغط على Add وأضف المعلومات التالية ثم اضغط OK:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-11.40.59-AM.png" rel="lightbox[583]"><img
class="size-medium wp-image-587 aligncenter" src="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-11.40.59-AM-300x115.png" alt="" width="300" height="115" /></a></p><p>قم باختيار ما هو موجود في الصورة أدناه:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-11.42.27-AM.png" rel="lightbox[583]"><img
class="size-medium wp-image-588 aligncenter" src="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-11.42.27-AM-300x240.png" alt="" width="300" height="240" /></a></p><p><em><span
style="color: #0000ff">ربما تواجهك رسالة خطأ مفادها أن الموقع المزود هو https:// وستجد خيارا يتوجب عليك تحديده يجبر الاكليبس على الاتصال بالموقع حتى لو كان https:// وليس http://.</span></em></p><p>يفترض أن تكون الملحقة قد اضيفت الى الاكليبس. الخطوة التالية هي إضافة مكان الـ SDK الى الاكليبس. من قائمة البرنامج: Eclipse&gt;Preferences أدخل مكان ال SDK كما هو واضح في الصورة (اسم المكان يعتمد على المكان الذي حفظت به الSDK والموجود في الصورة هو المكان الذي استخدمته):</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-11.47.50-AM.png" rel="lightbox[583]"><img
class="size-medium wp-image-590 aligncenter" src="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-11.47.50-AM-300x79.png" alt="" width="300" height="79" /></a></p><p>قم بإضافة المسار Path الخاص بالـ SDK كما هو مبين في الصورة في الـ Terminal:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-12.06.19-PM.png" rel="lightbox[583]"><img
class="size-medium wp-image-595 aligncenter" src="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-12.06.19-PM-300x108.png" alt="" width="300" height="108" /></a></p><p>في النسخ السابقة من الإضافة، كانت تتوفر نسخة من المحاكي Emulator حال تحميل الإضافة. ولكن النسخة الجديدة من الإضافة تأتي ومعها Android SDK and AVD Manager والذي عن طريقه يتم تحميل المحاكي. ستجدونه تحت خيار Window كما هو في الصورة:</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-11.46.27-AM.png" rel="lightbox[583]"><img
class="size-full wp-image-589 aligncenter" src="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-11.46.27-AM.png" alt="" width="281" height="288" /></a><span
style="color: #0000ff"><em> </em></span></p><p><span
style="color: #0000ff"><em>في حال لم تجد الـ Android SDK Manager، توجه في الـ Terminal الى مجلد الSDK وتوجه الى /tools    ثم ادخل    ./android</em></span></p><p>اذهب الى خيار: Available Packages واضغط Refresh. اختر بعدها النسخة الجديدة من المحاكي وهي:</p><p>SDK Platform Android 2.0.1, API 6, revision 1</p><p>وقم أيضا باختيار:</p><p>Google APIs by Google Inc., Android API 6, revision 1</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-12.02.45-PM.png" rel="lightbox[583]"><img
class="size-medium wp-image-592 aligncenter" src="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-12.02.45-PM-300x174.png" alt="" width="300" height="174" /></a></p><p>بعد الانتهاء، في نفس النافذة، أضف جهازا افتراضيا (اضغط New وادخل اسم الجهاز واختر Android 2.0.1 في خيار الـ Target ثم اختر Create AVD ) وتأكد من وجود علامة &#8220;صح&#8221; خضراء بجانبه. سترى أن نافذة جديدة ظهرت تحاكي جهاز الأندرويد المتنقل. لاحظ أن سرعة إقلاع الأندرويد على المحاكي تشابه السرعة الموجودة في الأجهزة الحقيقية.</p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-12.02.30-PM.png" rel="lightbox[583]"><img
class="size-medium wp-image-591 aligncenter" src="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-12.02.30-PM-300x174.png" alt="" width="300" height="174" /></a></p><p
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-12.03.06-PM.png" rel="lightbox[583]"><img
class="size-medium wp-image-593 aligncenter" src="http://ardroid.com/wp-content/uploads/2009/12/Screen-shot-2009-12-29-at-12.03.06-PM-300x210.png" alt="" width="300" height="210" /></a></p><p>في حال وصلت الى هذه المرحلة، تكون قد أتممت الدرس الأول. حاول التعرف على كيفية التعامل مع المحاكي وكيفية الدخول على التطبيقات الموجودة عليه.</p><p><strong>لأجهزة الويندوز (لم أجربها ولكن يفترض بها أن تكون كما شرحت في الأسفل):</strong></p><p>اتبع نفس التعليمات الموجودة في الأعلى مع مراعاة أن تحميل الإضافة Android Plug-in يتم من خيار: Help&gt;Software Updates&gt;Find and Install</p><p>ثم: Search for New Features to Install</p><p>ثم زر: New Remote Site وأضف معلومات الموقع المذكورة أعلاه.</p><p>اتبع الخطوات كالمذكورة أعلاه، ولإدخال مكان الـ SDK، ادخل على Window&gt;Preferences ثم Android. ولا تنس اختيار المربع الموجود في الأسفل: Automatically Sync Projects to current SDK.</p><p>ختاما، لإضافة ال Path، اضغط زر الفأرة الأيمن على أيقونة My Computer ثم Properties. اضغط على تبويبة Advanced.</p><p>اضغط على Environment Variables ثم ابحث عن المتغير PATH تحت System Variables. أضف مكان الـ SDK ولا تنس أن &#8220;;&#8221; تفصل بين أسماء الأماكن في هذا المتغير.</p><p>عد إلى الاكليبس وحاول إيجاد Android SDK and AVD Manager في أحد القوائم واتبع نفس التعليمات أعلاه.</p><p>&#8212;&#8212;&#8211;</p><p>في حال واجهتم أي مشكلة في تهيئة الاكليبس أوالإضافة أو المحاكي، لا تترددوا في طرح تساؤلاتكم هنا.</p><p>الدرس القادم، سيكون عن كيفية تشغيل بعض التطبيقات التي تأتي كأمثلة أو Samples مع الحزمة البرمجية SDK الخاصة بالأندرويد. كما سنتعرض بشكل سريع على دورة حياة تطبيق الأندرويد أو ما يعرف بـ Software Development Life Cycle SDLC. وختاما، سنتعرف على الملفات التي يتكون منها أي تطبيق أندرويدي.</p><p>بالتوفيق وتحياتي لكم!</p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2009/12/30/android-programming-series-l1/feed/</wfw:commentRss> <slash:comments>107</slash:comments> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2009/12/android_development.jpg" /> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced (User agent is rejected)

Served from: ardroid.com @ 2012-02-11 04:39:48 -->
