نمونه ای از برنامه نویسی اندروید
نویسنده : محمد پارسایی | زمان انتشار : 09 اسفند 1399 ساعت 17:51
جهت انجام پروژه های دانشجویی و یا تمرینهای برنامه نویسی رشته کامپیوتر میتوانید به آی دی تلگرام زیر پیام دهید
@AlirezaSepand
بخش هایی از یک برنامه ی کاربردی اندروید
برنامه ی کاربردی اندروید یا همان Application اندروید در واقع یک واحد نرم افزار نصب شدنی است که می تواند مستقل از دیگر برنامه های (کاربردی (اندروید راه اندازی و اجرا شود.
یک برنامه ی کاربردی اندروید می تواند تنها یک کلاس اپلیکیشن داشته باشد که به محض بالا آمدن برنامه ی کاربردی نمونه سازی می شود و همچنین آخرین کامپوننتی است که هنگام بسته شدن (Shutdown) برنامه متوقف می شود .
برنامه ی کاربردی اندروید متشکل از کامپوننت های نرم افزار اندروید و فایل های منبع (resource file) می باشد .
کامپوننت های یک برنامه ی کاربردی اندروید می توانند بسته به هدف یا کاربرد task به کامپوننت های اپلیکیشن دیگر وصل شوند . از این طریق می توانند بین task های دو برنامه ارتباط متقابل برقرار کنند . ادغام کامپوننت های دو برنامه ی کاربردی می تواند چنان صورت گیرد که برنامه بدون هیچ عیب به کار خود ادامه دهد, حتی اگر کامپوننت های اضافی نصب یا کارگذاری نشده باشند یا کامپوننت های مختلف وظیفه ی یکسانی انجام دهند .
کامپوننت های نرم افزار اندروید
کامپوننت های (نرم افزاری) زیر را می توان در برنامه های کاربردی اندروید تعریف کرد :
- Activities
- Services
- Broadcast receivers (به اختصار Receivers)
- Content provider (به اختصار providers)
نمونه های کلاس android.content.contextامکان اتصال به سیستم اندروید را که برنامه را اجرا می کند فراهم می آورد . همچنین دسترسی به منابع پروژه و اطلاعات سراسری و عمومی محیط اپلیکیشن را امکان پذیر می سازد .
به طور مثال, می توان از طریق کلاس Context اندازه ی تصویر جاری یا صفحه نمایش دستگاه را بررسی کرد .
کلاس Context همچنین دسترسی به بخش services اندروید را فراهم می سازد (به عنوان مثال alarm manager) .
بخش های Activities و Services کلاس Context را بسط می دهند . بنابراین می توان از آن ها مستقیماً جهت دسترسی به Context بهره گرفت .
بررسی اجمالی کامپوننت های برنامه ی کاربری اندروید
Activity
Activity در حقیقت نمایش بصری یک برنامه ی کاربردی اندروید است. اپلیکیشن اندروید می توانید چندین Activity متفاوت داشته باشد . Activityها از Views و fragments جهت تشکیل رابط کاربری برنامه و برقراری تعامل با کاربر استفاده می کند.
Broadcast Receiver
Receiver به منظور با خبر شدن از پیغام ها و intent های سیستم اندروید ثبت و بکاربرده می شود. receiver توسط سیستم اندروید از وقوع رخداد مشخص شده مطلع می شود .
به طور مثال, می توان یک receiver ویژه ی رخدادی مثل اتمام فرایند راه اندازی (boot) یا تغییر حالت گوشی مانند زمانی که کسی به شما زنگ می زند ثبت کرد .
Services
کامپوننت Service تَسک ها را بدون ارائه ی رابط کاربری (UI) اجرا می کند . کامپوننت مزبور قادر است با دیگر کامپوننت های اندروید ارتباط برقرار کرده, برای مثال از طریق Receiver کاربر را با استفاده از notification framework از چیزی در محیط اندروید آگاه سازد .
Content provider
کامپوننت provider رابط کاربری ساخت یافته ای برای داده های اپلیکیشن تعریف می کند . از این جزء می توان برای دستیابی به داده های مورد نظر درون یک برنامه ی کاربردی استفاده کرد, اگرچه می توان آن را برای به اشتراک گذاری اطلاعات بین چندین اپلیکیشن نیز مورد استفاده قرار داد .
اندروید شامل پایگاه داده SQLite است که مکرراً به همراه کامپوننت Content provider مورد استفاده قرار می گیرد . به عبارت دیگر, SQLite داده ها را ذخیره می کند که می توان از طریق provider به آن ها دسترسی داشت .
کامپوننت های پایه ای رابط کاربری در اندروید
توضیحات زیر توصیف مختصری از اصلی ترین کامپوننت های رابط کاربری و بخش هایی از برنامه های کاربردی اندروید را تشریح می کند .
Activity
همان طور که پیش تر ذکر شد Activity پایه ی رابط کاربری را در اپلیکیشن های اندروید تشکیل می دهد .
Fragments
Fragment ها کامپوننت هایی هستند که در متن برنامه حظور دارد. یک fragment در واقع کدهای برنامه ی کاربردی را کپسوله سازی می کند تا استفاده ی مجدد از آن ها ساده تر شود و همچنین امکان پشتیبانی از دستگاه های با اندازه های گوناگون فراهم شود .
تصویر زیر Activity ای به نام main activity را نشان می دهد . همان طور که مشاهده می کنید در گوشی با صفحه نمایش کوچکتر تنها یک fragment قابل رویت می باشد ولی به کاربر این امکان داده می شود که به fragment دیگر مراجعه کرده و دسترسی پیدا کند . این در حالی است که در گوشی با صفحه نمایش پهن تر هر دو fragment مذکور فوراٌ به نمایش گذاشته می شوند .
فقط یک بخش را در لحظه نمایش می دهد
دو بخش کنار هم
Views & layout manager
Views ابزارک های رابط کاربری هستند از جمله دکمه ها یا textfield ها. Views ویژگی ها و امکاناتی دارد که با استفاده از آن ها می توان ظاهر یا عملکرد (behavior) این کامپوننت را پیکربندی کرد.
ViewGroup مسئولیت چیدمان و سازمند کردن دیگر view ها را برعهده دارد که به layout manager نیز شهرت دارد. کلاس پایه ی layout manager ها, android.view.viewgroup می باشد که خود, کلاس android.view.view را گسترش و بسط می دهد که این کلاس باز خود (کلاس) پایه ی views محسوب می شود .
می توان با تودرتو کردن layout manager, طرح های کلی (layout) پیچیده ایجاد کرد .
Device configuration specific layouts (طرح های کلی )
رابط کاربری activity ها اغلب توسط فایل های xml (layout) تعریف می شوند . این امکان وجود دارد که فایل های layout را ویژه ی پیکربندی های دستگاه های متفاوت تعریف کرد برای مثال بر اساس پهنای (width) موجود دستگاه مورد نظر که برنامه در آن اجرا می شود فایل layout ویژه تعبیه کرد .
دیگر عنصرهای اصلی اندروید
ابزارک های Home screen و lock screen
Widget (ابزارک ها) کامپوننت های محاوره ای هستند که عمدتاً در Home screen اندروید کاربرد دارند. ابزارک ها معمولاً نوعی داده, نمایش می دهند و به کاربر اجازه می دهد که روی این داده ها عملیات لازم را انجام دهد, برای مثال widget ممکن است خلاصه ای از ایمیل های دریافتی شما را نشان دهد و در صورت انتخاب پست الکترونیکی مورد نظر (توسط شما یا هر کاربر دیگر) برنامه ی ایمیل را اجرا کرده و پست الکترونیکی انتخابی را به نمایش بگذارد .
برای جلوگیری از بروز هرگونه سردرگمی در رابطه با کامپوننت view (که ابزارک نیز اطلاق می گردند), در این مقاله از واژه ی home screen widgets برای اشاره به ابزارک ها (widgets) استفاده می شود .
live wallpaper
کامپوننت Live wallpapers به شما این امکان را می دهد که برای Home screen گوشی اندرویدتان پس زمینه های پویا انتخاب کنید .
مانیفست اندروید
پیکربندی برنامه ی کاربردی اندروید
کلیه ی کامپوننت ها و تنظیمات اپلیکیشن اندروید داخل فایل AndroidManifest.xml توصیف و به نمایش گذاشته می شود . فایل نام برده تحت عناوین manifest file یا manifest نیز شناخته می شود .
مانیفست همچنین metadata هایی اضافه بر سازمان برای اپلیکیشن مربوطه (مثل آیکون ها و نسخه ی برنامه) در نظر می گیرد .
این فایل طی فرایند نصب برنامه توسط سیستم خوانده می شود . سیستم اندروید ابتدا فایل پیکربندی را ارزیابی می کند, سپس بر اساس آن قابلیت های برنامه ی مورد نظر را شناسایی و ضبط می کند .
تعریف کامپوننت ها در فایل مانیفست
تمامی کامپوننت های Activities, Services و Content provider اپلیکیشن باید به صورت استاتیک یا ایستا (static) در فایل معرفی شوند . Broadcast receiver را می توان هم به صورت ایستا در فایل مانیفست و هم به صورت پویا یا داینامیک (dynamic) در زمان-اجرا (runtime) برنامه ی کاربردی تعریف کرد.
مجوزها
فایل مانیفست باید همچنین کلیه ی مجوزهای لازم برنامه را دربرداشته باشد . برای مثال, چنانچه برنامه ی مورد نظر نیاز به دسترسی به اینترنت داشته باشد, باید در این بخش (فایل مانیفست) مشخص شده باشد.
نمونه ای از مانیفست اندروید
لیست زیر نمونه ای از یک فایل مانیفست ساده را به نمایش می گذارد :
جزئیات دقیق تری از مانیفست اندروید
نسخه و پکیج
صفت package, پکیج یا بسته ی اصلی اشیاء java را که در فایل مانیفست به آن ها اشاره و ارجاع داده شده, تعریف می کند . اگر شئ java داخل پکیج دیگری قرار داشت, باید حتماً با اسم کامل پکیج تعریف شود.
لازم است هر برنامه ی کاربردی اندروید در فروشگاه مجازی Google play با اسم پکیج مخصوص خود عرضه شود . بهمین خاطر توصیه می شود اسم دامنه خود را به صورت وارونه (reverse domain name) بکارببرید . این کار از بروز تصادم با دیگر برنامه یا اپلیکیشن های اندروید جلوگیری می کند.
android:versionName و android:versionCode نسخه ی برنامه را مشخص می کنند. versionName آن چیزی است که کاربر می بیند که می تواند هر رشته ای باشد.
versionCode باید یک عدد صحیح (integer) باشد . Android Market بر اساس versionCode تعیین می کند نسخه ی نصب شده ی برنامه ی کاربردی بروز رسانی شود یا نه. معمولاً با "1" شروع می کنیم, سپس این مقدار را دوباره در صورت عرضه ی نسخه ی جدید از برنامه به اندازه ی یک عدد بالا می بریم .
برنامه ی کاربردی و کامپوننت ها
بخش به شما اجازه می دهد برای اپلیکیشن خود metadata تعریف کرده و در صورت تمایل یک کلاس اپلیکیشن (صریح) ایجاد کنید . این بخش همچنین محلی برای تعریف کامپوننت های برنامه ی کاربردی اندروید شما محسوب می شود .
تگ یک کامپوننت activity تعریف می کند . صفت name به کلاس اشاره دارد, که (چنانچه درست تعریف نشده باشد) مربوط به پکیج تعریف شده در صفت packageمی باشد .
بخش intent filter در فایل مانیفست اندروید, به ART (Android Runtime) دستور می دهد که این activity باید به عنوان نقطه ی ورودی (entry point) بالقوه برنامه ثبت شده و در اجراکننده (launcher) سیستم اندروید در دسترس قرار گیرد. این عمل (action) دستور راه اندازی (android:name="android.intent.action.MAIN" ) را می دهد و پارامتر category android:name="android.intent.category.LAUNCHER" به سیستم اندروید فرمان افزودن activity مورد نظر را به اجراکننده (launcher) می دهد .
مقدار @string/app_name به فایل های منبع (resource files) ارجاع می دهد که دربردارنده ی مقدار حقیقی اسم برنامه ی کاربردی می باشد . استفاده از resource files ارائه ی منابع مختلف )ویژه ی دستگاه های (device) متفاوت( و ترجمه ی اپلیکیشن را بسیار سهل می سازد .
مشابه تگ , می توانید از service, receiver و provider جهت تعریف دیگر کامپوننت های اندروید بهره برد .
Target SDK و Minimum version
بخشی که (در فایل مانیفست) به uses-sdk مربوط می شود به شما اجازه ی تعیین نسخه ی minSdkVersion و targetSdkVersion اپلیکیشن را می دهد .
جدول 4. پایین نسخه ی اندروید برای اپلیکشن طراحی شده
پایین ترین نسخه ی اندروید که برنامه ی شما روی آن اجرا می شود را تعریف می کند . این صفت در حقیقت به مثابه ی نوعی فیلتر در Google Play عمل می کند, به عبارت دیگر ; کاربر نمی تواند برنامه ی کاربردی شما را روی سیستم عامل اندروید با نسخه ی API پایین تر از آنچه در این صفت تعریف شده دانلود و اجرا کند .
minSdkVersion
ویرایشی را که اپلیکیشن روی آن تست و طراحی شده مشخص می کند . چنانچه برنامه با ورژن API دستگاه همخوانی نداشته باشد, سیستم اندروید بین آن دو تغییراتی جهت ایجاد سازگاری اعمال می کند . توصیه می شود targetSdkVersion را همیشه روی جدید ترین ویرایش اندروید تنظیم کنید تا از این طریق بتوانید از قابلیت های جدید اندروید بهره ببرید .
targetSdkVersion
مجوزها
برنامه ی شما نیاز خود را به مجوز با استفاده از تگ اعلان می کند . همچنین قادر است با استقاده از تگ مجوزهای لازم را برای خود تعریف کند .
پیکربندی مورد نیاز دستگاه
بخش مربوط به uses-configuration امکان تعیین متدهای ورودی (input method) دستگاه را فراهم می کند . مثال زیر ایجاب می کند که دستگاه مورد نظر صفحه کلید مجزا (سخت افزار کیبورد( داشته باشد:
بخش uses-feature پیکربندی سخت افزاری مورد نیاز دستگاه شما را مشخص و تعریف می کند . مثال زیر ایجاب می کند که دستگاه مورد نظر دارای (سخت افزار) دوربین باشد :
محل نصب
با صفت installLocation می توان به برنامه اجازه ی نصب روی حافظه ی خارجی (external storage) دستگاه را داد . برای این منظور از auto یا preferExternal استفاده کنید .
لازم به ذکر است که این گزینه به ندرت مورد استفاده قرار می گیرد، زیرا به محض وصل کردن دستگاه اندروید به کامپیوتر (و سوار کردن آن به عنوان USB) برنامه ی مذکور متوقف شده و قابل استفاده نمی باشد .
اطلاعات و جزئیات بیشتر
برای دستیابی به اطلاعات دقیق تر درباره ی صفت ها و بخش های مختلف مانیفست به http://developer.android.com/guide/topics/manifest/manifest-intro.html مراجعه کنید .
در این بخش از آموزشهای برنامه نویسی اندروید به بررسی بخش های مختلف یک اپلیکیشن اندرویدی پرداختیم . در مطلب بعدی به بررسی منابع و resource های اندروید می پردازیم. ,/p>
منبع: www.tahlildadeh.com