برنامه نویسی اندروید - دانشگاه صنعتی قم

این وبلاگ کانال ارتباطی با دانشجویان درس«برنامه نویسی موبایل» دانشگاه صنعتی قم می باشد.

برنامه نویسی اندروید - دانشگاه صنعتی قم

این وبلاگ کانال ارتباطی با دانشجویان درس«برنامه نویسی موبایل» دانشگاه صنعتی قم می باشد.

محتویات این وبلاگ با هدف آموزش اندروید در دوره درسی "برنامه نویسی موبایل" در دانشگاه صنعتی قم توسط اینجانب گردآوری شده است.
تعداد زیادی از مطالب ترجمه شده در این وبلاگ توسط دانشجویان دانشگاه صنعتی قم به عنوان پروژه های این درس ترجمه شده است.
در صورتی که تصمیم به تماس با من دارید، می توانید از طریق آدرس ایمیل qut دات android در جی میل دات کام با من تماس بگیرید.
-------------------
اگر بتوانم به شما کمکی در زمینه برنامه نویسی اندروید بکنم، خوشحال خواهم شد با این حال اگر پرسشی را ارسال کردید و بنده نیز به دلیل مشکلات و مشغله نتوانستم پاسخگو باشم، پوزش بنده را پیشاپیش پذیرا باشید.
-------------------
چون افراد زیادی از من درخواست می کنند تا برنامه نویسان اندروید به خصوص در شهر قم را به آنها معرفی کنند، اگر تمایل دارید رزومه و یا مشخصات خود را برایم ارسال کنید تا در صورت وجود درخواستهایی از این دست به شما اطلاع دهم.
از نظر من محدویتی به شهر قم وجود ندارد، لذا اگر برنامه نویس اندروید در شهرهایی دیگر هستید و یا به دنبال نیروی برنامه نویس اندروید هستید با من در تماس باشید، شاید بتوانم در این زمینه به شما کمکی بکنم :)
ناگفته نماند از آنجایی که در فضای مجازی من شناختی از هیچ شخص یا شرکتی ندارم، اگر شخصی به دنبال نیروی کار باشد، به افرادی که با مشخصات درخواستی ایشان تطابق داشته باشند، اطلاع خواهم داد و توصیه می شود برنامه نویسان محترم نیز قبل از شروع به همکاری، ملاحظات لازم در این زمینه را به عمل آورند چون من نیز شناختی از طرف مقابل ندارم.

طبقه بندی موضوعی

14- اصول برنامه های اندروید

جمعه, ۲ خرداد ۱۳۹۳، ۱۱:۱۶ ب.ظ
مترجم: حسام شفیعی - حسام الدین نظری

آدرس مطلب اصلی: http://developer.android.com/guide/components/fundamentals.html

برنامه های اندروید در زبان برنامه نویسی جاوا نوشته می شوند.

ابزار Android SDK کد شما را همراه با هر گونه اطلاعات و منابع فایل به یک APK (یا بسته اندروید) کامپایل می کند، که این بسته یک آرشیو فایل با پسوند .apk است.

یک فایل APK شامل تمام محتویات یک برنامه اندروید و فایلی که مجهز به ابزار اندروید برای نصب یک برنامه مورد استفاده قرار می گیرد، است. هنگامیکه بر روی یک دستگاه نصب شده است، هر برنامه اندروید در sand box امنیتی خود موجود است:

سیستم عامل اندروید یک سیستم لینوکس چند کاربره که در آن هر برنامه یک کاربر مستقل است.

به طور پیش فرض، سیستم منحصر به فرد لینوکس به هر برنامه یک userID (ID تنها توسط سیستم استفاده می شود و ناشناخته به برنامه است) اختصاص داده می شود.

این سیستم مجوز را برای تمام فایل ها در یک اپلیکیشن که به یک userID تعلق دارد را آماده می کند و برنامه می تواند به آنها دسترسی داشته باشد.

هر فرآیند دارای ماشین مجازی است که کد برنامه را جدای از برنامه های دیگر اجرا می کند.

به این ترتیب پیاده سازی سیستم اندروید با کمترین هزینه انجام می شود. به این معنا که هر برنامه به طور پیش فرض، تنها به اجزای سازنده ی آن دسترسی دارد که نیاز به انجام آن کار و نه بیشتر است.

این یک محیط بسیار امن است که یک نرم افزار نمی تواند به قسمت هایی که به آن اجازه داده نشده است دسترسی پیدا کند.

