تالار گفتمان nCIS.ir

نسخه‌ی کامل: آموزش تقریبا کامل برنامه نویسی اندروید
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
با عرض سلام حضور تمامی دوستان و علاقه مندان به برنامه نویسی آندروید
خب بالاخره شروع به آموزش کردیم توی سایت خودمون
بریم سر اصل مطلب
میخوام اینجا بطور کاملا خودمونی بیام و آموزش آندروید رو بگم دیگه!!!
سر فصلهایی که میخوام بگم ایناست:
  • معرفی نرم افزارهای مورد استفاده برای برنامه نویسی آندروید(جاوا)
  • طریقه ی نصب دو نرم افزار پرکاربرد (اکلیپس و آندروید استودیو)
  • مباحث کلی در رابطه با آندروید(توضیحات اولیه)
  • شروع اولین پروژه و توضیح جزئیات(پوشه ها و فایلهای موجود)
  • توضیحاتی در رابطه با دالویک و مانیفست
  • توضیح فایل مهم R
  • مخفی کردن نوار عنوان(TileBar)
  • توضیح حالت عمودی یا افقی صفحه
  • کار با ویجت های مختلف نظیر
    • UI widget
    • Buttons
    • Toast (custom Toast)
    • ToggleButton
    • CHeckBox
    • AlertDialog
    • Spinner
    • ListView
    • AutoComplete
    • RatingBar
    • WebView
    • SeekBar
    • DatePicker and TimePicker
    • Analog and Digital
    • ProgressBar
  • توضیحاتی کامل در رابطه با اینتنت ها (اینکه میگم کامل یعنی فکر نکنم چیز خاصی دیگه مونده باشه غیر از کپی کردن کدهای آماده و استفاده از اونها توی برنامه تون)
  • آشنایی با ActivityForResult
  • مسئله ی مهم کار با فرگمنت ها(یه مجموعه ی کامل در این رابطه رو آموزش دیدم و میخوام واستون بذارم انشاالله)
  • کار با منوها اعم از
    • Option Menu
    • Context Menu
    • Popup Menu
  • سرویسهای آندروید
  • Android AlaramManager
  • آموزش کار با Preferences
  • آموزش نحوه ی ارتباط با حافظه ی داخلی و خارجی
  • آموزش پایگاه داده
  • آموزش SQLite Spinner
  • تجزیه یا پویش فایلهای ایکس ام ال با روش SAX
  • تجزیه یا پویش فایلهای ایکس ام ال با روش DOM
  • آموزش XMLPullParser
  • تجزیه فایلهای JSON
  • کار با بخش مولتی مدیا (صدا و تصویر و ضبط و...)
  • پروژه ی TextToSpeech
  • آموزش بخش کامل AndroidTelephony
  • مثل گرفتن حالتهای مختلف مکالمه
  • Simple Caller Talker
  • Phone Call
  • Send SMS
  • Send Email
  • دستگاه های ارتباطی آندروید
  • Bluetooth
  • List Paired Devices
  • WIFI
  • کار با دوربین
  • کار با سنسورها
  • گرافیک در آندروید
  • انیمیشن در آندروید
  • وب سرویس آندروید
دیگه غیر از NDK و NFC فکر نمیکنم چیز دیگه بمونه که بخوام بگم که اگه بخوام اونارو هم بگم دیگه هیچی!!! فکر کنم ترجمه و گذاشتن کل اینا کلی زمان میبره پس میخوام یه نظر سنجی هم همینجا از دوستان انجام بدم که اگه مطلب دیگه ای غیر از اینایی که گفتم هست رو بیان بگن که اگه شد !!! اونم جزو سرفصلهای این دوره بذاریم انشاالله
البته جاوا آموزش نمیدم اولش چون در کل بگم به من چه!!!
برید توی بخش جاوا یکی رو پیدا کنید بیاد آموزش بده دیگه !!!

