<?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; برمجة</title> <atom:link href="http://ardroid.com/tag/%d8%a8%d8%b1%d9%85%d8%ac%d8%a9/feed/" rel="self" type="application/rss+xml" /><link>http://ardroid.com</link> <description>أندرويد للمستخدمين العرب</description> <lastBuildDate>Sat, 11 Feb 2012 14:15:07 +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>للمطورين: Android Design Preview برنامج للمساعدة في تصميم تطبيقات أندرويد</title><link>http://ardroid.com/2011/11/25/for-developers-android-design-preview-helps-designing-your-android-apps/</link> <comments>http://ardroid.com/2011/11/25/for-developers-android-design-preview-helps-designing-your-android-apps/#comments</comments> <pubDate>Fri, 25 Nov 2011 10:33:49 +0000</pubDate> <dc:creator>أنس المعراوي</dc:creator> <category><![CDATA[برمجة أندرويد]]></category> <category><![CDATA[Android Design Preview]]></category> <category><![CDATA[Android Development]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[تطوير]]></category><guid
isPermaLink="false">http://ardroid.com/?p=12162</guid> <description><![CDATA[إن كنت مطوراً لتطبيقات أندرويد, أو حتى مصمماً طُلب منك تصميم الواجهات لتطبيق أندرويد عبر برنامج &#8220;فوتوشوب&#8221; أو أي برنامج آخر, فلا بد أنك تعلم أنه من الصعب نوعاً ما اختبار كيف يبدو التصميم فعلياً على الهاتف خاصة إن كنت في مرحلة تجري فيها الكثير من التعديلات. حتى الآن كانت أفضل وأسرع طريقة هي تصدير&#8230; <a
href="http://ardroid.com/2011/11/25/for-developers-android-design-preview-helps-designing-your-android-apps/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<p>إن كنت مطوراً لتطبيقات أندرويد, أو حتى مصمماً طُلب منك تصميم الواجهات لتطبيق أندرويد عبر برنامج &#8220;فوتوشوب&#8221; أو أي برنامج آخر, فلا بد أنك تعلم أنه من الصعب نوعاً ما اختبار كيف يبدو التصميم فعلياً على الهاتف خاصة إن كنت في مرحلة تجري فيها الكثير من التعديلات.</p><p>حتى الآن كانت أفضل وأسرع طريقة هي تصدير الصورة من الفوتوشوب بصيغة PNG ونقلها على هاتفك ثم فتحها على كامل الشاشة. لكن Roman Nurik وهو مبرمج يعمل لدى غوغل قام بتطوير أداة رائعة تسمى Android Design Preview وهي تسمح لك بعرض جزء مما يظهر على شاشة الكمبيوتر مباشرةً على شاشة الهاتف, أي أن الأداة هي عبارة عن مرآة تعمل عن طريق ADB. كل ما عليك عمله هو تحديد الجزء الذي تريد مشاهدته على الهاتف (في هذه الحالة التصميم داخل برنامج الفوتوشوب وسيقوم البرنامج بعرض التصميم متناسباً مع دقة شاشة هاتفك.</p><p>البرنامج هو عبارة عن ملف Jar تقوم بتثبيته على جهاز الكمبيوتر وبالتالي فهو يعمل مع ويندوز ولينوكس وماك, لمزيد من الإيضاح شاهد الفيديو التالي:</p><p><a
href="http://ardroid.com/2011/11/25/for-developers-android-design-preview-helps-designing-your-android-apps/"><em>Click here to view the embedded video.</em></a></p><p>تستطيع تحميل الأداة <a
href="http://code.google.com/p/android-ui-utils/" target="_blank">من هنا</a>.</p><p>في الواقع توفرت مؤخراً العديد من الأدوت الرائعة المساعدة لمطوري تطبيقات أندرويد وكنا مقصرين في تغطيتها. سنقوم بتغطية عدد منها خلال مقالات لاحقة.</p><p>[<a
href="http://www.androidpolice.com/2011/11/22/hey-designers-android-design-preview-will-mirror-a-portion-of-your-computer-screen-over-abd-for-live-mockups/" target="_blank">Android Police</a>]</p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2011/11/25/for-developers-android-design-preview-helps-designing-your-android-apps/feed/</wfw:commentRss> <slash:comments>7</slash:comments> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2009/12/android_development.jpg" /> </item> <item><title>لمطوري التطبيقات: إظهار الأحرف العربية في التطبيق حتى في الأجهزة غير المعربة.</title><link>http://ardroid.com/2011/01/11/using-arabic-reshape-class/</link> <comments>http://ardroid.com/2011/01/11/using-arabic-reshape-class/#comments</comments> <pubDate>Tue, 11 Jan 2011 16:19:46 +0000</pubDate> <dc:creator>وائل العلواني</dc:creator> <category><![CDATA[برمجة أندرويد]]></category> <category><![CDATA[دروس وتعليمات]]></category> <category><![CDATA[Android Development]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[تطبيقات]]></category> <category><![CDATA[تطوير]]></category><guid
isPermaLink="false">http://ardroid.com/?p=6804</guid> <description><![CDATA[انتهيت منذ فترة قليلة من تطوير تطبيق سيرى النور قريبا جدا. ورغبت باستخدام مجموعة ArabicReshape التي أنشأها المطور عبدالعزيز الحسين والذي أجرينا معه لقاء في وقت سابق. هذه المجموعة تقوم برسم الأحرف العربية كي تظهر صحيحة على جميع الأجهزة، المعربة وغير المعربة. تكمن المشكلة في أن طريقة استخدام هذه المجموعة غير موضحة، أو بالأحرى، مجرد&#8230; <a
href="http://ardroid.com/2011/01/11/using-arabic-reshape-class/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<img
width="318" height="100" src="http://ardroid.com/wp-content/uploads/2011/01/finalView.png" class="attachment-large" alt="finalView" title="finalView" /><p>انتهيت منذ فترة قليلة من تطوير تطبيق سيرى النور قريبا جدا. ورغبت باستخدام مجموعة <a
href="http://code.google.com/p/arabicreshaper/source/browse/opensourceReshape/src/com/AzizHuss/ArabicRehaper/ArabicReshape.java?r=6">ArabicReshape</a> التي أنشأها المطور <a
href="http://ardroid.com/2011/01/04/azizhuss-interview/">عبدالعزيز الحسين والذي أجرينا معه لقاء</a> في وقت سابق. هذه المجموعة تقوم برسم الأحرف العربية كي تظهر صحيحة على جميع الأجهزة، المعربة وغير المعربة.</p><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;">static</span> <span style="color: #003399;">String</span> reshape<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> Str<span style="color: #009900;">&#41;</span></pre></div></div><p>ومن ثم عرض النص المرتجع منها لن يظهره بأحرف عربية.</p><p>بحثت عن الحل ووجدته بعد عدة محاولات. الحل ببساطة هو ربط العنصر المرئي (كعنصر نصي أو زر) بملف خطوط Font يدعم الأحرف العربية. فلو أردنا مثلا استخدام ملف الخطوط <a
href="http://www.mediafire.com/?t7luz4xz00vr231">DroidSans-Bold.ttf</a>، نقوم بإنشاء مجلد بداخل مجلد موجود مسبقا وهو assets ونسميه fonts ومن ثم ننسخ ملف الخط إليه.</p><p
style="text-align: center;"><a
rel="attachment wp-att-6806" href="http://ardroid.com/2011/01/11/using-arabic-reshape-class/fontsss/"><img
class="aligncenter size-full wp-image-6806" title="fontsss" src="http://ardroid.com/wp-content/uploads/2011/01/fontsss.jpg" alt="" width="386" height="144" /></a></p><p
style="text-align: center;"><a
rel="attachment wp-att-6807" href="http://ardroid.com/2011/01/11/using-arabic-reshape-class/droidsan/"><img
class="aligncenter size-full wp-image-6807" title="droidSan" src="http://ardroid.com/wp-content/uploads/2011/01/droidSan.png" alt="" width="199" height="58" /></a></p><p>والآن نقوم، بعد وضع مجموعة <a
href="http://code.google.com/p/arabicreshaper/source/browse/opensourceReshape/src/com/AzizHuss/ArabicRehaper/ArabicReshape.java?r=6">ArabicReshape.java</a> في ملفات المشروع المصدرية، بكتابة الكود التالي: (على فرض أننا نريد إظهار النص في داخل زر Button)</p><div
class="wp_syntax"><div
class="code"><pre class="java" style="font-family:monospace;">Typeface droidBold <span style="color: #339933;">=</span> Typeface.<span style="color: #006633;">createFromAsset</span><span style="color: #009900;">&#40;</span>getAssets<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,<span style="color: #0000ff;">&quot;fonts/DroidSans-Bold.ttf&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">String</span> ardroid <span style="color: #339933;">=</span> ArabicReshape.<span style="color: #006633;">reshape</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;موقع أردرويد&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
ardroidButton <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Button</span><span style="color: #009900;">&#41;</span>findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">ardroiddButton</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
ardroidButton.<span style="color: #006633;">setTypeface</span><span style="color: #009900;">&#40;</span>droidBold<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
ardroidButton.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span>ardroid<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div><p>النتيجة ستكون على الشكل التالي:</p><p><a
rel="attachment wp-att-6808" href="http://ardroid.com/2011/01/11/using-arabic-reshape-class/finalview/"><img
class="aligncenter size-full wp-image-6808" title="finalView" src="http://ardroid.com/wp-content/uploads/2011/01/finalView.png" alt="" width="318" height="100" /></a></p><p>بالتوفيق، وكل الشكر مجددا للأخ عبدالعزيز.</p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2011/01/11/using-arabic-reshape-class/feed/</wfw:commentRss> <slash:comments>45</slash:comments> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2009/11/android-ar.png" /> </item> <item><title>سلسلة دروس تطوير تطبيقات الأندرويد 2 (فيديو) – الحلقة 4 (الأخيرة)</title><link>http://ardroid.com/2011/01/03/android-programming-series-2-ep4/</link> <comments>http://ardroid.com/2011/01/03/android-programming-series-2-ep4/#comments</comments> <pubDate>Mon, 03 Jan 2011 05:48:07 +0000</pubDate> <dc:creator>وائل العلواني</dc:creator> <category><![CDATA[برمجة أندرويد]]></category> <category><![CDATA[دروس وتعليمات]]></category> <category><![CDATA[Android Development]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[تطوير أندرويد]]></category><guid
isPermaLink="false">http://ardroid.com/?p=6365</guid> <description><![CDATA[مرحبا.. هاقد وصلنا الى الحلقة الرابعة والأخيرة من هذه السلسلة، والتي نقوم فيها بعمل واجهة تعرض معلومات المهمة عند الضغط عليها. كما أنه يمكننا حذفها. تعرضنا أيضا لعدة مواضيع أخرى ومنها رفع الخطوط العربية الى المحاكي وكيفية توقيع التطبيق وتهيئته للنشر في المتجر (تم شرحها بشكل سريع). مع نهاية هذه السلسلة، أرغب منكم أعزائي كتابة&#8230; <a
href="http://ardroid.com/2011/01/03/android-programming-series-2-ep4/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<p>مرحبا.. هاقد وصلنا الى الحلقة الرابعة والأخيرة من هذه السلسلة، والتي نقوم فيها بعمل واجهة تعرض معلومات المهمة عند الضغط عليها. كما أنه يمكننا حذفها. تعرضنا أيضا لعدة مواضيع أخرى ومنها رفع الخطوط العربية الى المحاكي وكيفية توقيع التطبيق وتهيئته للنشر في المتجر (تم شرحها بشكل سريع).</p><p><strong>مع نهاية هذه السلسلة، أرغب منكم أعزائي كتابة أي ملاحظة من شأنها تطوير السلسلات القادمة (طريقة الأداء، استعراض الدروس، الشرح، الاخراج،&#8230;) وأتقبل جميع الملاحظات بصدر رحب، وقلب ممتن وشاكر.</strong></p><p>متابعة ممتعة وإلى اللقاء في سلسلة قادمة.</p><p>ملفات الحلقة: <a
href="http://wa2el.net/documents/4thEpisodeFiles.zip">هنا</a>.</p><p>لتحميل الحلقة: <a
href="http://blip.tv/file/get/Ardroid-Ardroids2e4757.mp4">هنا</a>.</p><p><object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="510" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param
name="src" value="http://blip.tv/play/AYKY_QsA" /><param
name="allowfullscreen" value="true" /><embed
type="application/x-shockwave-flash" width="640" height="510" src="http://blip.tv/play/AYKY_QsA" allowfullscreen="true"></embed></object></p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2011/01/03/android-programming-series-2-ep4/feed/</wfw:commentRss> <slash:comments>11</slash:comments> <enclosure
url="http://blip.tv/file/get/Ardroid-Ardroids2e4757.mp4" length="0" type="video/mp4" /> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2010/12/img_199912_android-lab1.jpeg" /> </item> <item><title>سلسلة دروس تطوير تطبيقات الأندرويد 2 (فيديو) – الحلقة 3</title><link>http://ardroid.com/2010/12/30/android-programming-series-2-ep3/</link> <comments>http://ardroid.com/2010/12/30/android-programming-series-2-ep3/#comments</comments> <pubDate>Wed, 29 Dec 2010 22:25:50 +0000</pubDate> <dc:creator>وائل العلواني</dc:creator> <category><![CDATA[برمجة أندرويد]]></category> <category><![CDATA[دروس وتعليمات]]></category> <category><![CDATA[Android Development]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[تطوير أندرويد]]></category><guid
isPermaLink="false">http://ardroid.com/?p=6328</guid> <description><![CDATA[مرحبا.. نقدم لكم الحلقة الثالثة من هذه السلسلة والتي نقوم فيها بإضافة واجهة إنشاء مهمة جديدة وربطها بخريطة غوغل، بالإضافة لعدة أمور أخرى. متابعة ممتعة ملفات الحلقة: هنا. لتحميل الحلقة: هنا.]]></description> <content:encoded><![CDATA[<p>مرحبا.. نقدم لكم الحلقة الثالثة من هذه السلسلة والتي نقوم فيها بإضافة واجهة إنشاء مهمة جديدة وربطها بخريطة غوغل، بالإضافة لعدة أمور أخرى.</p><p>متابعة ممتعة <img
src='http://ardroid.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>ملفات الحلقة: <a
href="http://wa2el.net/documents/3rdEpisodeFiles.zip">هنا</a>.</p><p>لتحميل الحلقة: <a
href="http://blip.tv/file/get/Ardroid-Ardroids2e3283.mp4">هنا</a>.</p><p><object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="510" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param
name="src" value="http://blip.tv/play/AYKYk0MA" /><param
name="allowfullscreen" value="true" /><embed
type="application/x-shockwave-flash" width="640" height="510" src="http://blip.tv/play/AYKYk0MA" allowfullscreen="true"></embed></object></p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2010/12/30/android-programming-series-2-ep3/feed/</wfw:commentRss> <slash:comments>8</slash:comments> <enclosure
url="http://blip.tv/file/get/Ardroid-Ardroids2e3283.mp4" length="0" type="video/mp4" /> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2010/12/img_199912_android-lab1.jpeg" /> </item> <item><title>سلسلة دروس تطوير تطبيقات الأندرويد 2 (فيديو) – الحلقة 2</title><link>http://ardroid.com/2010/12/26/android-programming-series-2-ep2/</link> <comments>http://ardroid.com/2010/12/26/android-programming-series-2-ep2/#comments</comments> <pubDate>Sun, 26 Dec 2010 20:28:17 +0000</pubDate> <dc:creator>وائل العلواني</dc:creator> <category><![CDATA[برمجة أندرويد]]></category> <category><![CDATA[دروس وتعليمات]]></category> <category><![CDATA[Android Development]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[تطوير أندرويد]]></category><guid
isPermaLink="false">http://ardroid.com/?p=6270</guid> <description><![CDATA[مرحبا  هاهي الحلقة الثانية.. مدتها  ساعة تقريبا، وتستعرض هذه الحلقة المواضيع التالية: - شرح مفهوم الـ Adapter. - تنفيذ الواجهة البصرية لكل عنصر\مهمة. - عمل الواجهة الرئيسية. - ربط الواجهة بالـ Adapter. - إضافة بعض المهام لتجربة العملية. يمكنكم تحميل ملفات الشيفرة المصدرية (سورس كود) بالضغط هنا.]]></description> <content:encoded><![CDATA[<p>مرحبا <img
src="http://ardroid.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" /> هاهي الحلقة الثانية.. مدتها  ساعة تقريبا، وتستعرض هذه الحلقة المواضيع التالية:</p><p
dir="rtl">- شرح مفهوم الـ Adapter.</p><p
dir="rtl">- تنفيذ الواجهة البصرية لكل عنصر\مهمة.</p><p
dir="rtl">- عمل الواجهة الرئيسية.</p><p
dir="rtl">- ربط الواجهة بالـ Adapter.</p><p
dir="rtl">- إضافة بعض المهام لتجربة العملية.</p><p>يمكنكم تحميل ملفات الشيفرة المصدرية (سورس كود) <a
href="http://wa2el.net/documents/2ndEpisodeFiles.zip">بالضغط هنا</a>.</p><p><object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="510" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param
name="src" value="http://blip.tv/play/AYKXvBQA" /><param
name="allowfullscreen" value="true" /><embed
type="application/x-shockwave-flash" width="640" height="510" src="http://blip.tv/play/AYKXvBQA" allowfullscreen="true"></embed></object></p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2010/12/26/android-programming-series-2-ep2/feed/</wfw:commentRss> <slash:comments>10</slash:comments> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2010/12/img_199912_android-lab.jpeg" /> </item> <item><title>سلسلة دروس تطوير تطبيقات الأندرويد 2 (فيديو) – الحلقة 1</title><link>http://ardroid.com/2010/12/23/android-programming-series-2-ep1/</link> <comments>http://ardroid.com/2010/12/23/android-programming-series-2-ep1/#comments</comments> <pubDate>Thu, 23 Dec 2010 07:28:00 +0000</pubDate> <dc:creator>وائل العلواني</dc:creator> <category><![CDATA[برمجة أندرويد]]></category> <category><![CDATA[دروس وتعليمات]]></category> <category><![CDATA[Android Development]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[تطوير أندرويد]]></category><guid
isPermaLink="false">http://ardroid.com/?p=6183</guid> <description><![CDATA[مرحبا نضع بين أيديكم الحلقة الأولى.. مدتها ٤٨ دقيقة تقريبا، وتستعرض هذه الحلقة المواضيع التالية: - إنشاء تطبيق جديد. - رؤية وتعديل ملف المانيفست Manifest. - عمل بعض الدوال والمجموعات المساعدة. &#8211;مجموعة المهمة TaskItem. &#8211; إنشاء قاعدة البيانات (تتطلب معرفة بسيطة بعبارات SQL) &#8211; إنشاء المجموعة الأم للتطبيق. يمكنكم تحميل ملفات الشيفرة المصدرية (سورس كود)&#8230; <a
href="http://ardroid.com/2010/12/23/android-programming-series-2-ep1/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<p>مرحبا <img
src='http://ardroid.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> نضع بين أيديكم الحلقة الأولى.. مدتها ٤٨ دقيقة تقريبا، وتستعرض هذه الحلقة المواضيع التالية:</p><p
dir="rtl">- إنشاء تطبيق جديد.</p><p
dir="rtl">- رؤية وتعديل ملف المانيفست Manifest.</p><p
dir="rtl">- عمل بعض الدوال والمجموعات المساعدة.</p><p
dir="rtl">&#8211;مجموعة المهمة TaskItem.</p><p
dir="rtl">&#8211; إنشاء قاعدة البيانات (تتطلب معرفة بسيطة بعبارات SQL)</p><p
dir="rtl">&#8211; إنشاء المجموعة الأم للتطبيق.</p><p>يمكنكم تحميل ملفات الشيفرة المصدرية (سورس كود) <a
href="http://wa2el.net/documents/ArdroidTasksMgr.zip">بالضغط هنا</a>.</p><div
style="margin: -10px;"><object
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="510" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param
name="src" value="http://blip.tv/play/AYKW3CMA" /><param
name="allowfullscreen" value="true" /><embed
type="application/x-shockwave-flash" width="640" height="510" src="http://blip.tv/play/AYKW3CMA" allowfullscreen="true"></embed></object></div> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2010/12/23/android-programming-series-2-ep1/feed/</wfw:commentRss> <slash:comments>28</slash:comments> <enclosure
id="thumbnail" url="http://c0057500.cdn1.cloudfiles.rackspacecloud.com/2010/12/img_199912_android-lab1.jpeg" /> </item> <item><title>سلسلة دروس تطوير تطبيقات الأندرويد 2 (فيديو) &#8211; الحلقة 0</title><link>http://ardroid.com/2010/12/20/android-programming-series-2-ep0/</link> <comments>http://ardroid.com/2010/12/20/android-programming-series-2-ep0/#comments</comments> <pubDate>Mon, 20 Dec 2010 14:43:25 +0000</pubDate> <dc:creator>وائل العلواني</dc:creator> <category><![CDATA[برمجة أندرويد]]></category> <category><![CDATA[دروس وتعليمات]]></category> <category><![CDATA[Android Development]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[تطوير أندرويد]]></category><guid
isPermaLink="false">http://ardroid.com/?p=6133</guid> <description><![CDATA[هاقد عدنا إليكم بسلسلة جديدة لتطوير تطبيقات الأندرويد. تختلف هذه السلسلة عن سلسلة الدروس التي قدمناها سابقاً بأنها ذات هدف محدد وهو العمل على تطوير تطبيق مدير مهام Task Manager من البداية الى النهاية. كما أن هذه السلسلة مرئية ويمكنكم متابعة حلقاتها عبر أردرويد أو قناتنا على موقع يوتيوب. التطبيق الذي سنتعلم تطويره خلال السلسلة عبارة&#8230; <a
href="http://ardroid.com/2010/12/20/android-programming-series-2-ep0/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<img
width="200" height="200" src="http://ardroid.com/wp-content/uploads/2010/12/img_199912_android-lab1.jpeg" class="attachment-large" alt="img_199912_android-lab" title="img_199912_android-lab" /><p>هاقد عدنا إليكم بسلسلة جديدة لتطوير تطبيقات الأندرويد. تختلف هذه السلسلة عن سلسلة الدروس <a
href="http://ardroid.com/2009/12/30/android-programming-series-l1/" target="_blank">التي قدمناها سابقاً</a> بأنها ذات هدف محدد وهو العمل على تطوير تطبيق مدير مهام Task Manager من البداية الى النهاية. كما أن هذه السلسلة مرئية ويمكنكم متابعة حلقاتها عبر أردرويد أو <a
href="http://www.youtube.com/ArdroidChannel" target="_blank">قناتنا على موقع يوتيوب</a>.</p><p>التطبيق الذي سنتعلم تطويره خلال السلسلة عبارة عن تطبيق إدارة مهام كما ذكرنا لكنه يتميز بأنك تستطيع عند إضافة المهمة تحديد مكان تنفيذها على الخريطة وبذلك تقوم بتوزيع المهام جغرافياً مما يقدم طريقة أفضل لإدارة المهام. بالإضافة إلى هذا يقدم جميع الميزات الأساسية الأخرى التي تتوقعها من مثل هذا التطبيق.</p><p>أترككم مع تفاصيل التطبيق في الحلقة رقم صفر من السلسلة. (يمكنكم اختيار 720p لمشاهدة نسخة عالية الدقة HD)</p><p><a
href="http://ardroid.com/2010/12/20/android-programming-series-2-ep0/"><em>Click here to view the embedded video.</em></a></p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2010/12/20/android-programming-series-2-ep0/feed/</wfw:commentRss> <slash:comments>27</slash:comments> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2010/12/img_199912_android-lab1.jpeg" /> </item> <item><title>مخترع تطبيقات الأندرويد App Inventor</title><link>http://ardroid.com/2010/07/12/app-inventor-for-android/</link> <comments>http://ardroid.com/2010/07/12/app-inventor-for-android/#comments</comments> <pubDate>Mon, 12 Jul 2010 16:07:41 +0000</pubDate> <dc:creator>وائل العلواني</dc:creator> <category><![CDATA[أخبار أندرويد]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[app]]></category> <category><![CDATA[app inventor]]></category> <category><![CDATA[developers]]></category> <category><![CDATA[inventor]]></category> <category><![CDATA[أداة مرئية]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[تطبيقات]]></category> <category><![CDATA[تطوير]]></category><guid
isPermaLink="false">http://ardroid.com/?p=3148</guid> <description><![CDATA[تناقلت المواقع التقنية الإخبارية اليوم خبر صدور App Inventor for Android وهو ببساطة بيئة برمجية مرئية عبر الويب تمكن مستخدمي الأندرويد (من المبرمجين وغير المبرمجين) من عمل تطبيقات أندرويد.  ما تعنيه كلمة بيئة مرئية هو احتوائها على عناصر وأشكال مرئية لكل منها وظيفة معينة يتم تعديلها وربطها ببعضها البعض بالشكل الذي يرغب المستخدم أن يظهر&#8230; <a
href="http://ardroid.com/2010/07/12/app-inventor-for-android/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<img
width="199" height="199" src="http://ardroid.com/wp-content/uploads/2010/07/inventro.png" class="attachment-large" alt="inventro" title="inventro" /><p>تناقلت المواقع التقنية الإخبارية اليوم خبر صدور <a
href="http://appinventor.googlelabs.com/about/">App Inventor for Android</a> وهو ببساطة بيئة برمجية مرئية عبر الويب تمكن مستخدمي الأندرويد (من المبرمجين وغير المبرمجين) من عمل تطبيقات أندرويد.  ما تعنيه كلمة بيئة مرئية هو احتوائها على عناصر وأشكال مرئية لكل منها وظيفة معينة يتم تعديلها وربطها ببعضها البعض بالشكل الذي يرغب المستخدم أن يظهر التطبيق عليه (مشابهة للبيئة المستخدمة في برنامج <a
href="http://en.wikipedia.org/wiki/LabVIEW">LabView</a> ولعشاق الليجو <a
href="http://mindstorms.lego.com/en-us/Default.aspx">NXT</a>). لا حاجة لرؤية الأكواد ولا التدخل بكتابتها.</p><p><a
href="http://ardroid.com/wp-content/uploads/2010/07/HelloPurrTwoBlocks.png" rel="lightbox[3148]"><img
class="aligncenter size-medium wp-image-3152" src="http://ardroid.com/wp-content/uploads/2010/07/HelloPurrTwoBlocks-300x141.png" alt="http://appinventor.googlelabs.com/learn/tutorials/hellopurr/hellopurr-part1.html" width="300" height="141" /></a></p><p>تتضمن <a
href="http://appinventor.googlelabs.com/learn/reference/components/index.html">العناصر</a> ما يلي:</p><ul><li>العناصر الأساسية (الأزرار، مربعات الاختيار، الصور، حقول نصية،&#8230;)</li><li>عناصر الوسائط المتعددة (الصور، عرض الفيديو، مشغل الصوت،&#8230;)</li><li>عناصر الرسوم المتحركة (كرة، شبح <img
src='http://ardroid.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</li><li>عناصر اجتماعية (مربع اختيار المتصل، اختيار البريد الالكتروني، مربع الاتصال، ارسال رسالة قصيرة، التواصل عبر تويتر، &#8230;)</li><li>عناصر خاصة بالحساسات Sensors (حساس تسارع ميل الجهاز Accelerometer، تحديد المكان GPS، تحديد وضع الجهاز (أفقي | عمودي))</li><li>عناصر ترتيب ما يظهر على الشاشة (ترتيب العناصر التي تظهر على شاشة التطبيق أفقيا أو عموديا أو على شكل جدول)</li><li>عناصر أخرى (قاريء الباركود، محول النص الى صوت، التنبيهات، التعرف الى الصوت speech recognition،&#8230;)</li></ul><p>بالإضافة الى العناصر، هناك القطع البرمجية أو ال Blocks والتي تشكل الدوال methods/functions وما تتضمنه من منطق logic كما تتعامل مع البيانات المستخدمة في التطبيق ويتم ربطها بالعناصر المذكورة في الأعلى. <a
href="http://appinventor.googlelabs.com/learn/reference/blocks/index.html">القطع</a> تتضمن:</p><ul><li>قطع التعريف (تعريف الدوال ومدخلاتها ووظيفتها)</li><li>قطع النصوص (التعامل مع النصوص: تعريف النص، تجزيء النص، هل يحتوي النص على؟، هل يبدأ بحرف ..؟،&#8230;)</li><li>قطع القوائم (التعامل مع القوائم: إنشاء قائمة، استبدال عنصر في القائمة، البحث عن عنصر،&#8230;)</li><li>قطع الرياضيات (جميع العمليات الرياضية على المدخلات: العمليات الحسابية، المنطقية، الدوال الرياضية،&#8230;)</li><li>قطع المنطق (true, false, and, or,&#8230;.)</li><li>قطع التحكم (if, ifelse, for, while,&#8230;)</li><li>قطع الألوان (التعامل مع الألوان)</li></ul><p>App Inventor هو أداة ممتازة جدا وتحرك ذكي من غوغل. ففي <a
href="http://techcrunch.com/2010/07/11/google-app-inventor/">مقالة نشرها موقع TechCrunch</a>، شرح الكاتب وجهة نظره المتعلقة بقوة هذه الأداة في خلق جيل من المطورين الجدد لتطبيقات الأندرويد. فالبداية لهؤلاء المطورين ستكون عبر أداة  App Inventor (ونلاحظ أن الأداة في متناول جميع الفئات العمرية) التي بطبيعة الحال ستمكن المستخدمين من الوصول الى حدود معينة (حالها حال أية أداة برمجية من هذا النوع) تدفعهم فيما بعد لدخول عالم البرمجة الفعلي وكتابة الأكواد والذي سيعطيهم تحكما أكبر في صنع التطبيقات. عطفا على هذه النقطة، أتوقع شخصيا أن تقوم غوغل بعمل مسابقات بين المدارس لأفضل تطبيق باستخدام هذه الأداة، على غرار مسابقات <a
href="http://en.wikipedia.org/wiki/RoboCup_Junior">Lego Robocup</a> وهذا تحديدا من شأنه تشكيل الجيل الجديد من المبرمجين.</p><p>في الختام، أتوقع بأن تسهم هذه الأداة في عمل تطبيقات أكثر أمنا وفاعلية من تلك المنتشرة في سوق الأندرويد والتي تزعجنا في بعض الأحيان لكونها مليئة بالأخطاء البرمجية، حيث أن هذه الأداة ستجعل من عملية تصليح لأخطاء debugging أسهل.</p><p>أترككم مع المقطع الذي يشرح سهولة عمل التطبيقات وكيفية تنصيبها على الجهاز مباشرة:</p><p><a
href="http://ardroid.com/2010/07/12/app-inventor-for-android/"><em>Click here to view the embedded video.</em></a></p><p><strong><span
style="text-decoration: underline">تحديث ١:</span></strong></p><p>أطلعنا <a
href="http://barcadroid.com/">BarcaDroid</a> أحد أصدقاء موقعنا الدائمين على بعض العيوب التي وجدها في هذه الأداة (وهو ما كنا قد أشرنا اليه بوجود محدودية في هذا النوع من الأدوات البرمجية، الا أن صديقنا أورد عددا منها بالتفصيل) وهي:</p><p>١- الكود الذي تنتجه الأداة ليس مثاليا optimized (أي احتوائه على أكواد زائدة يمكن الاستغناء عنها، وهذا موضوع حساس في عالم تطبيقات الأجهزة الذكية والنقالة)</p><p>٢- لا يمكنك الإطلاع على كود التطبيق بعد الانتهاء منه، ولا يمكنك التعديل عليه باستخدام الحزمة البرمجية SDK.</p><p>٣- التطبيقات التي تنتجها الأداة أكبر حجما من تلك التي تؤدي نفس الغرض والمطورة يدويا على مستوى الكود.</p><p>٤- عدد الدوال المتوفرة في الأداة أقل بكثير من عددها في ال SDK.</p><p>٥- لا يمكنك عمل widgets للتطبيقات (الwidgets هي النماذج المصغرة من التطبيق والتي يمكنك وضعها على الشاشة الرئيسية للتحكم بالتطبيق عبرها).</p><p>٦- حاليا، لا يمكن رفع التطبيقات المطورة بهذه الأداة على سوق الأندرويد! ولم تعلن غوغل حتى الآن عما اذا كانت ستفعل هذه الخاصية.</p><p>٧- ال app inventor لا يدعم الاتصال ورفع التطبيقات المطورة على جميع أجهزة الأندرويد (أي أنه عليك التأكد من دعم هذه الأداة لجهازك حتى تتمكن من تطوير ورفع التطبيقات عليه عبر سلك اليو اس بي).</p><p>٨- لا توجد خاصية تطوير التطبيق باستخدام هذه الأداة دون وجود اتصال فعال بالانترنت (ال app inventor يعمل على غيمة غوغل الحوسبية)، وهذا يعيق من كان سفرهم كثيرا.</p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2010/07/12/app-inventor-for-android/feed/</wfw:commentRss> <slash:comments>23</slash:comments> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2010/07/inventro.png" /> </item> <item><title>خلفية الخرائط الحية المتقدمة &#8211; نحن نحب أندرويد</title><link>http://ardroid.com/2010/06/14/advanced-map-live-wallpaper/</link> <comments>http://ardroid.com/2010/06/14/advanced-map-live-wallpaper/#comments</comments> <pubDate>Mon, 14 Jun 2010 14:13:41 +0000</pubDate> <dc:creator>لؤي العقاد</dc:creator> <category><![CDATA[برامج]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Android Market]]></category> <category><![CDATA[developers]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Google Maps]]></category> <category><![CDATA[GPS]]></category> <category><![CDATA[map]]></category> <category><![CDATA[wallpaper]]></category> <category><![CDATA[أندرويد]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[تطبيقات]]></category> <category><![CDATA[خرائط غوغل]]></category> <category><![CDATA[خلفية]]></category> <category><![CDATA[سوق أندرويد]]></category> <category><![CDATA[غوغل]]></category> <category><![CDATA[مطورون]]></category><guid
isPermaLink="false">http://ardroid.com/?p=2505</guid> <description><![CDATA[هل تذكر ميزة خلفية الخرائط الحية من خرائط غوغل 4.1؟ لا بد أنك احببتها مثل الكثير من الناس. أما الآن فستحبها أكثر بعد أن قام المطورون في AndroidGamer بما يجيدون فعله و لم يعطونا بعض الخيارات و امكانية استخدام كل أنواع الخرائط فقط, بل انطلقوا لأبعد من هذا ببرنامجهم الجديد و المتميزAdvanced Map Live Wallpaper.&#8230; <a
href="http://ardroid.com/2010/06/14/advanced-map-live-wallpaper/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<img
width="360" height="600" src="http://ardroid.com/wp-content/uploads/2010/06/Maps-home.png" class="attachment-large" alt="Maps-home" title="Maps-home" /><p>هل تذكر ميزة <a
title="تحديث خرائط غوغل إلى 4.1 يقدم مزايا جديدة" href="http://ardroid.com/2010/03/19/google-maps-update-to-4-1/">خلفية الخرائط الحية من خرائط غوغل 4.1</a>؟ لا بد أنك احببتها مثل الكثير من الناس. أما الآن فستحبها أكثر بعد أن قام المطورون في <a
href="http://www.pocketgamer.org/os-map">AndroidGamer</a> بما يجيدون فعله و لم يعطونا بعض الخيارات و امكانية استخدام كل أنواع الخرائط فقط, بل انطلقوا لأبعد من هذا ببرنامجهم الجديد و المتميزAdvanced Map Live Wallpaper.</p><div
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/06/Maps-home.png" rel="lightbox[2505]"><img
class="alignnone size-medium wp-image-2529" style="margin: 3px" src="http://ardroid.com/wp-content/uploads/2010/06/Maps-home-180x300.png" alt="" width="180" height="300" /></a><a
href="http://ardroid.com/wp-content/uploads/2010/06/Lock-Maps.png" rel="lightbox[2505]"><img
class="alignnone size-medium wp-image-2516" style="margin: 3px" src="http://ardroid.com/wp-content/uploads/2010/06/Lock-Maps-180x300.png" alt="" width="180" height="300" /></a><a
href="http://ardroid.com/wp-content/uploads/2010/06/Maps-home2.png" rel="lightbox[2505]"><img
class="alignnone size-medium wp-image-2526" style="margin: 3px" src="http://ardroid.com/wp-content/uploads/2010/06/Maps-home2-180x300.png" alt="" width="180" height="300" /></a></div><p><span
id="more-2505"></span></p><p>الميزات الجديدة في هذا التطبيق و الغير موجودة في نسخة غوغل رائعة و ستعجبك:</p><ul><li>خيارات متعددة للخرائط, مثل غوغل, Bing, Ordnance survey, USA VFR, IR charts و openstreetmap.</li><li>لا يستهلك البطارية بشكل كبير, حيث يغلق نفسه عند اخفاء الخليفة.</li><li>يوفر عليك من تكلفة الاتصال بميزة التخزين المؤقت Caching, حيث لا تطر لتحميل ملفات الخرائط سوى مرة واحدة.</li><li>يمكنك تغيير درجة التكبير على جميع الخرائط.</li><li>يحدد لك مكانك, و يضع دائرة حوله لتتمكن من معرفة أين أنت, و يمكن ايقاف هذه الميزة.</li></ul><p><em>(ملاحظة: هذه الخلفية لا تعمل إلا على <a
title="Android 2.1" href="http://ardroid.com/tag/android-2-1/">Android 2.1</a> أو النسخ الأحدث, و هي لا تزال في المرحلة التجريبية)</em></p><div
style="text-align: center"><a
href="http://ardroid.com/wp-content/uploads/2010/06/AMLW1.png" rel="lightbox[2505]"><img
class="alignnone size-medium wp-image-2508" style="margin: 3px" src="http://ardroid.com/wp-content/uploads/2010/06/AMLW1-180x300.png" alt="" width="180" height="300" /></a><a
href="http://ardroid.com/wp-content/uploads/2010/06/AMLW2.png" rel="lightbox[2505]"><img
class="alignnone size-medium wp-image-2510" style="margin: 3px" src="http://ardroid.com/wp-content/uploads/2010/06/AMLW2-180x300.png" alt="" width="180" height="300" /></a><a
href="http://ardroid.com/wp-content/uploads/2010/06/AMLW3.png" rel="lightbox[2505]"></a><a
href="http://ardroid.com/wp-content/uploads/2010/06/AMLW3.png" rel="lightbox[2505]"><img
class="alignnone size-medium wp-image-2511" style="margin: 3px" src="http://ardroid.com/wp-content/uploads/2010/06/AMLW3-180x300.png" alt="" width="180" height="300" /></a><a
href="http://ardroid.com/wp-content/uploads/2010/06/ALMW4.png" rel="lightbox[2505]"><img
class="alignnone size-medium wp-image-2507" style="margin: 3px" src="http://ardroid.com/wp-content/uploads/2010/06/ALMW4-180x300.png" alt="" width="180" height="300" /></a><a
href="http://ardroid.com/wp-content/uploads/2010/06/AMLW5.png" rel="lightbox[2505]"><img
class="alignnone size-medium wp-image-2513" style="margin: 3px" src="http://ardroid.com/wp-content/uploads/2010/06/AMLW5-180x300.png" alt="" width="180" height="300" /></a><a
href="http://ardroid.com/wp-content/uploads/2010/06/AMLW6.png" rel="lightbox[2505]"><img
class="alignnone size-medium wp-image-2525" style="margin: 3px" src="http://ardroid.com/wp-content/uploads/2010/06/AMLW6-180x300.png" alt="" width="180" height="300" /></a></div><p>الآن و إذا أردت تحميل البرنامج (على الأغلب أنت تريد ذلك) فما عليك إلا مسح الكود الآتي:</p><p><a
href="http://ardroid.com/wp-content/uploads/2010/06/LiveMapsqrcode.png" rel="lightbox[2505]"><img
class="aligncenter size-full wp-image-2512" src="http://ardroid.com/wp-content/uploads/2010/06/LiveMapsqrcode.png" alt="" width="210" height="210" /></a></p><p><em>[مصادر: <a
href="http://www.talkandroid.com/3157-advanced-map-live-wallpaper-now-in-android-market/">talkandroid.com</a>, <a
href="http://www.androidcentral.com/advanced-map-live-wallpaper-why-we-love-open-source">androidcentral.com</a>]</em></p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2010/06/14/advanced-map-live-wallpaper/feed/</wfw:commentRss> <slash:comments>17</slash:comments> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2010/06/AMLW-thumb-e1276522902695.jpg" /> </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>غوغل تطلق حزمة التطوير الخاصة بـ أندرويد 2.1</title><link>http://ardroid.com/2010/01/12/android-2-1-sdk/</link> <comments>http://ardroid.com/2010/01/12/android-2-1-sdk/#comments</comments> <pubDate>Tue, 12 Jan 2010 08:45:42 +0000</pubDate> <dc:creator>أنس المعراوي</dc:creator> <category><![CDATA[أخبار أندرويد]]></category> <category><![CDATA[Android 2.0]]></category> <category><![CDATA[Android 2.1]]></category> <category><![CDATA[Nexus One]]></category> <category><![CDATA[برمجة]]></category> <category><![CDATA[تطبيقات]]></category> <category><![CDATA[غوغل]]></category><guid
isPermaLink="false">http://ardroid.com/?p=944</guid> <description><![CDATA[إن أحد أهم ميزات جهاز Nexus One هي نظام تشغيله, فالجهاز يحتوي على آخر نسخة من أندرويد وهي النسخة Android 2.1 التي لم تكن متاحة إلا لنيكسوس لكن الآن قامت غوغل بطرح حزمة تطوير الاندوريد 2.1 (SDK) فصار بإمكان مطوري البرامج الحصول عليها واستخدامها لتطوير برامجهم, كما صار بإمكان أي شخص تحميلها وتشغيلها على حاسبه&#8230; <a
href="http://ardroid.com/2010/01/12/android-2-1-sdk/">تابع القراءة &#187;</a>]]></description> <content:encoded><![CDATA[<p>إن أحد أهم ميزات جهاز <a
href="http://ardroid.com/tag/nexus-one/" target="_blank">Nexus One</a> هي نظام تشغيله, فالجهاز يحتوي على آخر نسخة من أندرويد وهي النسخة Android 2.1 التي لم تكن متاحة إلا لنيكسوس لكن الآن قامت غوغل بطرح حزمة تطوير الاندوريد 2.1 (SDK) فصار بإمكان مطوري البرامج الحصول عليها واستخدامها لتطوير برامجهم, كما صار بإمكان أي شخص تحميلها وتشغيلها على حاسبه لتجربة مزايا النسخة الأخيرة من أندرويد <a
href="http://ardroid.com/2009/12/30/android-programming-series-l1/" target="_blank">(إضغط هنا لمعرفة الطريقة)</a>.</p><p>وذكرت غوغل بأن هذه النسخة هي &#8220;إصدارة ثانوية من المنصة&#8221; تأتي كتحسين على النسخة Android 2.0, لكن على الرغم من أن غوغل تسميها &#8220;إصدارة ثانوية&#8221; تحتوي هذه النسخة على عدد من الميزات الجديدة مثل التعرف إلى الصوت Voice Recognition, صور الجدار المتحركة Live Wallpapers, مُشغّل برامج جديد, وعدة تعديلات على الشاشة الرئيسية والمتصفح, كما لاحظ بعض من اختبروا النسخة أن نظام التشغيل الجديد أسرع أيضاً.</p><p>كما أوضحت غوغل من خلال تدوينتها في مدونة مطوّري أندرويد بإتاحة إمكانية إدارة لمنفذ الـ USB وبشكل يدعم جهاز Nexus One, هذا قد يكون له علاقة بالخدمات الجديدة التي ستطرحها غوغل لجهاز نيكسوس ون مثل محطة Docking Station الجديدة التي ستستخدم لشحن الجهاز وعمل نسخة احتياطية للبيانات.</p><p><a
href="http://developer.android.com/sdk/android-2.1.html" target="_blank">يمكنكم الحصول على الـ SDK الجديدة من هنا</a>.</p><p>(<a
href="http://www.techcrunch.com/2010/01/11/android-21-sdk/" target="_blank">المصدر: TechCrunch</a>)</p> ]]></content:encoded> <wfw:commentRss>http://ardroid.com/2010/01/12/android-2-1-sdk/feed/</wfw:commentRss> <slash:comments>8</slash:comments> <enclosure
id="thumbnail" url="http://ardroid.com/wp-content/uploads/2010/01/Android2.1.png" /> </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 20:55:59 -->