با این حال راههایی برای به اشتراک گذاری داده ها بین یک برنامه با برنامه ای دیگر به منظور دسترسی به خدمات سیستم وجود دارد:

- برای دو برنامه امکان به اشتراک گذاشتن userID لینوکس وجود دارد، که در این صورت آنها قادر به دستیابی به فایل های یکدیگر می باشند. برای حفظ منابع سیستم، برنامه ها با همان userID می توانند ترتیب در روند پردازش لینوکس را حفظ کند و همان ماشین مجازی را به اشتراک بگذارد.

- یک برنامه می تواند اجازه دسترسی به داده ها مانند (user's contact ، پیام های SMS، کارت SD، دوربین، بلوتوث و را بدهد. همه ی دسترسی ها باید توسط کاربر در زمان نصب داده شود.

این قابلیت، اصول اولیه در مورد چند و چون برنامه های اندروید موجود در سیستم را پوشش می دهد. باقیمانده این اسناد به شما معرفی می شود :

- اجزای چارچوب اصلی که برنامه های خود را تعریف کنیم.

- فایل Manifest که در آن شما اجزا و ویژگی های مورد نیاز دستگاه برای برنامه تان را اعلام می کنید.

- منابعی که جدا از کد برنامه است و اجازه می دهد به برنامه، تا رفتار خود را برای انواع پیکربندی های دستگاه بهینه سازی کند.

App Components (اجزای برنامه)

Component های یک برنامه بلوک های سازنده ضروری یک نرم افزار اندروید هستند.

هر Component یک قسمت خاص است که سیستم از طریق آن می تواند وارد برنامه خود شود.

همه ی componentها نقاط اصلی ورود کاربر نیستند و برخی به هم وابسته اند امّا هر کدام نقش خاصی را ایفا می کنند و هر کدام یک بلوک ساختمانی منحصر به فرد است که به تعریف رفتار کلی نرم افزار کمک می کند.

چهار نوع component برنامه وجود دارد، و هر نوع یک هدفی را دنبال می کند و همچنین هر نوع یک چرخه ی عمر مشخصی دارد که بیانگر این است هر component چگونه ایجاد شده و چگونه از بین می رود.

Activities

Activity نشان دهنده یک صفحه نمایش با یک رابطه کاربری است.

به عنوان مثال، برنامه ایمیل یک Activity که ایمیل های جدید را نشان می دهد دارد، Activity دیگر آن برای ارسال ایمیل و دیگری برای خواندن ایمیل ها است. اگر چه Activity ها برای شکل گیری یک برنامه منسجم در ایمیل کار می کنند، ولی هر یک مستقل از دیگران است.

بدین ترتیب، برنامه های مختلف می توانند هر یک از این Activity ها را آغاز کنند.

2 Services

Services یک Component است که در background اجرا می شود به منظور انجام عملیات طولانی مدت و یا برای انجام کار برای فرایندهای از راه دور است. یک Services رابط کاربری را ارائه نمی کند.

برای مثال، یک service ممکن است در background موسیقی اجرا کند در حالیکه کاربر در یک برنامه ی دیگر فعالیت دارد.

3 Content providers (ارائه دهندگان محتوا)

- یک مجموعه مشترک از اطلاعات برنامه را مدیریت می کند.

- می توانید داده ها را در سیستم فایل، پایگاه داده SQlite، بر روی وب و یا هر مکان ذخیره سازی دیگر ذخیره کنید.

- با استفاده از Content provider می توانید، برنامه های دیگر را Query (پرس و جو) و یا حتی اطلاعات را تغییر دهید.

به عنوان مثال Content provider اندروید اطلاعات تماس کاربران را مدیریت می کند.

- Content provider ها نیز برای خواندن و نوشتن اطلاعات خصوصی و غیر قابل به اشتراک گذاشتن مفید می باشند.

به عنوان مثال، برنامه NotPad برای ذخیره نوت ها از content provider استفاده می کند.

Content providers به عنوان یک زیر کلاس از Content Provider اجرا می شود و باید یک محموله استاندارد از API که قادر به پیاده سازی برنامه هستند را مهیا کنند.

4 Broad cast receivers (گیرنده های پخش)

- broadcast receiver یک component است که به سیستم گسترده اطلاعیه ها پاسخ می دهد.

- بسیاری از broadcast ها از سیستم سرچشمه می گیرند برای نمونه یک باتری ضعیف است یا یک عکس ضبط شد.

- برنامه ها می توانند broadcast ها را راه اندازی کنند. اگر چه broadcast receiver رابط کاربری را نمایش نمی دهند امّا آنها ممکن است از طریق نوار وضعیت ایجاد شده به کاربر هشدار دهند.

- broadcast receiver یک دروازه (gateway) به اجزای دیگر است. (منظور از اجزا componentها است). به عنوان مثال ممکن است یک service شروع به انجام برخی کارها کند بر اساس یک رویداد (event).

Activaiting Components

سه تا از چهار نوع Componentها یعنی activities، services و broadcast receiver بوسیله ی یک پیام ناهمزمان بنام intent فعّال می شوند.

- intentها، componentها را در زمان اجرا به یکدیگر متصل می کند، خواه componentها متعلق به یک برنامه باشند یا برنامه دیگر.

- یک intent بوسیله ی یک شی intent ایجاد می شود که یک پیام را به منظور فعال کردن یک component ویژه و یا نوعی خاص از component ارسال کند. intent می تواند هم بصورت خمی و هم بصورت صریح باشد.

- برای activity و services، یک intent دستور انجام عملیات را تعریف می کند و ممکن است URI از داده ها را به کنش ها تخصیص دهد.

برای نمونه یک intent ممکن است یک درخواست را به یک activity برای نشا دادن یک عکس یا باز کردن یک صفحه وب انتقال دهد.

در بعضی موارد شما یک activity را برای دریافت یک نتیجه فعال کنید و در بعضی موارد یک activity یک نتیجه ای را به intent ارسال کند.

- برای broadcast reciever، intent ها به سادگی broadcast را تعریف می کنند.

یک نوع از componentها یعنی content provider با intentها فعال نمی شود. این component از طریق درخواست از Content Resolver فعال می شود.

روشی جداگانه برای فعال کردن هر نوع از componentها وجود دارد:

·        می توانید با شروع یک activity بوسیله گذر کردن از intent با start Activity ( ) یا StartActivity For Result ( )

·        با شروع یک Service بوسیله گذر کردن از intent با تابع StartService ( ) یا شما می توانید به service با تابع bindService ( ) متصل شوید.

·        شما می توانید یک broadcast را با گذر کردن از intent بوسیله ی توابع زیر راه اندازی کنید:

الف) SendOrdered BroadCast ( )