خلاصه بگم که بعد از ماه رمضون اگه زنده موندم انشاالله در خدمتتون هستم(البته یه کلاس هم دارم که اگه بشه با هم جلو ببرمشون خیلی خوب میشه)
خلاصه که ما در خدمتیم نظر شما رو بشنویم راجع به اون نظر سنجی که گفتما!!!
التماس دعا
یاعلی
بسم الله الرحمن الرحیم
خب دوستان شروع به آموزش آندروید می کنیم ، امیدوارم که بتونم در این رابطه راهنمای خوبی واستون باشم!
میریم سر اصل مطلب !
بذارید راجع به خود آندروید و اینکه از کجا اومده (گوگل) و اینکه چه شرکتهایی ازش پشتیبانی می کنند (مثل google , Samsung , AKM , synaptics ,KDDI , Garmin , Teleca , Ebay , Intel و ...که بهشون کنسرسیوم OHA میگن) بگذریم.
و اینکه ساختار آندروید که از لینوکس نشات گرفته و مزایایی مثل openSource بودن و همه کس میتونن روی هر دستگاهی با هر قابلیتی استفاده کنن و ... هم میگذریم ..
دسته بندی برنامه های آندروید رو میشه به شکل زیر انجام داد(یعنی کل برنامه هایی که میشه نوشت جزء یکی از این دسته بندی هاست)
- سرگرمی(Entertainment)
- ابزاری (TOOLs)
- ارتباطی(Communication)
- بهره وری(Productivity)
- شخصی(Personalization)
- صدا و موزیک(Music and Audio)
- اجتماعی (Social)
- تصویر و رسانه (Media and Video)
- گردشگری و محلی و ...(Travel and Local )
- و ...
دسته بندی هایی که توی سایتهای مختلف اومده بود همینا بود!
خب بریم سراغ مطالب اصلی تا همینجا که جزئیات گفته شد کافیه به نظرم!
ساختار اصلی آندروید
ساختار آندروید یا همون پشته ی نرم افزار آندروید به 5 قسمت تقسیم میشه:
• هسته ی لینوکس (Linux Kernel)
• کتابخانه های محلی (native libraries)
• حالت اجرای آندروید(Android Runtime)
• چارچوب آندروید (Android Framework)
• برنامه ها (Applications)
خب تصویر زیر همین 5 قسمت رو نشون میده با جزئیات :
http://8pic.ir/images/g66vvp61b8hgaumfr1rr.jpg
میریم سراغ توضیح این بخش ها:
1) هسته ی لینوکس(Linux Kernel)
این همون قلب معماری آندرویده که در ریشه ی ساختار آندروید قرار گرفته ، این بخش(Linux Kernel) وظیفه ی پاسخگویی برای درایورهای قطعات(Device Driver) ، مدیریت نیرو (power Management) ، مدیریت حافظه(Memory Management) و مدیریت قطعات و دسترسی به منابع (resource Access) رو بر عهده داره!
2) کتابخانه های محلی (Native Libraries)
بالای بخش هسته ی لینوکس بخش کتابخونه های محلی قرار داره که شامل بخشهایی مثل Webkit , OpenGL , FreeType , SQLite , Media , C runtime library (libc) و ... هست.
کتابخونه ی Webkit یک کتابخونه برای پشتیبانی از مرورگر هست . کتابخونه ی SQLite برای پایگاه داده و FreeType برای پشتیبانی فونت ها و Media برای پخش و ضبط صدا و فرمتهای ویدیوی هست .
3) حالت اجرای آندروید (Android Runtime)
در بخش اجرایی آندروید کتابخونه های هسته و DVM(Dalvik Virtual Machine) قرار گرفته که برای اجرای اپلیکیشن آندروید استفاده میشن (run Android Application)
توضیح در رابطه با DVM : شبیه به JVM هست اما برای دستگاه های موبایل بهینه سازی شده ، که حافظه ی کمتری استفاده میکنه و سرعت عملکرد رو افزایش میده (provides fast performance).
4) چارچوب آندروید(Android Framework)
بالای بخش کتابخونه های اندروید و حالت اجرای آندروید ، بخش چارچوب آندروید قرار گرفته . چارچوب آندروید حاوی API های آندروید هست مثل UI و telephony و resources و locations و Content Providers(data) and package managers . ، این بخش (Android Framework ) یک سری کلاس ها و رابطها (interfaces) برای توسعه دهندگان آندروید آماده کرده (android application development)
5) برنامه ها(Applications)
بالای بخش چارچوب آندروید ، بخش برنامه ها قرار گرفته ، همه ی اپلیکیشن های آندروید مثل home, contact, settings, games, browsers از چارچوب آندروید استفاده میکنن که اون از بخش حالت اجرای آندروید و کتابخونه ها استفاده میکنه و حالت اجرای آندروید و کتابخونه های محلی اون از بخش هسته ی لینوکس استفاده میکنن (به معنی ساده تر اینکه اپلیکیشنها از لایه ی پایین تر استفاده میکنن که همون چارچوب آندروید (Android Framework ) باشه و این لایه از لایه ی پایین تر که همون (Android Runtime) و کتابخونه های محلی (native Libraries`) باشن که باز این لایه ها از لایه ی پایین تر خودشون که لایه ی (Linux Kernel ) باشه در نهایت استفاده میکنن) یعنی همه چیز در آخر به لایه ی هسته ختم میشه و کار اصلی رو اون انجام میده ،
امیدوارم گیج نشده باشید، اینا یه سری مقدمات بود که امیدوارم واسه جلسه اول واستون مفید واقع شده باشه !
"ضمنا دوستان عزیز لطفا توی این تاپیک پست اضافی نذارید و سوالات تون رو توی تاپیک مربوطه بپرسید ، متشکرم"
موفق باشید
تا جلسه ی آینده "یاعلی"
جلسه ی دوم :
بسته تشکیل دهنده ی هسته ی آندروید (Android Core Building Block)
کامپوننت های آندروید قطعه کدهایی هستند که توی چرخه حیات اکتیویتی ، دریافت کننده ها و سرویس، استفاده میشن!
بلوکهای تشکیل دهنده ی هسته یا کامپوننتهای اساسی آندروید ، اکتیویتی ها ، ویو ها (Views)، اینتنت ها(Intents) ، سرویسها و فراهم کننده های محتوا(Content Providers)،فرگمنتها (Fragments) و فایل مانیفست آندروید(Android Manifest.xml) هستند.
اکتیویتی(Activity)
یک اکتیویتی یک کلاسه که یک صفحه رو نمایش میده ، شبیه به یک فریم در AWT جاوا
نمایه ها (View)  (اصلا دوس ندارم از معادل های فارسی استفاده کنم!!!)
یک ویو یک عنصر رابط کاربری (UI element) هست مثل ، Button ، TextView ، EditText و .. .هست.خلاصه هر چیزی که شما میتونید توی صفحه ببینید رو یک ویو میگن!(هرچی جلوتر بریم با این مباحث بیشتر آشنا میشیم!)
اینتنت(Intent)
یک اینتنت برای درخواست کامپوننت ها استفاده میشه، و استفاده های متعارفش اینان:
• شروع یه سرویس
• اجرای یه اکتیویتی
• نمایش یه صفحه وب
• نمایش یک لیست از مخاطبین
• اعلام یه پیام (Broadcast a message)
• پاسخگویی به یه تماس تلفنی یا ایجاد ارتباط (تماس)
• و ....
بعنوان مثال این یک روش تعریف و استفاده از یک اینتنت رو میتونید پایین ببینید:

Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(http://forum.ncis.ir));
startActivity(intent);
به جزئیاتش فعلا کاری نداشته باشید دوستان(مثلا اینکه setData ش چکار میکنه و پارامترهایی که دریافت میکنه چی هست و چطوری اجرا میشه و ...
همه رو بعدا مفصل توضیح میدم (خودم کلی مطلب خوندم تا بالاخره فهمیدم چه خبره توی setData  و setAction  و setFlag هاش و ... )همه رو یاد میدم پس عجله نکنید و صبور باشید تا به جاهای خوبش برسیم، اینو فعلا بعنوان تعریف اینتنت داشته باشید تا بعد!!!
سرویس(Service)
سرویس یک پردازش پس زمینه ست که میتونه برای طولانی مدت اجرا بشه (background Process)
دو نمونه سرویس داریم، محلی و راه دور(local and remote)
سرویس های محلی از داخل اپلیکیشن (همون برنامه تون) قابل دسترسی هست با در نظر گرفتن اینکه سرویس راه دور از اپلیکیشن های در حال اجرای دستگاه های مشابه قابل دسترسی هست ( معنی سر راست ترش اینکه سرویس های محلی توی خود گوشی در حال اجران ولی سرویسهای راه دور از سمت سرور با استفاده از اپلیکیشن ما قابل دسترسی هستند، همین)
فراهم کننده ی محتوا(Content Provider)
این فراهم کننده ی محتوا توسط داده های به اشتراک گذاشته شده توسط اپلیکیشن ها استفاده میشن(share data between the applications)
راجع به اینم باید بگم که مباحث SharedPreferences و ... رو هم کاملا توضیح خواهم داد انشاالله در آینده ای نه چندان دور.
فایل مانیفست آندروید(AndroidManifest.xml)
این فایل حاوی اطلاعاتی در رابطه با اکتیویتی ها ، فراهم کننده های محتوا ، مجوزهای دسترسی و ... هست، این فایل شبیه به فایل web.xml هست توی JAVA EE
به بیان ساده تر از این که بخوایم بگیم اینه که کل اطلاعات برنامه تون از این فایل خونده میشه ، که شامل خیلی از اطلاعات هست مثل ورژن برنامه ، مشخصات نویسنده یا همون Developer ، مجوزا که اجازه میگیرن از کاربر برای دسترسی به همین منابعی که میخواید بهشون دسترسی داشته باشید مثل کار با اینترنت و کار با حافظه خارجی و داخلی و استفاده از wifi و خوندن مخاطبین و خلاصه هر چیزی که فکرش رو بکنید برای مثال بهتر از این مجوزها اگه موقع نصب برنامه توی گوشیتون یا تبلت یا ... همون موقع نصب یه سری مجوز ازتون میخواد مثل دسترسی کامل به اینترنت و خواندن و نوشتن در حافظه خارجی و ... که شما همینجوری با خیال راحت (اول میزنید بعدی و بعد میزنید نصب) ، این همون مجوز ها یا permission هاست که توی فایل مانیفست تعریف شده اند، خلاصه خیلی کارها میشه با این مانیفست انجام داد ، که یه بنده خدایی میگفت اگه به ازای هر چیزی که از مانیفست اشتباه فهمیدم یه 5 سنتی کنار گذاشته بودم الان میلیونر بودم، خلاصه این فایل رو دسته کم نگیرید دوستان.
ماشین مجازی آندروید(AVD)
این بخش یه دستگاه شبیه ساز آندروید رو روی سیستم شما راه اندازی میکنه بدون اینکه نیازی به گوشی آندرویدی داشته باشید، کل امکانات یه گوشی رو همراه خودش داره، منتهی مزیت اصلیش اینه که میتونید برنامه تون رو روی چند تا گوشی (چند نمونه ی مختلف با سایزهای مختلف تست کنید که چطور کار میکنه و لایه ها به چه شکل هستند و ...) تست کنید ، که خودش خیلی خوبه!!!
امیدوارم از این جلسه هم استفاده کرده باشید!
تا جلسه ی آینده "یاعلی"
جلسه سوم
سلام
بسیار خب دوستان کم کم داریم به جاهای اصل کاری می رسیم که خیلیا مشکل دارن توش!!! اونم نصب اکلیپس و استفاده از اون هست !
خب پس خوب بخونید این مطالب رو!
آندروید به وسیله ی زبانهای برنامه نویسی ای مثل java, c++ , c  نوشته میشه(یعنی میتونید برنامه هاتون رو بوسیله ی یکی از این زبانها بنویسید ، ما توی این سایت و این بخش از جاوا فقط استفاده میکنیم چون خود شرکت گوگل هم جاوا رو توصیه میکنه )
تمام مثالهای این بخش (آموزش آندروید سایت ncis ) با استفاده از نرم افزار اکلیپس و زبان جاوا نوشته خواهد شد (صرفا جهت شفاف سازی گفتم).
(البته کاربران دوست داشتنی آندروید استودیو نگران نباشن ، چون اینجا آموزش نحوه ی راه اندازی این نرم افزار رو هم انجام میدیم)
اول اکلیپس:
برای نصب یک محیط کار (IDE) برای آندروید (در اینجا اکلیپس) 2 روش وجود داره :
- بوسیله ی ADTBundle
- بوسیله ی تنظیمات دستی اکلپس
روش اول اینه که یکی از 2 لینک زیر رو کلیک کنید بسته به نوع ویندوز تون ،
لینک دانلود AdtBundle 64Bit
http://go.puresoftware.org/android-adt-bundle-win64
لینک دانلود ADT Bundle 32bit
http://go.puresoftware.org/android-adt-bundle-win32
قبل از استفاده این رو هم بگم که نیاز به فایل اجرایی جاوا هم هست که باید توی Environment ویندوز تون تعریف کنیدش، به این شکل:
اول از این لینک دانلودش کنید و بعد از نصب مسیر نصب ش رو مثل شکل زیر معرفی کنید:
البته اینا برای ویندوز 7 هست:
نسخه ی 32 بیتی
http://dl2.soft98.ir/soft/j-k-l/JDK.7.Update.80.x86.exe
نسخه ی 64 بیتی
http://dl2.soft98.ir/soft/j-k-l/JDK.7.Update.80.x64.exe
خب بعد از دانلود بر طبق مراحل عکس زیر عمل کنید:
اول روی myComputer کلیک راست کنید و  propertiesبزنید و بعد مراحل روانجام بدید:

[attachment=203]

خب برای این روش اول باید یه نسخه از اکلیپس رو دانلود کنید:
https://eclipse.org/downloads/
بسته به نوع ویندوزتون یه نسخه رو دانلود کنید (من خودم همون اولین نسخه رو دانلود کردم Eclipse IDE for Java Developers  )
بعد از دانلود اکلیپس باید ADT رو دانلود کنید :
اونم میتونید از این لینک دانلود کنید:
http://vejdani7.persiangig.com/Android/A...nload?4d5e
خب اینم از این
بعدش باید SDK رو دانلود کنید(از لینک زیر میتونید یه نسخه رو دانلود کنید)
http://androidcode.ir/page/android-SDK-JDK-update
خب جا داره از دوستانی که به دلیل تحریم ایران دست به این اقدام زدن و فایلهای مورد نیاز برنامه نویس هارو توی سایتهاشون قرار دادند تشکر کنیم
راستی سایت اصلی برنامه نویس های آندروید developer.android.com هست که میتونید اگه فیل- تر شکن دارید ازش استفاده کنید و آخرین نسخه ی ADTbundle رو از اونجا دانلود کنید (همچنین آندروید استودیو و...)
بعد از دانلود این فایلها نوبت به معرفی اونها به اکلیپس هست
اول اکلیپس رو اجرا کنید بعد از منوی help گزینه ی install new software رو بزنید و از پنجره ای که باز میشه روی دکمه ی Add  کلیک کنید و از پنجره ی باز شده روی دکمه ی Archive کلیک کنید و بعد از اون پنجره فایل ADT ای که دانلود کردید رو بهش معرفی کنید(یادتون باشه که فایل رو از حالت zip خارج نکنید ، یعنی همون فایل زیپ شده رو باید بهش معرفی کنید) بعد از اون یه اسم توی کادر بالای location که همون Name باشه وارد کنید (اسم دلخواه مثل Android) ...
حالا روی OK کلیک کنید تا به پنجره ی قبل برگردید، توی این پنجره توی کادر وسط تیک همه ی گزینه ها رو فعال کنید و روی Next کلیک کنید و لایسنس ها رو هم Accept بزنید و تمام ، منتظر بشید تا اکلیپس راه اندازی مجدد بشه

[attachment=204]

خب اینم از این ،
بعدش نوبت به  معرفی SDK یی که دانلود کردیم میرسه ،
توی اکلیپس از منوی Window روی preferences کلیک کنید، و از بخش Android  روی Browse کلیک کنید و SDK رو بهش معرفی کنید، البته SDK رو از حالت فشرده خارج کنید قبلش (بر عکس ADT که حالت فشرده ش رو معرفی میکردیم به اکلیپس)

[attachment=205]

البته ممکنه صفحه ی شما شبیه مال من نباشه چون من SDK م رو آپدیت کردم (قبلنا D:) ، خلاصه اگه هیچ نسخه ای به این صفحه ی شما اضافه نشد یه جای کار میلنگه!!!
خب تموم شد ، اینم از راه اندازی اکلیپس هم بصورت دستی و هم بصورت کلی(AdtBundle)...
راه اندازی آندروید استودیو باشه واسه جلسه بعد
موفق باشید
تا جلسه ی آینده "یاعلی"
جلسه چهارم
سلام
بسیار خب دوستان جلسه ی چهارم آموزش آندروید رو شروع میکنیم با این موضوع که نصب نرم افزار آندروید استودیو رو توی این جلسه آموزش میدیم!
خب بریم سراغ دانلود اولین بخش
http://p30download.com/fa/entry/45668/
این لینک دانلود نرم افزار اصلی هست (یه خورده ترافیک بسوزونید D)
به نظرم نسخه ی  با SDK ش رو دانلود کنید (معمولا بهتره، من خودم همین کار رو کردم)
البته لازمه که یادآوری کنم که برای نصب این نرم افزار نیاز به داشتن JDK 7 به بالا هستید (یه چیزی حدود 180 مگ حجمشه که باید دانلود کنید)
خب بعد از دانلود  توی صفحه ی welcome  که باز میشه یه لینک پایین صفحه(Check ) هست که میتونید از طریق اون مطمئن بشید که برنامه ی Android Studio تون آپدیته !
توی همون صفحه  یه بخش وجود داره به نام configure که از اونجا و بخش SDK ش باید SDK  ای که دانلود کردید رو به نرم افزار معرفی کنید ، (تذکر : اینجا نیازی به نصب ADT مثل نرم افزار eclipse نیست)
به همین سادگی و به همین خوشمزگی!!!
خب اینم آموزش نرم افزار Android Studio  (البته به زبان اصلی)
دوستانی که تمایل دارن با این نرم افزار کار کنن و تمرینات روانجام بدن میتونن از این لینک برای آموزش استفاده کنند:
http://s6.p30download.com/users/606/tuto...ad.com.rar
نصب نرم افزار و راه اندازیش تمومه!
میریم سراغ ساخت اولین پروژه (همونطور که گفتم ما از نرم افزار Eclipse استفاده میکنیم نه Android Studio)
خب برای ساخت اولین پروژه (بعد از باز کردن نرم افزار Eclipse و اطمینان از عملیات انجام شده برای راه اندازی آندروید توی اون) از منوی File روی New  و بعد از اون روی گزینه ی Android Application Project کلیک کنید (اگه بخوام از همه ی مراحل عکس بذارم کلی زمانگیره)، اگه این گزینه رو پیدا نکردید روی آخرین گزینه توی همون بخش New که گزینه ی Other هست کلیک کنید و از اون بخش این گزینه (Android Application Project ) رو پیدا کنید  و روش کلیک کنید!
خب توی این مرحله یه پنجره ی جدید باز میشه که باید نام برنامه تون ، نام پکیج و نام پروژه تون توی پکیج رو مشخص کنید( میتونید چند تا پروژه توی یک پکیج داشته باشید )

[attachment=207]

خب در اینجا ما همونطور که توی تصویر هم می بینید Theme برنامه مون رو حالت none انتخاب کردیم ، خیلی از دوستان با این قضیه مشکل پیدا میکنن که خطاهای عجیب و غریب به خاطر همین قضیه واسشون پیش میاد ، سعی کنید بعد از اینکه توی LOG مشاهده کردید که خطای Theme دارید انجام این عمل جزو اولین گزینه هاتون باشه که بیاید و این بخش رو none انتخاب کنید
خب روی next کلیک کنید تا به صفحه ی بعد برید تا یکی دو تاگزینه ی موجود رو بهتون توضیح بدم!
اولین چیزی که نظر کاربر رو جلب میکنه 2 تا تیک هست که اولیش Create custom launcher Icon و (که برای تولید آیکن توسط خود برنامه ی اکلیپس برای برنامه هست ) و دومیش Create Activity هست(که برای تولید اکتیویتی اولیه برای اپلیکیشن ما استفاده میشه )هست... که اگر مایل باشید که این کارها توسط خود اکلیپس انجام نشه می تونید تیک شون رو بردارید و خودتون بصورت دستی این کار رو انجام بدید!
خب پایین این تیک ها مسیر پروژه تون رو مشخص میکنید و روی دکمه ی Next کلیک کنید  تا به بخش معرفی آیکن برنامه هدایت بشید، (خب گفتم که چه بخشیه دیگه) هرجور دستکاری ای که دوست دارید اینجا انجام بدید تا حساب کار اکلیپس دستش بیاد(خخخ)
خب بسه روی دکمه ی Next کلیک کنید تا به پنجره ی انتخاب نوع اکتیویتی هدایت بشید ،
اولین گزینه Blank Activity هست که (فعلا کار ما با همینه تا بعد) که یک اکتیویتی خالی رو به ما تحویل میده که یه صفحه ی ساده است
دومین گزینه FullScreen Activity  هست که یک اکتویتی تمام صفحه برامون درست میکنه(فرقش با blank Activity اینه که اون اکتویتی یه title Bar داره که اسم نرم افزار رو بالای هر صفحه یی نشون میده ، اما این نشون نمیده)
سومین گزینه هم Master/Detail Flow هست که توی بحث کاملا جذاب Fragment ها استفاده میشه
خب همونطور که تا حالا متوجه شدید بهترین گزینه برای ما همون گزینه ی اول هست (روش کلیک کنید و Next بزنید )
خب توی مرحله ی بعد نام اکتیویتی اصلی برنامه تون که همون اکتیویتی اجرا کننده ی اپلیکیشن تون هست کلیک کنید، (یعنی وقتی برنامه رو اجرا میکنید اولین صفحه ای که می بینید این صفحه ست که اسمش رو اینجا تعیین می کنید)
خب تمومه (روی Finish کلیک کنید).
حالا شما اولین پروژه ی آندروید تون رو ساختید!
وقت اجراست!
برای اجرا اول باید یه ماشین مجازی بسازید ( یا میتونید گوشیتون رو اگه آندرویدی هست به کامپیوتر تون متصل کنید و برنامه رو با استفاده از کلیک راست کردن روی اسم پروژه از پنجره ی سمت چپ صفحه(package explorer) و انتخاب گزینه ی run as و سپس گزینه ی Android Application و از پنجره ی بعدی باز شده (اسم گوشی تون رو انتخاب کنید و Ok بزنید) تا برنامه روی گوشی شما نصب بشه و اجرا بشه!
حالا اگه گوشی ندارید و میخواید برنامه رو اجرا کنید ، باید اول یه ماشین مجازی بسازید ، برای این کار توی نوار بالای صفحه بگردید و گزینه ی Android Virtual Device Manager رو (آیکنی شبیه به گوشی داره) پیدا کنید و روش کلیک کنید، یه پنجره باز میشه به اسم AVD (حالا یه خورده پسوند و پیشوند داره که مهم نیست) خب از این پنجره روی دکمه ی create کلیک کنید
بعد از اون یه پنجره دیگه باز میشه که

[attachment=208]

خب بعد از انجام این عملیات و پر کردن این پنجره ، کافیه روی Ok کلیک کنید و از همون پنجره ی قبل این شبیه ساز  رو START کنید و چند دقیقه ای معطلی داره و تمام(شما صاحب یه گوشی آندرویدی شدید !!!)
بعد از اینکه کاملا دستگاه لود شد و صفحه ی اولیه ی گوشی رو مشاهده کردید، برنامه رو به همون طریقی که قبلا (برای کسایی که گوشی دارند گفتم) اجرا کنید (همون قضیه ی کلیک راست و اینا دیگه!....)
خب برنامه تون اجرا شد! شما اولین پروژه تون رو توی این جلسه ساختید و اجرا کردید، به همین سادگی !
موفق باشید ،

تا جلسه ی آینده "یاعلی"
جلسه ی پنجم
سلام
بسیار خب دوستان به پنجمین جلسه ی آموزش آندروید خوش اومدید!!
توی این جلسه به توضیح یه سری پوشه هایی که توی پروژه ی جلسه ی قبل ایجاد کردیم می پردازیم!
اپلیکیشن آندروید شامل یه سری کامپوننت ها مثل سورس کد جاوا ، منابع رشته ای ، تصاویر ، فایل مانیفست ، فایل apk و... ست، خب بیاید ببینیم ساختار پروژه ای که ایجاد کردیم چطوریه!
[attachment=220]
خب دوستان همونطور که توی تصویر نشون داده شده یه سری پوشه و فایل رو معرفی کرده که اینجا بهتون مختصر توضیحی در این رابطه میدیم!!!
سورس کدهای جاوا
بذارید به فایل جاوای تولید شده توسط IDE (که همون Eclipse در اینجاست) بندازیم (فایل MainActivity.java )


package com.example.helloandroid;  
import android.os.Bundle;  
import android.app.Activity;  
import android.view.Menu;  
import android.widget.TextView;  
public class MainActivity extends Activity {//(1)  
   @Override  
   protected void onCreate(Bundle savedInstanceState) {//(2)  
       super.onCreate(savedInstanceState);  
       setContentView(R.layout.activity_main);//(3)  
   }  
   @Override  
   public boolean onCreateOptionsMenu(Menu menu) {//(4)  
       // Inflate the menu; this adds items to the action bar if it is present.  
       getMenuInflater().inflate(R.menu.activity_main, menu);  
       return true;  
   }  
}  



Activity (1): این یک کلاس جاوا است که پنجره ی پیش فرض روی صفحه است ، جایی که ما میتوانیم کامپوننتهای مختلفی نظیر Buttons ، TextView  و EditText و Spinner و ... رو داخل اون قرار بدیم ، که همونطور که قبلا هم گفتیم این فایل شبیه به AWT در جاوا است!
(به طور خودمونی تر همون پنجره ای که روی صفحه ی گوشی به نمایش در میاد همین اکتیویتی هست که کنترلهایی مثل دکمه و تکست باکس و ... روش قرار گرفتن تا با کاربر تعامل بتونیم برقرار کنیم ، همین)
یکی از خاصیت های مهمی که این اکتیویتی داره رویدادهایی هست که از زمانی که تولید میشه تا زمانی که نابود میشه انجام میگیره روش که در آندروید بهشون onCreate , onStop , onPause , onDestroy ,… میگن!(بعدا همه رو به موقع بهتون معرفی میکنم)
(2) onCreateMethod : این متد وقتی اجرا میشه که کلاس اکتیویتی ما برای اولین بار ساخته میشه!
(3) setContentView(R.layout.activity_main); : خب این دستور اطلاعات تنظیم شده روی لایه ای که توی بخش منابع ایجاد کردیم رو به این اکتیویتی متصل میکنه ، ( بطور خلاصه تر و مفهمومی تر) این دستور شکل ظاهر اکتیویتی مارو مشخص میکنه که البته قبلا خودمون توی بخش منابع و Layout اون رو ایجاد کردیم!(بازم ساده تر ) ، اول یه لایه ایجاد میکنیم که لایه همون شکل ظاهری همین صفحه مون (اکتیویتی) هست و با استفاده از این دستور اون رو به اکتیویتی مون متصل میکنیم و به اکتیویتی می فهمونیم که وقتی خواستی اجرا بشی این لایه ای که اینجا بهت معرفی کردیم رو باید نشون بدی !
خب این فایل xml ای که با همین دستور به اکتیویتی متصل کردیم کدهای زیر رو داخل خودش داره!

<RelativeLayout xmlns:androclass="http://schemas.android.com/apk/res/android"  
   xmlns:tools="http://schemas.android.com/tools"  
   android:layout_width="match_parent"  
   android:layout_height="match_parent"  
   tools:context=".MainActivity" >  
   <TextView  
       android:layout_width="wrap_content"  
       android:layout_height="wrap_content"  
       android:layout_centerHorizontal="true"  
       android:layout_centerVertical="true"  
       android:text="@string/hello_world" />  
</RelativeLayout>



خب همونطور که می بینید یک کنترل TextView فقط روی این لایه قرار گرفته که بصورت اتوماتیک ایجاد شده، اما پیامی که توی این کنترل نمایش داده میشه از فایل منابع که توی پوشه ی Values و فایل string.xml هست خونده میشه  که توی خصوصیت text این کنترل به اون اشاره شده ، شما میتونید این دستور رو (همون پیام نمایش داده شده رو) هم بطور مستقیم اینجا وارد کنید و هم میتونید از فایل string.xml تغییرش بدید
فایل string.xml اول کار این شکلیه

<?xml version="1.0" encoding="utf-8"?>  
<resources>  
   <string name="app_name">helloandroid</string>  
   <string name="hello_world">Hello world!</string>  
   <string name="menu_settings">Settings</string>  
</resources>  



مقداری که این کنترل TextView ی ما گرفته توی این فایل با نام hello_world قرار گرفته که مقدارش Hello world! هست ، یعنی ما توی فایل xml مون اگه بخوایم به این فایل دسترسی داشته باشیم با استفاده از خصوصیت name اونها به مقدارشون(بین علامتهای <>) دسترسی پیدا میکنیم!(امیدوارم متوجه شده باشید)

توضیح فایل R
این فایل یه فایلی هست که بصورت اتوماتیک تولید میشه و مقادیرش به روز میشه.... این فایل به تمامی منابع (Resources) که شما توی پوشه های مختلف معرفی میکنید و ... دسترسی داره ، این فایل به تمامی کنترلهایی که شما توی فایلهایی مثل activity_main.xml بهشون Id میدید دسترسی داره و اونها رو کنترل میکنه ، بذارید خیالتون رو راحت کنم، این فایل رابط بین منابع و سورس های جاوا تون هست ، یعنی شما هرچی رو که توی فایلهای منابع تون بهش شناسه id  یا Name یا... بدید توی این فایل معرفی میشه و بعد میتونید توی فایل java تون بهش دسترسی بدید (همین)
مثلا همون دستور setContentView رو که قبلا توضیح دادیم رو ببینید دوباره، این متد از فایل R به بخش Layout رفته و از اونجا فایل activity_main.xml رو برای این اکتیویتی صدا زده (R.layout.activity_main) . امیدوارم متوجه شده باشید
خب اینم دستوراتی که توی فایل R نوشته شده فعلا

/* AUTO-GENERATED FILE.  DO NOT MODIFY. 
* 
* This class was automatically generated by the 
* aapt tool from the resource data it found.  It 
* should not be modified by hand. 
*/  
package com.example.helloandroid;  
public final class R {  
   public static final class attr {  
   }  
   public static final class drawable {  
       public static final int ic_launcher=0x7f020000;  
   }  
   public static final class id {  
       public static final int menu_settings=0x7f070000;  
   }  
   public static final class layout {  
       public static final int activity_main=0x7f030000;  
   }  
   public static final class menu {  
       public static final int activity_main=0x7f060000;  
   }  
   public static final class string {  
       public static final int app_name=0x7f040000;  
       public static final int hello_world=0x7f040001;  
       public static final int menu_settings=0x7f040002;  
   }  
   public static final class style {  
       /**  
       Base application theme, dependent on API level. This theme is replaced 
       by AppBaseTheme from res/values-vXX/styles.xml on newer devices. 
           Theme customizations available in newer API levels can go in 
           res/values-vXX/styles.xml, while customizations related to 
           backward-compatibility can go here. 
        Base application theme for API 11+. This theme completely replaces 
       AppBaseTheme from res/values/styles.xml on API 11+ devices. 
 API 11 theme customizations can go here.  
       Base application theme for API 14+. This theme completely replaces 
       AppBaseTheme from BOTH res/values/styles.xml and 
       res/values-v11/styles.xml on API 14+ devices. 
API 14 theme customizations can go here.  
        */  
       public static final int AppBaseTheme=0x7f050000;  
       /**  Application theme.  
All customizations that are NOT specific to a particular API-level can go here.  
        */  
       public static final int AppTheme=0x7f050001;  
   }  
}  


فایل APK
این فایل بطور اتوماتیک توسط فریمورک ساخته میشه (هر وقت که شما Run بزنید توی برنامه این فایل آپدیت میشه ) ، خب میتونید به راحتی این فایل رو از توی پوشه ی bin کپی کنید و توی گوشی تون بریزید و ازش استفاده کنید!(همین)

منابع (resources)
این بخش شامل تمامی فایلهایی هست که شما توی برنامه تون بهش نیاز دارید ، مثل تصاویر ، آیکن برنامه ، فایلهای صوتی و تصویری و فایلهایی مثل activity_main.xml , strings, style , … که همه شون توی برنامه برای دسته بندی اینکه همه چیز درهم برهم نباشه اینجوری اومدن دسته بندیشون کردن! و با استفاده از فایل R اونا رو به فایل جاوا متصل کردن (اینم توضیح دوباره ،هههه ) (خیلی هم خوب).

فایل مانیفست (AndroidManifest.xml)
قبلا یه توضیح مختصر راجع به این فایل بهتون دادم ، بازم یه توضیح کوچولو ی دیگه میدم و تمام(نه اینکه فکر کنید اونقده از فایل مانیفست تعریف کردم به همینا بسنده میشه و تمام ، سخت در اشتباهید چون حالا حالاها با این فایل کار داریم)
این فایل شامل کامپوننتهای مثل activities, services , content providers , …  هست که همونطور که از اسم همینا پیداست برای تمامی این بخش ها باید با این فایل کار کنیم دوستان
خب اینم از این جلسه !
امیدوارم زیاد خسته نشده باشید
تا جلسه ی آینده "یاعلی"
موفق باشید
جلسه ی ششم
سلام
بسیار خب دوستان جلسه ی ششم آموزش آندروید مون رو شروع میکنیم! قبل از شروع باید بگم که اگه هنوز اولین پروژه تون رو همونطور که بهتون یاد دادم شروع نکردید بهتره شروع به یادگیری هرچه سریعتر کنید، هرچقدر که زمان رو از دست بدید به ضرر خودتونه ، از من گفتن!!
یه خورده توضیحات بدیم و بریم سراغ آموزش فایل مانیفست!
میخوام کلا بگم که DVM(Dalvik Virtual Machine) چیه و چکار میکنه !
خب همونطور که میدونید ،   JVM  مدرن ، ابزاری برای بالابردن کارایی و مدیریت حافظه ی عالی در جاوا هست ، اما این کار باید برای دستگاه های کوچک تر با توان کمتر نیز انجام بگیره که این کار رو DVM  انجام میده!
DVM یک ماشین مجازی آندروید هست که برای دستگاه های موبایل طراحی شده ، این ماشین مجازی ، برای مدیریت حافظه و استفاده ی کمتر و بهینه از باتری(عمر باتری) و کارایی بالا بهینه سازی شده .
دالویک اسم یه شهره توی ایسلند ، که Dalvik vm بوسیله ی Dan Bornstein نوشته شده(محض اطلاعات عمومی)
خب
کامپایلر dex که توی این ماشین مجازی قرار داده شده ، برای تبدیل مجموعه ی کلاسهای به فایل .dex استفاده میشه که این فایل روی ماشین مجازی اجرا میشه، همونطور که گفتم چند تا کلاس رو توی یک فایل .dex تبدیل میکنه!
بیاید با نحوه ی عملکرد این ماشین مجازی و کامپایلرش از طریق تصویر آشنا بشیم
[attachment=225]
خب ابزار Javac   سورس کدهای جاوا رو کامپایل میکنه  ،
ابزار dex تمامی فایلهای کلاس اپلیکیشن شما رو میگیره و یک فایل تولید میکنه با پسوند .dex  ، که این یک ابزار مخصوص پلتفرم هست(platform-specific)
بخش Android Assets Packaging Tool(aapt) این پروسه رو مدیریت میکنه! که این بخش همون بخشه که فایل R رو آپدیت میکنه بعد از اینکه هر بار شما فایل تون رو ذخیره میکنید یه بار فایل R آپدیت میشه ! پس این قضیه رو خوب یادتون باشه ها که باید بعد از هرگونه تغییرات Ctrl + s رو بزنید تا تغییرات تون توی فایل R اعمال بشه و بتونید به اون دسترسی داشته باشید!
خب اینم یه توضیح مختصر در رابطه با DVM
بریم سراغ بحث اصلی خودمون که همون فایل مانیفست آندروید هست(AndroidManifest.xml)
خب همونطور که قبلا هم گفتیم ، این فایل حاوی اطلاعات بسته ی نرم افزار شماست ، که شامل کامپوننتهای اپلیکیشن تون مثل اکتیویتی ها ، سرویس ها ، دریافت کننده های براد کست ، و فراهم کننده های محتوا و ... است.
این فایل کارایی های دیگه ای هم داره مثل :
- این فایل برای پاسخگویی به بخشهای محافظتی سیستم که برای دسترسی به بخشهای مختلف گوشی استفاده میشود کاربرد دارد(همون Permission ها)
- این فایل همچنین برای تعریف api های آندروید که اپلیکیشن شما استفاده میکنند بکار میرود
- همچنین لیستی از کلاسهای تجهیزات و لوازم را درخود دارد، کلاسهای تجهیزات پروفایل و برخی اطلاعات دیگر را آماده میکند، این اطلاعات قبل از اینکه اپلیکیشن شما ارائه بشه حذف میشن!
این یک فایل ضروریه که در قسمت دایرکتوری ریشه  اپلیکیشن شما قرار میگیره که در تمامی اپلیکیشن های آندروید مورد نیازه.
یک سری دستورات معمولی این فایل رو اینجا نوشتم:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
package="com.javatpoint.hello"  
android:versionCode="1"  
android:versionName="1.0" >  
<uses-sdk  
android:minSdkVersion="8"  
android:targetSdkVersion="15" />  
<application  
android:icon="@drawable/ic_launcher"  
android:label="@string/app_name"  
android:theme="@style/AppTheme" >  
<activity  
android:name=".MainActivity"  
android:label="@string/title_activity_main" >  
<intent-filter>  
<action android:name="android.intent.action.MAIN" />  
<category android:name="android.intent.category.LAUNCHER" />  
</intent-filter>  
</activity>  
</application>  
</manifest> 

این دستورات شامل المان هایی هست که در زیر تک تک رو توضیح میدیم:
<Manifest>
این تگ ، عنصر ریشه ای فایل AndroidManifest هست. این تگ خصوصیات package مون رو توضیح میده که همون نام پکیجی هست که کلاسهای اکتیویتی توی اون قرار گرفته ان.
<Application>
این یک زیر عنصر تگ Manifest هست ، که شامل توضیحات namespace هست ، این عنصر حاوی چندین زیر عنصر هست که هرکدوم اجزاء مختلف اکتیویتی رو توضیح میدن و..
خصوصیات مشترکی که این عنصر استفاده کرده ، آیکن و برچسب و تم و .. هست (icon,label,theme,…)
Android:icon
ارائه دهنده ی آیکن برای تمامی اجزاء اپلیکیشن آندروید مون هست.
Android:lable
بصورت پیش فرض برای نگهداری و مشخص کردن تیتر اپلیکیشن مون استفاده میشه
Android:theme
تم اصلی برنامه مون رو مشخص میکنه که برای تمام اکتیویتی هامون که توی این پکیج قرار دارن استفاده میشه

<activity>
این یک زیر تگ <application> هست که ارائه ی یک اکتیویتی ای که توی برنامه مون استفاده میشه رو انجام میده ، هر اکتیویتی ای که توی برنامه اضافه میشه باید توی این فایل و این قسمت تعریف بشه
Android:label :
برچسب اکتیویتی مون رو مشخص میکنه
Android:name
یک نام برای کلاس اکتیویتی مون ارائه میده که حتما باید استفاده بشه
<intent-filter>
این یک خصوصیت هست که نوع اکتیویتی مون رو مشخص میکنه که آیا سرویس هست ، یا دریافت کننده ی برادکست که میتونه پاسخ بده یا...
<action>
یک action رو به intent-filter تخصیص میده ، هر intent-filter باید حداقل یک اکشن داشته باشه
<category>
یک دسته بندی برای اکتیویتی مون مشخص میکنه
دوستان نگران این تعاریف نباشید، موقع تعریف اینتنت ها تک تک این ها و حتی بیشتر رو هم توضیح خواهم داد انشاالله
پس در حد یک تعریف ساده فعلا داشته باشیدشون!!!

تا جلسه ی آینده "یاعلی"

ABZiko

ببخشید اسپم می دم، ولی شما که دارین زحمت رو می کشید، اگر به صورت ویدئو بود، هم درکش بهتر بود، هم اینکه نیاز نبود این همه خط رو بخونیم ...
به هر حال ممنون از اینککه زحمت می کشید ...
آموزش تصویری هم قطعاً میگذاریم ولی آموزش متنی برای کسانی که توانایی دانلود آموزش تصویری ندارن یا اگه آموزش تصویری بصورت پکیج و برای فروش باشه، پرداخت هزینه براشون سخت میشه، میتونه خیلی مفید باشه. ضمناً آموزش تصویری مثل متن توی موتورهای جستجو ایندکس نمیشه.