برنامه نویسی اندروید مقدماتی


اندروید (از یونانی: به معنای مَرد، انسان، شبه آدم یا رُبات (آدم آهنی))، (به انگلیسی: Android) نام سیستم‌عاملی است که گوگل برای اسمارت فون‌ها و تبلت‌ها و هم اکنون برای تلویزیون‌ها عرضه می‌نماید و با همکاری ده‌ها شرکت بر روی دستگاه‌های مبتنی بر اندروید قرار می‌دهد. اندروید بر پایهٔ هسته لینوکس ساخته شده‌است. سیستم عامل اندروید توانسته محبوبیت زیادی جلب کند که به طوری که بیشتر مردم در سراسر جهان از این سیستم عامل استفاده می کنند.

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

پیش‌نمایش:

:: سرفصل ها ::

  • آشنایی با فضای برنامه‌نویسی اندروید
    • تاریخچه اندروید
    • قابلیت‌ها
    • کاربردها
    • امنیت
    • ویژگی‌های توسعه نرم‌افزار در اندروید
    • توسعه بازی در اندروید
    • روند توسعه اندروید و درصد استفاده از آن
    • نصب و راه‌اندازی محیط توسعه
    • رفع اشکال
  • آماده‌سازی محیط کار
    • تشریح ساختار داخلی اندروید
    • دانلود و نصب JDK
    • دانلود و نصب Android Studio
    • دانلود و نصب VirtualBox
    • دانلود و نصب GenyMotion
    • اجرای Android Studio و دانلود SDKهای موردنیاز
    • اجرای SDK Manager مستقل اندروید
    • اجرای GenyMotion و دانلود Emulator موردنظر
    • ایجاد Emulator با کمک AVD Manager
    • اجرای Emulator و تنظیم‌کردن آن برای توسعه نرم‌افزار
    • فعالسازی Developer Options
    • فعالسازی USB Debugging و Unknown Sources و توضیح مفهوم آنها
    • ایجاد یک پروژه ساده
    • کامپایل و اجرای پروژه در Emulator
    • تشریح مفهوم Minimum SDK
    • ایجاد تغییرات ظاهری ساده و Build مجدد پروژه
  • آشنایی با محیط Android Studio
    • ایجاد پروژه جدید
    • آشنایی با مفهوم نام برنامه و پکیج
    • انتخاب دستگاه‌های مورد پشتیبانی نرم‌افزار شما
    • آشنایی با مفهوم Minimum SDK
    • تشریح مفهوم Activity یا فعالیت
    • انتخاب نوع اکتیویتی
    • تشریح انواع مختلف Activity
    • پیمایش در پروژه
    • آشنایی با پنل پیمایش پروژه
    • تشریح نماهای Project و Packages و Android
    • ساختار پروژه و پوشه‌های داخلی آن
    • تشریح مفهوم Manifest یا شناسنامه برنامه
    • پوشه منابع و مفهوم منبع در پروژه اندروید
    • گرِیدِل (Gradle) چیست؟
    • توضیح برخی از تنظیمات گریدل
    • آشنایی با پنجره تنظیمات اندروید استودیو
    • کار با پنجره تنظیمات اختصاصی پروژه
  • استفاده از ویرایشگر کد
    • سفارشی‌سازی تنظیمات ادیتور
    • تکمیل کدها
    • تولید کد
    • پیمایش کدها
    • کلیدهای میانبر سودمند
  • ساخت رابط کاربری
    • ویرایشگر گرافیکی
    • درخت اجزای Layout
    • بخش خصوصیات
    • جعبه عناصر یا Components Palette
    • ویرایشگر متنی
    • ایجاد یک لی‌اوت جدید
    • اضافه‌کردن عناصر
    • پشتیبانی از چند صفحه‌نمایش
    • تغییر تم رابط کاربری
    • مدیریت رویدادها
    • نوشتن اولین برنامه کاربردی
  • اپلیکیشن، اکتیویتی، اینتنت و فرگمنت
    • مفهوم اکتیویتی
    • اتصال اکتیویتی‌ها با کمک Intent
    • چرخه‌ی حیات اکتیویتی
    • معرفی کلاس Application
    • چرخه‌ی حیات اپلیکیشن
    • ارسال مقادیر بین اکتیویتی‌ها ازطریق اینتنت
    • دریافت نتایج یک اکتیویتی
    • مفهوم فرگمنت
    • اضافه‌کردن فرگمنت بصورت ایستا
    • اضافه‌کردن فرگمنت بصورت پویا
    • چرخه‌ی حیات فرگمنت
    • فراخوانی برنامه‌های داخلی موبایل توسط Intent
  • مفاهیم پایه زبان جاوا و مفاهیم پیشرفته شئ گرایی و استفاده از رابطها و وراثت
    • مفهوم متغیر
      • نوع متغیر
      • نحوه تعریف متغیر
      • شناسه چیست؟
      • انواع متغیر در جاوا
      • انواع داده صحیح
        • نوع int
        • نوع long
        • نوع short
        • نوع byte
        • مقداردهی متغیرها در مبنای غیر از 10
        • نوع char
        • استفاده از کدگذاری Unicode و کارکترهای Escape
      • نوع داده boolean
      • انواع داده اعشاری
        • نوع float
        • نوع double
      • استفاده از Underscore در اعداد
    • عملگرها
      • عملگر چیست؟
      • عملوند چیست؟
      • انواع عملگر تکی، دوتایی و سه‌تایی
      • عملگر انتساب
      • عملگرهای ریاضی
      • تفاوت عملگرهای پیشوندی و پسوندی
      • عملگرهای رابطه‌ای یا مقایسه‌ای
      • عملگرهای منطقی
      • عملگرهای بیتی
      • عملگر شرطی
      • اولویت عملگرها
    • دستورات جاوا
      • یک دستور چیست؟
      • انواع دستورات
      • دستورات تعریفی
      • انواع دستورات توصیفی
      • دستورات کنترل جریان
      • بلاک دستور چیست؟
      • دستور if-else
      • دستور switch
        • انواع عبارات مجاز در Switch Expression
        • مفهوم case و label
        • بخش default
        • خروج از ساختار switch
      • دستور for
        • بخش آماده‌سازی یا Initialization
        • بخش عبارت شرطی یا Control-Expression
        • بخش فهرست دستورات یا Expression-List
        • فشرده‌سازی کد با کمک حلقه for
        • حلقه for بینهایت
        • حلقه‌های تودرتو
      • دستور while
        • تبدیل حلقه for به while
        • تفاوت بخش Condition-Expression با حلقه for
      • دستور do-while
        • تفاوت عملیاتی با حلقه while
        • تفاوت ظاهری با حلقه while
      • دستور break
        • دستور break بدون برچسب
        • دستور break با برچسب
        • مفهوم برچسب یا Label دستورات
        • خروج از بلاک‌های بیرونی در بلاک‌های تودرتو
      • دستور continue
        • دستور continue بدون برچسب
        • دستور continue با برچسب
        • رد کردن حلقه‌های بیرونی با کمک برچسب
        • تفاوت در اجرای continue در حلقه‌های for و while و do-while
      • کاربرد دستور خالی یا Empty Statement در جاوا
    • شروع شئ‌گرایی
      • برنامه‌نویسی شئ‌گرا
      • کلاس چیست؟
      • تعریف یک کلاس
      • تعریف فیلدهای داخل کلاس
      • فیلدهای نمونه‌ای و کلاسی یا Static
      • ساخت نمونه‌هایی از یک کلاس
      • نوع ارجاعی null یا پوچ
      • استفاده از عملگر نقطه برای دسترسی به عناصر کلاس
      • مقداردهی پیشفرض فیلدها
      • مفهوم پکیج در جاوا
      • اصلاح‌گرهای سطح دسترسی کلاس
        • سطح دسترسی پکیج
        • سطح دسترسی عمومی یا Public
      • تعریف متدهای کلاس
        • مفهوم امضای متد
        • سربارگذاری یا Overload متد
      • متغیرهای محلی
      • متدهای نمونه‌ای و استاتیک
      • فراخوانی متدها
      • this چیست؟
      • سطح دسترسی عناصر کلاس
        • سطح دسترسی پکیج
        • سطح دسترسی عمومی یا Public
        • سطح دسترسی خصوصی یا Private
        • سطح دسترسی محافظت‌شده یا Protected
      • روشهای ارسال پارامتر برای متد در جاوا
      • سازنده‌ها
        • تعریف سازنده
        • سربارگذاری یا Overload سازنده
        • فراخوانی یک سازنده از درون سازنده دیگر
        • استفاده از دستور return داخل سازنده
        • اصلاح‌گر سطح دسترسی سازنده
        • سازنده پیشفرض
      • بلاک آماده‌سازی نمونه‌ای
      • بلاک آماده‌سازی استاتیک
      • کلمه کلیدی final
        • متغیر محلی final
        • فیلدهای final نمونه‌ای و استاتیک
        • مقداردهی اولیه متغیر و فیلد final بعد از تعریف
        • پارامترهای final
        • متغیرهای ارجاعی final
      • متد varargs چیست؟
        • دستور foreach
        • سربارگذاری متد varargs
    • کلاس‌های Generic و Wrapper و رشته‌ها
      • مفهوم کلاس‌های Generic
        • تعریف یک کلاس جنریک
        • استفاده از کلاس جنریک
      • کلاس‌های Wrapper
        • کلاس‌های دربرگیرنده استاندارد جاوا
        • کار با کلاس‌های دربرگیرنده
        • استفاده از سازنده و متد valueOf
      • رشته‌ها
      • معرفی کلاس String
      • تفاوت کلاس‌های Mutable و Immutable
      • عبارت‌های رشته‌ای
      • کارکترهای Escape در عبارات رشته‌ای
      • کارکترهای Escape یونیکد در عبارات رشته‌ای
      • نقش CharSequence چیست؟
      • ساخت اشیاء String
      • استفاده از عبارات رشته‌ای بعنوان اشیاء String
      • مفهوم حوضچه رشته‌ها یا String Pool
      • عملیات رشته‌ای
        • محاسبه طول رشته
        • مقایسه دو رشته
        • استخراج کارکتر مشخص از رشته
        • مقایسه دو رشته بدون حساسیت به حروف بزرگ و کوچک
        • مقایسه دو رشته براساس الفبای زبان‌های طبیعی
        • بررسی خالی بودن رشته
        • تبدیل رشته به حروف بزرگ
        • تبدیل رشته به حروف کوچک
        • یافتن یک رشته داخل رشته دیگر
        • جداکردن بخشی از یک رشته
        • حذف فواصل خالی ابتدا و انتهای رشته
        • جایگزینی یک کارکتر در رشته
        • جایگزینی یک عبارت در رشته
        • بررسی شروع رشته با عبارت خاص
        • بررسی پایان رشته با عبارت خاص
        • شکستن رشته براساس الگوی مشخص
      • رشته‌ها در داخل دستور switch
      • کلاس‌های StringBuilder و StringBuffer
      • عملگر ادغام رشته‌ها (+)
      • زنجیره متدها یا Method Chaining
    • مدیریت خطاها و استثناها
      • مدیریت خطاها و استثناها
      • مفهوم استثنا یا Exception
      • یک استثنا، یک شئ است
      • استفاده از بلاک try-catch
      • انتقال کنترل برنامه
      • ساختار سلسله‌مراتبی استثناها
      • مرتب‌سازی بلاک‌های catch چندگانه
      • استثناهای Checked و Unchecked
      • تفاوت گرفتن استثنا یا تعریف آن با کمک throws
      • وقوع استثنا در آماده‌سازها
      • پرتاب یک Exception به بیرون
      • ایجاد یک کلاس استثنای سفارشی
      • بلاک finally
      • بلاک try-with-resources با تخصیص و آزادسازی خودکار منابع
      • بلاک catch چندگانه یا Multi-catch
    • وراثت
      • وراثت چیست؟
      • کلاس Object والد پیشفرض تمام کلاس‌ها
      • ساختار سلسله‌مراتبی وراثت
      • چه چیزهایی به کلاس فرزند ارث می‌رسد؟
      • تبدیل به بالا یا Upcasting
      • تبدیل به پایین یا Downcasting
      • تبدیل نوع با Typecasting
      • عملگر instanceof
      • ابطال و رونویسی متدها یا Override
      • قوانین رونویسی
      • دسترسی به متد رونویسی‌شده
      • وراثت و سازنده‌ها
      • پنهان‌کردن متدها
      • پنهان‌کردن فیلدها
      • غیرفعال‌کردن وراثت
      • مفهوم کلاس final
      • مفهوم متد final
      • کلاس‌ها و متدهای Abstract
      • مفهوم کلاس Concrete
      • تفاوت کلاس‌های چکیده با کلاس‌های معمولی
      • رونویسی متدهای کلی یا Generic
      • خطر اشتباه سهوی در زمان رونویسی متدها
      • الزام در کدنویسی با کمک Annotation یا حاشیه‌نویسی
      • انواع ارتباط is-a و has-a و part-of
      • عدم امکان وراثت چندگانه
    • آرایه‌ها
      • آرایه چیست؟
      • روش تعریف آرایه
      • آرایه‌ها شئ هستند
      • دسترسی به عناصر آرایه
      • طول آرایه
      • آماده‌سازی عناصر آرایه
      • مراقب آرایه‌های نوع ارجاعی باشید
      • آماده‌سازی صریح آرایه
      • محدودیت‌های استفاده از آرایه‌ها
      • آرایه‌هایی با طول متغیر
      • ارسال یک آرایه بعنوان پارامتر برای متد
      • تفاوت کپی سطحی و عمیق
      • آرایه‌های چندبعدی
      • مقداردهی اولیه آرایه‌های چندبعدی
      • دستورزبان تعریف آرایه از نگاه دقیق‌تر
      • بررسی محدوده‌ی آرایه در زمان اجرا
      • کلاس شئ آرایه چیست؟
      • سازگاری در انتساب آرایه‌ها
      • تبدیل آرایه به ArrayList/Vector و برعکس
    • انواع شمارشی یا Enum
      • نوع شمارشی چیست؟
      • تعریف نوع شمارشی
      • استفاده از Enum
      • کلاس والد نوع شمارشی
      • استفاده از انواع شمارشی در دستور switch
      • نسبت‌دادن داده‌ها و متدها به ثابت‌های Enum
      • تعریف داده‌های جانبی برای نوع شمارشی
      • تعریف بدنه برای ثابت‌های شمارشی
      • مقایسه‌ی دو ثابت Enum
      • انواع شمارشی تودرتو
      • جستجوی معکوس به‌دنبال ثابت‌های شمارشی
    • رابط‌ها
      • مفهوم رابط یا Interface چیست؟
      • دستورزبان تعریف یک رابط
      • تعریف عناصر داخلی رابط
        • تعریف فیلدهای ثابت
        • تعریف متدها
          • تعریف متدهای ناقص یا abstract
          • تعریف متدهای استاتیک
          • تعریف متدهای پیشفرض یا default
        • تعریف عناصر تودرتو
      • رابط یک نوع جدید ایجاد می‌کند
      • پیاده‌سازی یک رابط
        • پیاده‌سازی متدهای یک رابط
        • پیاده‌سازی چند رابط بصورت همزمان
        • پیاده‌سازی بخشی از یک رابط
        • پیاده‌سازی یک رابط در داخل نوع شمارشی
      • ارتباط والد و فرزند بین کلاس و رابط
      • وراثت در رابط‌ها
      • ارتباط والد و فرزند بین رابط‌ها
      • ارث‌بردن پیاده‌سازی‌های متداخل
      • عملگر instanceof از نگاه دقیق‌تر
      • کاربرد عملگر instanceof درکنار آرایه‌ها و رابط‌ها
      • رابط‌های علامت یا Marker Interfaces
      • رابط‌های عملیاتی
      • مقایسه اشیاء با کمک رابط‌های Comparable و Comparator
      • چندریختی: یک شئ با چند ظاهر
      • ایجاد شئ ازروی رابط
  • پروژه‌ی عملی - برنامه‌ی تبدیل واحد
    • ایجاد پروژه‌ی جدید
    • طراحی و تغییر آیکن برنامه
    • ساخت کلاس Application اختصاصی
    • آشنایی با Google Unit Converter
    • طراحی Layout صفحه‌ی اصلی برنامه
    • طراحی Layout صفحه‌ی تبدیل مساحت
    • کار با رشته‌ها و آرایه‌ها در strings.xml
    • جلوگیری از خروج تصادفی از برنامه
    • ایجاد کلاس اکتیویتی پیشرفته و اختصاصی
    • جابجایی بین اکتیویتی‌های برنامه با کلاس App
    • ایجاد انواع شمارشی موردنیاز
    • ساخت کلاس‌های کمکی تبدیل واحد
    • کمک‌گرفتن از Google Unit Converter برای تعیین نسبت تبدیل‌ها
    • دریافت گزینه‌های انتخاب‌شده توسط کاربر در Spinner و تبدیل به نوع شمارشی متناسب
    • تست و اشکال‌زدایی برنامه
    • تقسیم کلاس‌ها و اجزاء برنامه بین پکیج‌های مختلف جهت حفظ نظم برنامه
    • معرفی بخش‌هایی از پروژه جهت تکمیل بعنوان تمرین
  • پروژه‌ی عملی - بازی حدس اسامی
    • ایجاد پروژه‌ی جدید
    • ساخت آیکن و تصاویر موجود در برنامه
    • ایجاد یک Splash Screen یا صفحه‌ی خوش‌آمدگویی
    • تغییر نمای Preview در اندروید استودیو
    • تغییر اکتیویتی آغاز برنامه
    • ساخت کلاس Application اختصاصی
    • ساخت کلاس اکتیویتی سفارشی‌شده
    • ایجاد کلاس نگهداری کشورها
    • استخراج یک کشور تصادفی
    • ایجاد دکمه‌های بازی
    • اضافه‌کردن تصویر تعداد جان‌های باقیمانده
    • استفاده از اکتیویتی جاری بعنوان OnClickListener
    • مخفی‌کردن دکمه‌های انتخاب‌شده
    • تعریف منطق برد و باخت
    • نمایش امتیازها
    • قابلیت Reset کردن بازی و شروع بازی جدید
    • غیرفعال کردن موقت دکمه‌ها بعد از برد یا باخت
    • تبدیل آرایه‌ی char به رشته و بالعکس در جاوا برای بررسی دکمه‌های انتخابی
    • کاهش جان‌های بازیکن و بروزرسانی تصویر مربوطه
  • برنامه‌نویسی چندنخی یا MultiThread
    • برنامه‌نویسی چندنخی چیست؟
    • تفاوت برنامه‌نویسی چندنخی و تک‌نخی
    • چرا با وضعیت Not Responding مواجه می‌شویم؟
    • درک مفهوم برنامه‌نویسی Single Thread ازطریق مثال
    • درک مفهوم برنامه‌نویسی Multi Thread ازطریق مثال
    • مشکل تداخل بین نخ‌ها
    • کشف و رفع مشکل با کمک دستورالعمل هر نخ از برنامه
    • معادل برنامه‌نویسی مثال‌های ذکرشده
    • پروژه‌ی عملی TestThread
      • اجرای برنامه به‌صورت تک‌نخی
      • اجرای برنامه بصورت چندنخی
      • استفاده‌ی مستقیم از کلاس Thread
      • استفاده از متد Thread.sleep برای ایجاد وقفه در اجرای دستورات نخ
      • استفاده از متد runOnUiThread برای اجرای دستورات در نخ اصلی
      • دسترسی به UI Thread یا Main Thread با کمک Handler
      • آشنایی با کلاس AsyncTask
      • نحوه‌ی ایجاد یک AsyncTask جدید
      • آشنایی با متد onPreExecute
      • آشنایی با متد onPostExecute
      • آشنایی با متد onProgressUpdate
      • آشنایی با متد publishProgress
      • تشریح کاربرد کلاس‌های جنریک بکاررفته در AsyncTask
    • جمع‌بندی
  • کار با تنظیمات یا SharedPreferences
    • ذخیره‌ی وضعیت برنامه
    • چهارچوب تنظیمات یا Preferences Framework چیست؟
    • مسیر نگهداری فایل‌های تنظیمات
    • ساختار داخلی Preferences
    • پروژه‌ی عملی Preferences
      • ایجاد کلاس App
      • ایجاد شئ خواندن تنظیمات
      • ساخت شئ ویرایشگر تنظیمات
      • ایجاد و بازکردن یک یا چند فایل تنظیمات بطور همزمان
      • تفاوت بین متدهای apply و commit
      • ایجاد کلاس ActivityEnhanced
      • اضافه‌کردن منو به اکتیویتی
      • انجام کارهای مختلف با کلیک روی گزینه‌های منو
      • تنظیم رنگ‌های موجود در پروژه
      • ایجاد استایل‌ها و تم‌های مختلف در پروژه
      • نمایش اکتیویتی باکمک تم انتخاب‌شده
      • ایجاد اکتیویتی تنظیمات
      • طراحی Layout اکتیویتی تنظیمات
      • کدنویسی منطق صفحه‌ی تنظیمات
      • حرکت بین اکتیویتی‌ها باکمک کلاس App
      • استفاده از پنجره‌ی Dialog تنظیمات بجای اکتیویتی
      • طراحی Layout دیالوگ تنظیمات
      • کدنویسی منطق پنجره‌ی تنظیمات
      • ساخت Custom Dialog
    • جمع‌بندی
  • کار با پایگاه داده‌های SQLite
    • ایجاد پروژه‌ی جدید
    • ساخت کلاس App و ActivityEnhanced
    • سفارشی‌کردن ظاهر Toast در برنامه
    • اضافه‌کردن فونت‌های دلخواه به پروژه
    • تغییر رنگ‌بندی و ظاهر برنامه
    • ساخت کنترل‌های سفارشی برای TextView و EditText و Button
    • طراحی دیتابیس برنامه و معرفی پلاگین SQLite Manager در فایرفاکس
    • معرفی کلاس SQLiteOpenHelper
    • آشنایی با متدهای onCreate و onDowngrade و onUpgrade
    • تغییر و بروزرسانی ساختار دیتابیس در نسخه‌های مختلف برنامه بدون حذف اطلاعات
    • ایجاد جداول و کنترل شئ قابل نوشتن دیتابیس
    • طراحی مدل برای بهره‌مندی از الگوی MVC
    • نحوه‌ی انجام چهار عمل اصلی CRUD در دیتابیس
    • آشنایی با مفهوم Cursor و ContentValues
    • ساخت SplashScreen و انتقال به اکتیویتی اصلی بعد از مدت مشخص
    • آشنایی با RecyclerView
    • معرفی مفهوم Adapter و نحوه‌ی کار با LayoutInflater
    • ساخت کلاس ViewHolder و اختصاص آداپتر به RecyclerView
    • توضیح متد notifyDataSetChanged در آداپتر
    • جلوگیری از خروج اتفاقی از برنامه با فشردن کلید Back
    • ایجاد Dialogهای سفارشی برای پیغام تأیید و اضافه‌کردن شخص جدید به دیتابیس
    • آشنایی با نحوه‌ی استفاده از SwipeRefreshLayout برای بروزرسانی دستی اطلاعات با Dragکردن صفحه به پایین
    • نمایش اطلاعات در قالب عناصر RecyclerView همراه‌با تصویر پروفایل (آواتار) و اطلاعات جانبی
    • توضیح نحوه‌ی اضافه‌کردن، ویرایش، حذف و نمایش اطلاعات با کمک مدل ساخته‌شده و ارتباط با آداپتر
    • تست و اجرای پروژه
    • جمع‌بندی
  • اتصال به وب‌سرویس و اینترنت
    • طراحی دیتابیس سمت سرور
    • ساخت وب‌سرویس RESTful سمت سرور با PHP
    • تست وب‌سرویس با پلاگین RESTED فایرفاکس
    • نوشتن کلاس اتصال به سرور با دو روش Get و Post
    • تشریح پردازش JSON در اندروید
    • نوشتن متدهای مجزا برای اتصال به اکشن‌های مختلف وب‌سرویس
    • آموزش کار با HashMap در اندروید
    • نحوه‌ی درخواست مجوز اتصال به اینترنت در برنامه
    • ساخت کنترل‌های سفارشی ترکیبی با ادغام چند کنترل و Layout اختصاصی
    • تشریح مفهوم URL و کار با کلاس HttpURLConnection
    • آموزش کار با InputStream و OutputStream و تبدیل Stream به رشته و بالعکس
    • ساخت کلاس‌های AsyncTask جهت استفاده از وب‌سرویس بدون تداخل در کارکرد برنامه
    • آموزش عملی استفاده از Interface در برنامه جهت انجام کارها بصورت غیرهمزمان
    • تغییر مکانیزم برنامه جهت اولویت‌دادن به دیتابیس آنلاین
    • اضافه‌کردن قابلیت Sync برنامه با سرور و امکان ویرایش اطلاعات بدون نیاز به اینترنت
    • تشخیص رکوردهای ذخیره‌نشده در سرور و امکان بارگذاری مجدد از سرور یا ذخیره‌ی تغییرات در سرور
  • پروژه‌ی عملی - بازی آنلاین دونفره با قابلیت ثبت‌نام
    • تحلیل پروژه و آماده‌سازی پایگاه داده‌ها
    • واردکردن اطلاعات آزمایشی در دیتابیس
    • طراحی وب‌سرویس بصورت RESTful API
    • ایجاد پروژه در AndroidStudio و آماده‌سازی اولیه
    • طراحی کلاس App و ActivityEnhanced و متدهای کمکی داخلی
    • ایجاد کلاس ارتباط با وب‌سرویس و مدل‌های داده‌ها
    • طراحی صفحه‌ی ورود به برنامه و مدیریت صفحه‌کلید مجازی
    • طراحی Dialogهای سفارشی موردنیاز در بازی
    • طراحی و کدنویسی صفحه‌ی اصلی بازی
    • دریافت و نمایش آمار بازی‌های گذشته با کمک Adapter اختصاصی و RecyclerView
    • تولید کلاس‌های AsyncTask اختصاصی بصورت Event Based (رویدادگرا) و تشریح کامل پردازش JSON دریافتی از سرور
    • نمایش جزئیات مسابقات قبلی و تغییر لحظه‌ای عناصر سفارشی ساخته‌شده براساس تغییرات در سمت سرور
    • کار با کلاس Timer برای زمان‌بندی انجام کارها در فواصل زمانی مشخص و لغو زمان‌بندی درصورت نیاز
    • طراحی صفحه‌ی انتخاب موضوع سؤالات مسابقه توسط دو بازیکن
    • طراحی و کدنویسی منطق مسابقه و ارسال پاسخ‌های بازیکنان به سرور
    • تشخیص خودکار انجام نوبت مسابقه توسط حریف
    • توضیحات تکمیلی و تعریف تمرین جهت تکمیل پروژه
  • کار با API نقشه‌ی گوگل (Google Map) درقالب پروژه‌ی عملی بانک مشاغل
    • تشریح ساختار Database و وب‌سرویس
    • گرفتن کلید API نقشه از کنسول توسعه‌دهندگان گوگل
    • توضیح روش فعال‌سازی سرویس‌های گوگل برروی GenyMotion
    • ایجاد پروژه‌ی اندروید و ساخت کلاس‌های اتصال به وب‌سرویس
    • ایجاد کلاس دانلود فایل از سرور جهت دریافت تصاویر
    • بررسی آنلاین‌بودن و دسترسی به اینترنت در برنامه
    • ساخت صفحه‌ی Splash و بارگذاری اطلاعات از سرور آنلاین
    • بروزرسانی خودکار موقعیت کاربر با کمک FusedLocation
    • ایجاد Spinner انتخاب استان و شهر
    • نوشتن Adapter اختصاصی برای Spinner و تغییر ظاهر نمایش عناصر
    • بارگذاری شهرهای هر استان با انتخاب استان مربوطه
    • اضافه‌کردن کنترل‌ها به صفحه بصورت پویا با کدنویسی
    • نمایش نقاط ثبت‌شده در سرور برروی نقشه
    • تغییر آیکن Markerهای نقشه به‌صورت دلخواه
    • تغییر رفتار کلیک‌کردن برروی نقشه و Markerها
    • تغییر قالب کادر نمایشی با کلیک روی هر Marker
    • تنظیم رفتار موردنظر در زمان کلیک روی کادر نمایشی Marker
    • مسیریابی به دو روش پیاده‌روی و سواره
    • ترسیم مسیرها برروی نقشه
    • پاکسازی نقشه
    • تغییر حالت نقشه به جاده‌ای و ماهواره‌ای
    • فعال و غیرفعال‌کردن لایه‌ی نمایش ترافیک لحظه‌ای نقشه
    • محاسبه‌ی زمان و مسافت رسیدن به یک نقطه از موقعیت کاربر
    • دریافت مختصات مرکز نقشه
    • دریافت موقعیت لمس‌شده روی نقشه
  • پروژه‌ی عملی - کار با سوکت درقالب برنامه‌ی چت آنلاین
    • برنامه‌نویسی سوکت چیست؟
    • مفهوم سوکت به زبان ساده
    • تعریف فنی سوکت
    • سوکت‌های رزرو شده و آزاد
    • مزایای برنامه‌نویسی سوکت
    • چرا همیشه از سوکت استفاده نکنیم؟
    • سوکت در جاوا
    • خواندن و نوشتن اطلاعات ازطریق سوکت
    • ایجاد یک کلاینت ساده EchoClient
    • ساخت یک سرور ساده EchoServer
    • پنج مرحله‌ی اساسی کار با سوکت
    • پروژه‌ی عملی - اپلیکیشن چت آنلاین
      • تعریف پروژه
      • طراحی دیتابیس MySQL/MariaDB
        • جدول کاربران users
        • جدول کانال‌ها channels
        • جدول مطالب کانال articles
        • جدول اشتراک‌های کاربران در کانال‌ها subscriptions
        • جدول گروه‌ها groups
        • جدول مطالب گروه‌ها posts
        • جدول کاربران عضو گروه‌ها members
        • جدول چت‌های مستقیم directs
        • جدول پیام‌های کاربران در چت‌ها messages
        • برقراری روابط بین جداول و تعریف قیدها
      • ایجاد سرور سوکت با Node.js
        • نصب Node.js
        • تعریف سرور اصلی server.js
        • اضافه‌کردن کتابخانه‌های net و mysql توسط npm
        • پیاده‌سازی ساختار Controller-Action در سرور سوکت
        • ایجاد کنترلر users.js و عملیات ثبت‌نام، ورود و...
        • نحوه‌ی تبدیل اطلاعات به JSON
        • مدیریت ارتباطات چندگانه بین سرور و کلاینت‌های متعدد
        • ایجاد کنترلر directs.js و عملیات دریافت پیام‌ها و ارسال پیام جدید
        • تعریف تمرین‌های مختلف جهت افزایش مهارت در ساخت سرور سوکت
        • معرفی یک نرم‌افزار بسیار سودمند جهت تست سوکت سرور و کلاینت
      • ایجاد پروژه‌ی Android
        • تنظیمات Manifest
        • اعطای مجوزهای لازم
        • ایجاد کلاس App
          • ایجاد Toast سفارشی و آنی (قابلیت حذف فوری Toastهای قبلی)
          • بررسی آنلاین‌بودن دستگاه کاربر (اتصال شبکه و دسترسی به سرور سوکت)
          • خروج امن و کامل از برنامه و بستن تمامی Processهای فعال
          • محاسبه‌ی SHA-1 با کدنویسی
          • استفاده‌ی بهینه از SnackBar
          • بهره‌گیری از کتابخانه‌ی پیکاسو Picasso برای دانلود تصاویر از سرور
          • پیکربندی پیکاسو جهت بارگذاری بصورت Singleton در پروژه
          • حالت‌های مختلف بارگذاری تصاویر (خواندن از Cache یا دانلود اجباری) با کمک پیکاسو
          • مدیریت خطاهای احتمالی در زمان بارگذاری تصاویر
        • کلاس ActvityEnhanced
          • ایجاد حالت‌های مختلف اجرای اکتیویتی (با Bundle یا بدون آن)
          • بستن صفحه‌کلید مجازی دستگاه با کدنویسی
          • جلوگیری از خروج اتفاقی از برنامه بصورت مجتمع با کمک وراثت
          • جلوگیری از چرخش برنامه درصورت چرخش گوشی
        • ایجاد کلاس پایه‌ی سوکت با قابلیت تشخیص قطع اتصال و برقراری اتصال مجدد
        • مدیریت درخواست‌های همزمان و چندگانه‌ی سوکت با کمک Interface
        • نمایش کانال‌ها، گروه‌ها و چت‌های مستقیم در یک اکتیویتی با کمک فرگمنت و ViewPager
        • نمایش سربرگ‌های صفحات با کمک TabLayout
        • جلوگیری از حرکت بین فرگمنت‌های ViewPager با سفارشی‌سازی آن
        • امکان تعریف و حذف رویداد سراسری درصورت دریافت پیام از سرور (بدون درخواست از سمت کلاینت)
        • مدیریت ارتباط دوطرفه بین سرور و کلاینت
    • جمع‌بندی و نتیجه‌گیری پایانی پروژه
  • گرفتن خروجی Release از برنامه و کار با ProGuard و انتشار برنامه در مارکت

برنامه نویسی اندروید مقدماتی

افزودن به سبد خرید

مدت زمان: ۶۰ ساعت

قیمت: ۱,۰۰۰,۰۰۰ ۷۵۰,۰۰۰ تومان

کیفیت: صنعتی (بالا)

خرید: ۴۵۱ عدد