ب) SendBroadCast ( )

ج) SendStickBroadCast ( )

شما می توانید یک query (پرس و جو) را به Content provider بوسیله ی صدا کردن تابع query ( ) در یک ContentResolver انجام دهید.

 

 

The Manifest File

(فایل مانیفست)

قبل از اینکه سیستم اندروید یک app component را بتواند شروع کند ، سیستم باید component ای که بوسیله  خواندن فایل مانیفست وجود دارد را شناسایی کند.فایل xml  همان فایل مانیفست است.

برنامه شما باید همه component های موجود در فایل را اعلان کند که این component  ها root پروژه مورد نظر می باشد.

فایل manifest به غیر از اعلان component ها وظایفی  را انجام می دهد:

-         شناسایی هرگونه دسترسی به برنامه ها با توجه به نیاز کاربر ، مثل دسترسی به اینترنت یا خواندن تماس های کاربر.

-         اعلام حداقل سطح API های مورد نیاز برنامه ، براساس رابط های کاربردی برنامه.

-         اعلام خصوصیات سخت افزار و نرم افزاری مورد نیاز برنامه، مثل دوربین ،خدمات بلوتوث  یا صفحه لمسی

-         کتابخانه API یک برنامه نیاز به لینک شدن دارند مثل کتابخانه نقشه هی گوگل (البته به غیر از API های android framework) وغیره .

-          

Declaring component(اعلان component ها)

وظیفه اصلی فایل manifest  اطلاع به سیستم درمورد component های برنامه است.برای مثال یک فایل manifest می تواند یک activity  را همانند زیر اعلان کند:


- در عنصر <application> اندروید: آیکون  attribute به منابع یک آیکون که نرم افزار شناسایی می کند اشاره می کند.

- در عنصر <activity> اندروید : attribute نام ،نام کامل کلاس را از زیر گروه Activity مشخص می کند.

Attribute برچسب یک رشته را برای استفاده به عنوان برچسب قابل مشاهده کاربر برای activity  مشخص می کند.

شما باید همه ی component های برنامه را به طریق زیر اعلان کنید:

-         عنصر <activity> برای فعالیت ها

-         عنصر <services>  برای خدمات

-         عنصر <receiver> برای broadcasting receiver

-         عنصر <provider>  برای content provider

 

-         Activity ها ، service ها و content provider ها   که شامل منابع (source) شما می باشند قابل اعلان وهمچنین قابل مشاهده در سیستم فایل نمی باشند، در نتیجه هیچ گاه اجرا نمیشوند.

 

با این حال receiver broadcast  هم در فایل manifest قابل اعلان است وهم می تواند به صورت پویا در کد ایجاد شودو بوسیله تابع register Reciever() در سیستم ثبت شود.

Declaring component capabilities(اعلان قابلیت های component ها)

 

همانطور که در بالا بحث شد ،در Activating componentشما میتوانید یک intent  را برای شروع activity ، services، broadcasting receiver  به کار ببرید. شما میتوانید این کار را صریحتا با نام گذاری جز component (با استفاده از نام کلاس component) در intent انجام دهید.

 

با این حال قابلیت اصلی intent  در intent مجازی بیان شده است.

یک intent مجازی به سادگی یک نوع action را برای انجام کار شرح می دهدوبه سیستم اجازه می دهد که component مورد نیاز را پیدا کند تا بتواند action راانجام دهد.

چند component برای اجزای action ها وجود دارد که توسط  intent ها مشخص مس شود که کاربر از کدام یک استفاده کند.

 

یک راه سیستم برای معرفی component ها این است که به intent ها بوسیله مقایسه intent  دریافت شده از سوی فیلتر intent آماده در فایل manifest برنامه ی روی ابزار پاسخ دهد.

 

هنگامیکه شما یک activity  را در  manfest  برنامه اعلان میکنید شما میتوانید به صورت اختیاری فیلترهای  intent که قابلیت  activity  را اعلان کنند را اضافه کنید به طوری که به intent هایی که از برنامه دیگر اعلان می شود پاسخ دهی کنند.

 

-شمامیتوانید یک فیلتر intent  را برای  component  خود اعلان کنید البته بوسیله اضافه کردن عنصر<intent-filter> به عنوان فرزند عنصر اعلان  component .

 

به عنوان مثال اگر شما یک برنامه ایمیل با یک activity برای ارسال یک ایمیل جدید می سازید شما میتوانید یک فیلتر intent برای پاسخ به intent قسمت ارسال(send)  اعلان کنید مثل این :

 


Declaring app requirments(اعلان نیاز های برنامه)

ابزارهای متنوعی بوسیله اندروید بوجود آمده اند ، اما همه آنها برای همان خصوصیات وقابلیت ها مهیا نشده اند.

به منظور جلوگیری برنامه تان از نصب ابزارهایی که فاقد خصوصیات مورد نیاز برای برنامه تان میباشند،مهم است که پروفایلی برای ابزارهایی که برنامه تان بوسیله اعلان ابزار و نرم افزارهای مورد نیاز در فایل manifest وجود دارد ، تعریف کنید.

برای نمونه ،اگر برنامه شما به یک دوربین نیاز دارد واز یک API معرفی شده در android2.1 استفاده می شود،باید این را بعنوان ابزار مورد نیاز در فایل manifest اعلان کنید.



درحال حاضر ابزارهایی هستند که دوربین ندارند ونمیتوانند از ورژن پایین ترازandroid2.1 برنامه شما را از googlePlay نصب کند.

 

App Resources(منابع برنامه)

یک برنامه اندروید از بیشتر از یک کد تشکیل می شود،این کدها به منابعی که جدا از کد منبع هستند نیاز دارند مانند تصاویر ،فایل های صوتی و ... .

برای مثال شما باید انیمیشن ها ،منوها،استایل ها ،رنگ ها ولایه هایی از رابط های کاربری activity را بااستفاده از فایل xml تعریف کنید.

استفاده از منابع برنامه به روز کردن خصوصیات متنوع برنامه تان بدون تغییر کد را آسان می کند.

سازنده  (qualifier) یک رشته کوتاه است که نام دایرکتوری را به منظور تعریف پیکربندی ابزارها برای آن منابعی که باید استفاده شوند،شامل می شود.

به عنوان مثال دیگر، شما باید اغلب لایه های مختلف برای activity های برنامه تان را با توجه به جهت گیری واندازه صفحه نمایش ایجاد کنید.

برای تغییر لایه ها بسته به اندازه جهت گیری، شما باید دو لایه مختلف را تعریف کنید وسازنده (qualifier) را به هرنام دایرکتوری  لایه اختصاص دهید.

  • وهاب صمدی بخارایی

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

کاربران بیان میتوانند بدون نیاز به تأیید، نظرات خود را ارسال کنند.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی