انجمن برنامه نویسی اندروید P30droid.com
مدرس :فرزاد سرسیفی
دوره آموزشی برنامه نویسی اندروید
1
انجمن برنامه نویسی اندروید p30droid.com
فصل اول
شروع با اندروید ؟
اندروید چیست:
اندروید مجموعه ای از نرم افزارهای ) (software stackموبایل است که شامل سیستم عاملmiddleware ،ها و برنامه
های کلیدی ) (key applicationsاست . Androidبه زبان ساده سیستم عاملی است برای دستگاه های موبایل و گوشی
های هوشمند که توسط بیش از 03کمپانی معروف پشتیبانی می شود .اندروید اوپن سورس است و توسعه دهندگان می
توانند با استفاده از Android SDKبرنامه های مختلفی برای این سیستم عامل بنویسند .در واقع اندروید بستری را فراهم
می کند تا برنامه نویسان بتوانند هرچه سریعتر و بهتر برنامه هایی بسازند که از تمام ویژگی های یک گوشی هوشمند استفاده
کند .اندروید به معنای واقعی “ باز ) ” (Openاست ،یعنی برنامه نویس می تواند از تمام قدرت یک تلفن همراه استفاده کند.
ا ندروید امکان استفاده از توابع داخلی گوشی موبایل همچون شماره گیری ،فرستادن SMSیا استفاده از دوربین گوشی را به
برنامه نویسان می دهد تا بتوانند اپلیکیشن های قدرتمند و کاربردی برای کاربران بسازند.
خصوصیات:
.1چارچوب برنامه (Application framework):امکان استفاده مجدد و جایگزینی کامپوننت ها را فراهم میکند.
.2ماشین مجازی دالویک (Dalvik virtual machine):وظیفه بهینه سازی کدها برای اجرا بر روی موبایل را دارد.
.0مرورگر داخلی (Integrated browser):منطبق بر موتور WebKitمنبع باز
دوره آموزشی برنامه نویسی اندروید
گرافیک بهینه شده (Optimized graphics):قدرت گرفته از کتابخانه ،D۲گرافیک D ۳منطبق بر OpenGL
ES 1شتاب دهنده سخت افزاری
SQLite:برای ذخیره اطالعات
پشتیبانی از رسانه (Media support):با پشتیبانی از فرمتهای رایج صوتی ،ویدئویی و عکس (MPEG4, H.264,
)MP3, AAC, AMR, JPG, PNG, GIF
مکالمات تلفنی ) : (GSM Telephonyوابسته به نوع سخت افزار
: Bluetooth, EDGE, 3G, and WiFiوابسته به نوع سخت افزار
دوربین ،GPS ،قطب نما و شتاب سنج :وابسته به نوع سخت افزار
محیط توسعه غنی (Rich development environment):شامل ایموالتور ،ابزارهای دیباگ کردن ،پروفایل کردن
حافظه و پالگین برای محیط توسعه اکلیپس
دوره آموزشی برنامه نویسی اندروید
3
انجمن برنامه نویسی اندروید p30droid.com
معماری اندروید:
تصویر زیر الیه ها و کامپوننت های اصلی سیستم عامل اندروید را نشان میدهد.
برنامه های کاربردی(Applications):
اندروید به همراه بسته های مختلفی از جمله browser, contacts, email client, SMS program, calendar, maps,
and othersارایه میشود .تمام این برنامه ها با استفاده از زبان برنامه نویسی جاوا نوشته شده اند.
چارچوب برنامه(Application Framework):
با فراهم آوردن پلتفرم توسعه باز) ، (open development platformاندروید برنامه سازان را قادر کرده است تا برنامه های
کاربردی خالقانه و غنی برای این پلت فرم فراهم سازند .توسعه دهندگان آزادی کامل دارند تا از ویژگیهایی مانند دسترسی به
سخت افزار ،دسترسی به اطالعات محلی (موقیت جغرافیایی) ،اجرای سرویس های پس زمینه)، (background services
دوره آموزشی برنامه نویسی اندروید
4
انجمن برنامه نویسی اندروید p30droid.com
تنظیم زنگ ساعت ،اضافه کردن اطالعیه ها ) (notificationsبه نوار وضعیت و بسیاری بسیاری دیگر در برنامه هایی که
میسازند ،استفاده کنند.
توسعه دهندگان دسترسی کامل به همان چارچوب APIهایی دارند که برنامه های هسته ) (the core applicationsدارند.
معماری برنامه های کاربردی ) (The application architectureبمنظور ساده سازی استفاده مجدد از کامپوننت ها طراحی
شده است .هر برنامه ای می تواند قابلیت های خود را در اختیار دیگر برنامه ها قرار دهد و همچنین از قابلیت های دیگر برنامه ها
استفاده کند ( البته به محدودیت های امنیتی چارچوب هم بستگی دارد) .این طرزکار مشابه به کاربر اختیار تعویض و جایگزینی
کامپوننت ها را می دهد.
برنامه های زیربنایی ،مجموعه ای از سرویس ها و سیستم های زیرند:
مجموعه قابل گسترشی از Viewها که برای ساخت برنامه های کاربردی استفاده می شوند ،مانند lists, grids, text
boxes, buttons, and even an embeddable web browser
،Content Providersکه برنامه ها را قادر میسازد تا به اطالعات برنامه های دیگر مانند لیست تماس ،دسترسی پیدا
کنند یا حتی اجازه دسترسی به اطالعات خود را به برنامه های دیگر دهند.
یک مدیر منابع ) (Resource Managerاجازه دسترسی به منابعی که کد-برنامه نیستند را فراهم میکند مانند
دسترسی به رشته های محلی) ، (localized stringsتصاویر و فایل های مربوط به طرح برنامه(layout files).
یک مدیر اطاعیه) ، (Notification Managerکه از این طریق برنامه ها را قادر میکند تا هشدارهای خود را در نوار
وضعیت نشان دهند.
یک مدیر فعالیت) ، (Activity Managerکه مدریت چرخه زندگی ) (lifecycleبرنامه ها را در دست دارد و به نحوه
اجرای برنامه ها نظارت میکند.
کتابخانه ها(Libraries):
اندروید شامل مجموعه از کالسهای ++C/Cاست که توسط کامپوننت های سیستم اندروید مورد استفاده قرار میگیرند .همچنین
استفاده از این قابلیت به توسعه دهندگان نیز داده شده است .بعضی از این کتابخانه های اصلی به این قرارند:
System C library – a BSD-derived implementation of the standard C system library (libc),
tuned for embedded Linux-based devices
Media Libraries – based on PacketVideo’s OpenCORE; the libraries support playback and
recording of many popular audio and video formats, as well as static image files,
including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
Surface Manager – manages access to the display subsystem and seamlessly composites
2D and 3D graphic layers from multiple applications
LibWebCore – a modern web browser engine which powers both the Android browser
دوره آموزشی برنامه نویسی اندروید
5
انجمن برنامه نویسی اندروید p30droid.com
and an embeddable web view
SGL – the underlying 2D graphics engine
3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either
hardware 3D acceleration (where available) or the included, highly optimized 3D
software rasterizer
FreeType – bitmap and vector font rendering
SQLite – a powerful and lightweight relational database engine available to all
applications
زمان اجرای اندروید(Android Runtime):
اندروید شامل مجموعه ای از کتابخانه های اصلی است که اکثر عملکردهای قابل دسترس را با استفاده از زبان جاوا ممکن میسازد.
هر برنامه کاربردی اندروید در فرایند مخصوص به خودش اجرا میشود و دسترسی مخصوص به خود در ارتباط با ماشین مجازی
دالویک دارد .این ماشین بگونه ای ساخته شده است که هر دستگاهی ) (deviceمیتواند چندین ماشین مجازی را بطور همزمان
اجرا کند .هر ماشین مجازی دالویک فایل ها را به فرمت ) (dex.اجرا میکند که اینکار باعث بهینه سازی در دستگاه هایی که
حافظه پایینی دارند ،می شود .این ماشین مجازی مبتنی بر رجیسترهاست و کالسهایی که توسط کامپایلر جاوا ساخته شده است را
اجرا میکند.
ماشین مجازی دالویک برای اجرای قابلیت های اساسی مانند مدریت حافظه کم و چند نخی ) (threadingمتکی بر هسته
لینوکس است.
هسته لینوکس(Linux Kernel):
اندروید متکی بر لینوکس نسخه ۲٫۶برای انجام سرویس های اصلی مانند security, memory management, process
management, network stackو driver modelاست .این هسته همچنین مانند یک الیه انتزاعی (abstraction
)layerمابین سخت افزار و سایر نرم افزارها عمل میکند.
دوره آموزشی برنامه نویسی اندروید
6
انجمن برنامه نویسی اندروید p30droid.com
راه اندازی اندروید:
-1جاوا ۵٫۰یا جدیدتر
-2قبل از هر چیز به یک کپی از جاوا نیاز دارید .تمام ابزارهای توسعه اندروید به آن نیاز دارند و تمام برنامه هایی که برای
تولید اپلیکیشت مینویسید براساس آن خواهد بود .بنابراین حد اقل به جاوا ۵٫۰یا ۶٫۰که بر روی سیستم تان نصب
باشد نیاز دارید.
-0تنها داشتن JREهم کافی نیست ،شما احتیاج به کیت کامل توسعه نیز دارید .من پیشنهاد میکنم آخرین نسخه آن را
(که در زمان نوشتن این پست JDK SE 6است(از سایت شرکت سان( که البته امتیاز این شرکت توسط شرکت اوراکل
خریداری شده است) دانلود نمایید .کاربران مک OSxهم می بایست آخرین نسخه این سیستم عامل به همراه JDKرا
از سایت اپل دانلود نمایند .سپس فایل دانلود شده را بر روی سیتم تان نصب کنید.
-4برای اینکه از متوجه شوید ورژن مورد قبول را بر روی سیتم تان دارید یا خیر ،کامند زیر را در Command Prompt
(روی استارت منو کلیک کنید ،در قسمت جستجو تایپ کنید ) cmdاجرا کنید:
C:\> java -version
-5میبایست جوابی مانند تصویر زیر دریافت کنید.
اکلیپس)(Eclipse
دوره آموزشی برنامه نویسی اندروید
7
انجمن برنامه نویسی اندروید p30droid.com
حاال نیاز است تا محیط توسعه جاوا را بر روی سیستمتان نصب کنید .محیط توصیه شده برای استفاده و برنامه نویسی از طرف
گوگل ،اکلیپس معرفی شده است .استفاده از این محیط هم رایگان است و هم گوگل از آن پشتیبانی کامل میکند .محیط های
دیگری هم هستند مانند نت بینز که میتوانید بجای اکلیپس از آن استفاده کنید.
به صفحه دانلود سایت اکلیپس بروید و Eclipse IDE for Java Developersرا دانلود کنید .توجه کنید به چیزی بیشتر از
Eclipse SDK classicنیاز دارید ،پس آنرا دانلود نکنید .پکیج را دانلود کنید و در قسمت دلخواهس از کامپیوتر از حالت پک
خارج کنید (اگر از winzipیا نرم افزارهای مشابه استفاده میکنید بر روی فایل دانلود شده راست کلیک کنید و سپس از منوی باز
شده بر روی Extract Hereکلیک کنید
اندرویدSDK
کیت توسعه اندروید به دو قسمت تقسیم شده است . the SDK Starter Packageو the SDK Components.به صفحه
دانلود SDKبروید و پکیج مورد نظرتان را دانلود کنید .سپس در محل دلخواهی از کامپیوتر آنرا از حالت پک خارج.
پالگین اکلیپس)(Eclipse Plug-In
برای راحتی بیشتر توسعه دهندگان ،گوگل پالگینی آماده کرده است و آن را Android Development Toolkitیا باختصار
ADTنامیده است .برای نصب پالگین مراحل زیر را دنبال کنید (این مراحل بر اساس اکلیپس ۳٫۵نوشته شده است .ورژن های
مختلف ممکن کمی تغییر نسبت به این داشته باشند.
- ۱اکلیپس را اجرا کنید.
- ۲از منوی Helpبر روی Install new softwareکلیک کنید.
- ۳بر روی لینک Available Software Sitesکلیک کنید (زیر دکمهAdd).
4بر روی دکمه Addکلیک کنید- ۵در قسمت نام ،نامی دلخواه را وارد کنید (پیشنهاد من ): Android Development Toolsو در قسمت محل
)(Locationآدرس https://dl-ssl.google.com/android/eclipseرا بدهید .به شکل زیر دقت کنید.
دوره آموزشی برنامه نویسی اندروید
8
انجمن برنامه نویسی اندروید p30droid.com
وقتی مجدداً اکلیپس راه اندازی میشود ممکن چند پیغام خطا نشان دهد ،نگران نباشید .چون باید به اکلیپس بگویید که SDK
کجاست .در ویندوز به Window > Preferences > Androidبروید (در مک به ) Eclipse > Preferencesو آدرس
محلی نصب SDKرا به اکلیپس بدهید.
ورژن های اندروید
تاریخچه ی نسخههای سیستم عامل تلفن همراه اندروید با انتشار نسخه بتای این نرمافزار در ماه نوامبر سال ۲۰۰۲آغاز شد .اولین
نسخه تجاری این سیستم عامل در سپتامبر ۲۰۰۲بر روی یکی از گوشیهای شرکت HTCمنتشر شد .این سیستم عامل در حال
حاضر زیر نظر شرکت گوگل و اتحادیه گوشی بازمخفف OHAدر حال توسعه است.
از ماه آوریل سال ۲۰۰۲و با انتشار نسخه ۱٫۵هر نسخه این سیستم عامل با نام یک شیرینی و یا دسر نام گذاری میشود نوعی
کیک بزرگتر از کیک یزدی Donutنوعی پیراشکی Eclairنوعی شیرینی خامهای Foroyمخفف عبارت Frozen Yogurtکه
یک نوع دسر است Gingerbreadنان زنجفیل Ice Cream Sandwichبستنی حصری Jelly Beanآبنبات ژلهای و
KitKatشکالت کیتکت بودهاند.
در ماه سپتامبر سال ۲۰۱۲اعالم شد که تا کنون بیش از ۵۰۰میلیون دستگاه در سراسر دنیا از این سیستم عامل استفاده
میکنند .آخرین به روز رسانی اندروید نسخه ۴٫۴یا کیتکت میباشد که در ماه اکتبر سال ۲۰۱۳انتشار یافته است
دوره آموزشی برنامه نویسی اندروید
9
انجمن برنامه نویسی اندروید p30droid.com
اندروید نسخه ۱٫۰
اندروید نسخه ۱٫۰اولین نسخه اندروید که به صورت تجاری در تاریخ ۲۳سپتامبر ]۱[۲۰۰۲بر روی تلفن همراه شرکت اچ تی سی
۱(HTC Dream (Gمعرفی شد.
تلفن همراه شرکت اچ تی سی (HTC Dream (G1با اندروید نسخهٔ ۱٫۰
قابلیتهای اندروید نسخه ۱٫۰شامل:
برنامه بازار اندروید ) (Android Marketجهت نصب و بروز رسانی برنامهها از طریق اینترنت.
مرورگر وب با قابلیت نمایش کامل صفحههای اینترنتی با پسوندXHTML ٫HTMLو بزرگنمایی محتوای صفحه
پشتیبانی از دوربین البته این نسخه از اندروید فاقد قابلیت تغییر رزولوشن تصویر یا تغییر سفیدی یا رنگ تصویر بود .
هماهنگ سازی حساب جی میل با برنامه جی میل اندروید از طریق اینترنت.
هماهنگ سازی حساب جی میل با برنامه)(People appاندروید از طریق اینترنت.
هماهنگ سازی حساب جی میل با تقویم اندروید از طریق اینترنت.
برنامه گوگل مپس یا نقشههای گوگل برای مشاهده نقشهها و تصاویر ماهوارهای از خیابانها و گذرگاهها و همچنین پیدا
کردن کسب و کار محلی و جهت یابی در هنگام رانندگی با استفاده از جی پی اس
قابلیت جستجوی گوگل که به کاربر امکان جستجو در اینترنت و برنامههای تلفن همراه یا در میان لیست مخاطبین و
تقویم را میدهد.
قابلیت گوگل تالک ) (Google Talkجهت پیام فوری از طریق اینترنت.
پشتیبانی از پیامک متنی ) (SMSو پیامک تصویری)(MMS
مدیا پلیر با قابلیت پخش فایلهای رسانهای (media files).البته این نسخه فاقد پشتیبانی از اجرای فیلم و بلوتوث
استریو بود.
برنامه یوتیوب ) (YouTubeجهت تماشای فیلمهای این سایت از طریق اینترنت.
اعالم اطالعیه های )(Notificationsنوار وضعیت از طریق زنگ قابل انتخاب یا ال ای دی ) (LEDو لرزاننده
)(vibrationتلفن همراه.
وجود برنامههایی مانند :زنگ هشدار) ،(Alarm Clockتقویم ،برنامه تماس گیر) ، (Dialerالنچر صفحه
خانگی ،(Home screen )launcherگالری عکس) Pictures (Galleryو تنظیمات
پشتیبانی از اتصاالت بی سیم ،وای-فای و بلوتوث
اندروید نسخه ۲و ۲٫۱یاÉclair
هر دو نسخه ۲و ۲٫۱اندروید مانند نسخه ۱٫۶مبتنی بر کرنل لینوکس ۲٫۶٫۲۲طراحی شدهاند .اندروید ویرایش ۲در ۲۶اکتبر
۲۰۰۲معرفی شد .در سوم دسامبر SDK ۲۰۰۲نسخه ۲٫۰٫۱معرفی شد و SDKویرایش ۲٫۱در ۱۲ژانویه ۲۰۱۰منتشر
گردید .اهم امکانات اضافه شده در این نسخه به شرح زیر هستند:
سرعت سختافزاریِ بهبود یافته
ویژگی چند لمسیMulti Touch
پشتیبانی از رزولوشنهای بیشتر برای صفحه نمایش
رابط کاربری بهروزرسانی شده
مرورگر اینترنتی با قابلیت پشتیبانی ازHTML5
دفترچه تلفن بهروزرسانی شده
گوگل مپ نسخه ۳٫۱٫۲
پشتیبانی ازMicrosoft Exchange
افزوده شدن امکان فالش داخلی برای دوربین
افزوده شدن زوم دیجیتال دوربین
بهروزرسانی صفحه کلید مجازی
پشتیبانی از بلوتوث نسخه ۲/۱
اضافه شدن قابلیت کاغذ دیواریهای متحرک
اضافه شدن امکان ارسال فایل با استفاده از بلوتوث
اندروید نسخه ۴٫۰یاIce Cream Sandwich
اندروید نسخه ۴٫۰یا بستنی حصیری در ۱۲اکتبر ۲۰۱۱معرفی شد و آن را روی تلفن همراه گلکسی نکسوس معرفی کرد .در این
نسخه تغییرات عمدهای در این سیستم عامل نسبت به نسخههای پیشین بهوجود آمد .رابط کاربری به طور کلی بازنویسی و
دگرگون شد و همه چیز از نو بهینهسازی شدهاست .ضمن اینکه امکانات جدید زیادی به اندروید چهارم اضافه شد .قابلیتهای تازه
و تغییرات شامل:
امکان استفاده از دکمههای مجازی در رابط کاربری به جای استفاده از دکمههای فیزیکی در پایین گوشی.
قرار دادن ویجتها در تبهایی مشابه با لیست اپلیکیشنها.
پوشهها راحتتر و با کشیدن و انداختن ساخته میشوند( .شبیه به سیستمعامل آیاواس)
نرمافزار جدید برای تلفن
امکان زوم در تقویم
اضافه کردن امکان جستجوی افالین در میان ایمیلها در جیمیل و دو خطی کردن پیشنمایش ایمیلها.
امکان گرفتن اسکرین شات با نگه داشتن دکمه Powerو دکمه صدا.
بهبود سیستم غلط یابی کیبرد.
از صفحه اصلی گوشی مستقیماً میتوان به اپلیکیشنها دسترسی داشت.
بهبود کپی و پیست کردن.
بهبود سیستم تشخیص صدا.
خارج کردن سیستم از حالت قفل با سیستم تشخیص چهره.
پشتیبانی مرورگر جدید از تب که میتواند تا ۱۶تب همزمان را پیشتیبانی کند.
به روز بوکمارکهای مرورگر با بوکمارکهای کروم.
سیستم فونت جدید که گوگل نام آن را «روبوتو» گذاشته است.
امکانات نظارت و مدیریت بر میزان مصرف دیتا و مشخص کردن سقف مصرف دیتا.
امکان توقف برنامههایی که در پس زمینه از اینترنت استفاده کردند.
بهبود اپلیکیشن دوربین ،رساندن تاخیر شاتر به صفر و امکان زوم هنگام فیلمبرداری
اپلیکیشن ویرایش عکس.
گالری مدیریت تصاویری جدید بر اساس موقعیت و افراد.
برنامه شبکههای اجتماعی به نام Peopleادغام شده با گوگل پالس.
اندروید Beam:امکانی که با کمک NFCاجازه میدهد اطالعاتی مانند وب سایتها ،دفترچه تماس ،آدرس ،فیلم و…
را سریعاً به فرد دیگری انتقال داد.
ماشین مجازی اندروید:
قبل از اینکه بتوانید برنامه ای را که توسط اکلیپس نوشته اید بر روی ایموالتور مشاهده کنید ،باید ایموالتور را تنظیم کنید .مثالً
بگویید این ایموالتور قرار است کدام ورژن از اندروید را برای شما شبیه سازی کند یا کدام سطح APIرا می خواهید پشتیبانی
کنید .یکی از مزایای ماشین مجازی اندروید نسبت به سایر ایموالتورها مانند نوکیا یا اپل این است که به تعداد نا محدودی میتوانید
ایموالتور داشته باشید.
در قسمت سمت راست بر روی دکمه Newکلیک کنید تا پنجره Create new Android Virtual Device – AVDباز
شود .مطابق شکل زیر اطالعات را وارد فیلدهای مربوطه کنید .در آخر بر روی دکمه Create AVDکلیک کنید.
انجمن برنامه نویسی اندروید p30droid.com
Nameنامی است دلخوا ه .به دلخواه خود یک نام انتخاب کنید .از آنجا که ممکن است به چند ماشین مجازی نیاز داشته باشید،
نامی انتخاب کنید که بعداً بتوانید تشخیص دهید چه ماشینی است و کدام سطح از APIرا قرار است پشتیبانی کند.
Targetدر این قسمت به ماشین مجازی میگویید کدام ورژن از اندروید با چه سطح APIی را شبیه سازی کند .دقت کنید اگر
برنامه ای برای ورژن ۲٫۲نوشته شود قابل اجرا بر روی ورژنهای پایینتر یا قبلی نیست .ولی مواظب باشید زرنگی نکنید ! (Target
را بر روی ۱٫۵تنظیم کنید) علت این است که برنامه هایی که برای ورژن ۱٫۵نوشته میشوند بصورت مناسبی در ورژنهای جدیدتر
نمایش داده نمی شوند چون در ورژن ۱٫۵اندازه صفحه نمایش کوچکتر است و در ورژنهای جدیدتر اندازه صفحه بیشتر شده است.
SD Cardهمانطور که از اسمش معلوم است حجم کارت جانبی را نشان میدهد .ممکن است بر روی موبایل کارتی با حجم
بیشتر از ۶۴مگا بایت داشته باشیم ولی نیازی نیست که بر روی ایموالتور هم همان را ذکر کنیم .علت این است که این فضا از
فضای کامپیوتر شما کسر میشود درصورتیکه برای اجرا و نصب یک برنامه هیچوقت به همچین فضایی نیاز ندارید.
Skin:اندازه یا سایز صفحه نمایش را مشخص میکند.
Hardware:اگر نیاز به قابلیت خاصی دارید (مثالً استفاده از سنسور شتاب دهنده) میتوانید با کلیک بر روی Newآنرا به لیست
اضافه کنید.
نکته :میتوانید به تعداد نامحدودی ماشین مجازی با مشخصات متفاوت داشته باشید و هر ماشین ،مشخصات مربوط به
یک نوع ورژن خاص را اجرا کند.
آشنایی با : ADB
ADBمخفف عبارت ) ( Android Debug Bridgeمیباشد،که به عنوان پل ارتباطی برای مدیریت دیوایس های اندرویدی
مورد استفاده قرار میگیرد .ADBیکی از امکانات ضروری است که هر برنامه نویسی اندرویدی حتما باید با این امکان آشنا شود.
در این آموزش بطور اجمالی به این موضوع پرداخته میشود و تعدادی از دستورات ADBرا اجرا میکنیم.
برای دستیابی به ADBباید به ریشه پوشه platform-toolsدر مسیر SDKبروید .اگر توجه کنید در آن مسیر فایلی به اسم
ADB.exeموجود میباشد ،اما زمانیکه آن را اجرا میکنیم بعد چند ثانیه بسته میشود.برای اجرا دستور cmdرا در Runوارد
کنید و به آن مسیر سوئیچ کنید
مثال:
دوره آموزشی برنامه نویسی اندروید
13
انجمن برنامه نویسی اندروید p30droid.com
لیستی از دستورات ضروری:
adb Devices
این دستور لیستی از دیوایس هایی که به آنها کانکت هستیم را نمایش میدهد:
کد :
adb devices
رستارت کردن ADB Server
اینکار باعث میشود که ADBرستارت شده و از ابتدا اجرا شود:
کد :
adb stop-server
adb start-server
دوره آموزشی برنامه نویسی اندروید
زبان برنامه نویسی جاوا
جاوا ): (Javaیک زبان برنامهنویسی شئگراست که برای اولین بار توسط جیمز گاسلینگ در شرکت سان مایکروسیستمز ایجاد
شد و در سال ۱۲۲۵به عنوان بخشی از سکوی جاوا منتشر شد .زبان جاوا شبیه به ++Cاست اما مدل شیءگرایی آسانتری دارد و
از قابلیتهای سطح پایین کمتری پشتیبانی میکند .یکی از قابلیتهای اصلی جاوا این است که مدیریت حافظه را بطور خودکار
انجام میدهد.
·این زبان باید ساده ،شیگرا و مشهور باشد .
·مطمئن و بدون خطا باشد .
·وابسته به معماری کامپیوتر نبوده و قابل انتقال باشد .
·باید با کارایی باال اجرا شود .
·باید به صورت پویا و نخکشیشده باشد.
دوره آموزشی برنامه نویسی اندروید
16
انجمن برنامه نویسی اندروید p30droid.com
JDKچیست؟
JDKکه مخفف عبارت Java Development Toolkitمی باشد ترکیبی از کامپایلر زبان جاوا ،کالس های کتابخانه ای (Java
)Class Librariesو JVMو فایل های راهنمای آنها می باشد .برای اینکه ما بتوانیم با استفاده از زبان برنامه نویسی جاوا ،برنامه
بنویسیم به این مجموعه نیاز داریم
توزیع های جاوا
شرکت سان میکروسیستم ۴ ،نوع ویرایش از کاربردهای مختلف جاوا را ارائه دادهاست:
Java card for smartcard
JavaME
JavaSE
JavaEE
متغیرها و انواع دادهها
یک متغیر ) (variableمکانیست در حافظه که میتوان مقادیری را در آن ذخیره کرد
انواع متغیرها در زبان جاوا:
•
متغیر کالس public
•
متغیر محلیprivate
نوع های داده ای
دوره آموزشی برنامه نویسی اندروید
17
انجمن برنامه نویسی اندروید p30droid.com
دستورات شرطی در جاوا به ۴دسته دستور تقسیم می شوند:
{)if (Condition
;statements
}
{else
;statements
}
حالت دوم:
{)if (num>3
;statements
}
دوره آموزشی برنامه نویسی اندروید
18
انجمن برنامه نویسی اندروید p30droid.com
{else
{)if(num<0
;statements
}
{else
;statements
}
}
-3در حالتی که تعداد این دستورات تو در توی ifزیاد باشد به دلیل اینکه از خوانایی برنامه می کاهد می توان از دستور switch
استفده نمود .قالب این دستور به شکل زیر است.
{)switch (variable
case value1:
;statements
;break
case value2:
;statements
;break
case value3:
;statements
;break
default:
;statements
;break
}
دوره آموزشی برنامه نویسی اندروید
19
انجمن برنامه نویسی اندروید p30droid.com
-4آخرین دستور شرطی در جاوا عملگری است که می تواند به جای دستور if elseتک دستوری قرار بگیرد.
;)Return value = (condition ? true_value : false_value
;int num
;num=3
;)int result = (num==3 ? 1: 2
دستورات حلقه و تکرار
دستورات حلقه و تکرار در جاوا به سه دستور کلی تبدیل می شوند.
While statement
for statement
do while statement
شکل کلی دستور whileبه این صورت می باشد.
{)while(condition
;statements
}
حلقه : For
{)for (initial_counter ; condition ; increment_counter
;statements
}
آخرین نوع دستورات تکرار در جاوا دستور do whileمی باشد .شکل کلی آن بصورت زیر است.
دوره آموزشی برنامه نویسی اندروید
20
انجمن برنامه نویسی اندروید p30droid.com
{do
;statements
;)while(condition
آرایه Array
هر آرایه arrayگروهی از متغیر های هم نوع است که ارجاع به آنها از طریق یک نام مشترک صورت می گیرد
در جاوا آرایه هایی از انواع مختلف را به صورت تک یا چند بعدی می توان ایجاد کرد
;]String[] names = new String[3
;"names[0] = “Android
;"names[1] = “IOS
;"names[2] = “Linux
کالس تاریخ و زمان Date
;)(Date date = new Date
;)(date.toString
;)(date.getDay
;)(date.getDate
دوره آموزشی برنامه نویسی اندروید
21
انجمن برنامه نویسی اندروید p30droid.com
;)(date.getHours
;)(date.getMinutes
;)(date.getMonth
;)(date.getSeconds
;)(date.getTime
بدست آوردن تاریخ جاری سیستم
;)"DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss
;)(Date date = new Date
;))System.out.println(dateFormat.format(date
مثال Current Date: Sun 2004.07.18 at 04:14:09 :
;) (Date dNow = new Date
;)" SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss
تابع ( ) Function
یک تابع مجموعه ای واحد از یکسری دستورالعمل است که در هر بار فراخوانی ،کل دستورات درون آن یکبار اجرا می شود .
قابلیت های تابع :
دستورات یک تابع ،تا زمانی که فراخوانی نشود ،اجرا نخواهد شد .از توابع برای تعریف دستور العمل هایی استفاده می شود که
می خواهیم اجرای آنها کنترل شده باشد و در مواقع معینی ( مثل وقوع یک رویداد یا ) ...انجام شود .
یک تابع را می توان از هر نقطه ای در صفحه فراخوانی کرد .
یک تابع می توان یکسری متغیرها را به عنوان پارامتر ورودی دریافت کرده و همچنین یک مقدار را به عنوان خروجی به نقطه ای
که از آن فراخوانی شده سات ،باز گردهند .
دوره آموزشی برنامه نویسی اندروید
22
انجمن برنامه نویسی اندروید p30droid.com
محدوده عملکرد توابع:
Publicدر تمامی کالس ها و پکیج ها
Privateفقط در کالس جاری
Protectedدر پکیج جاری و کالس های پکیج جاری
توابع تو در تو :توابعی هستند که دورن توابع دیگر اجرا میشوند
ایجاد تابع
{ )public static int funcName(int a, int b
// body
}
Publicمحدوده فعالیت
Intمقدار برگشتی تابع
funcNameنام تابع
Int a,int bپارامترهای تابع
فراخوانی تابع
;)funcName(a, b
;)int min= funcName(a, b
تمرین:یک تابع ایجاد میکنیم که کوچیکترین عدد را پیدا کند
{ )public static int minFunction(int n1, int n2
;int min
)if (n1 > n2
دوره آموزشی برنامه نویسی اندروید
23
انجمن برنامه نویسی اندروید p30droid.com
;min = n2
else
;min = n1
;return min
}
CLASS
بصورت ساده باید بگویم که کالس Classدر واقع یک الگو و یک قالب کلی برای تعریف کردن اشیاء است .بعبارت دیگر ،کالس ها
در واقع موجودیتی ندارند و خود آنها شی Objectنیستند ،بلکه در واقع یک الگو هستند که اشیاء بر اساس آن ساخته می شوند.
{public class name
//body
}
سازنده تابع constractor
معموال بعضی از اعضای کالس قبل از استفاده نیاز به مقداردهی دارند .این عمل توسط سازنده constractorانجام می گیرد که
به شیء این امکان را می دهد که هنگام ایجاد مقداردهی شود .سازنده تابعی است هم اسم کالس که وقتی یک نمونه از کالس
گرفته می شود اتوماتیک فراخوانی می شود.
تابع سازنده می تواند دارای پارامتر باشد بنابراین زمان ایجاد شیء می توان به متغیرهای عضو مقادیر اولیه داد .برای ارسال
آرگومان به تابع سازنده باید هنگام تعریف شیء مقدار آرگومان بعد از نام شیء درون پرانتز قرار گیرد.
یک کالس می تواند دارای چند سازنده با پارامترهای مختلف باشد .بهتر است همیشه حداقل یک سازنده حتی اگر خالی باشد
ساخته شود.
Encapsulation
هنگامی که یک کالس داریم و قصد دارید از آن در بقیه اکتیویتی ها استفاده کنیم یا newکار به آن
Encapsulationگفته میشود.
{public class EncapTest
دوره آموزشی برنامه نویسی اندروید
24
p30droid.com انجمن برنامه نویسی اندروید
private String name;
private int age;
public int getAge(){
return age;
}
public String getName()
{ return name;
}
public void setAge( int newAge)
{
age = newAge;
}
public void setName(String newName){
name = newName;
}
}
Inheritance ارث بری
extends یعنی اینکه بتوانیم از والد خود ارث بری کنیم و از کلیه توابع و کالس های زیر مجموعه آن استفاده کنید و با دستور
اینکار را انجام میدهیم
public class Animal{
//body
}
25
دوره آموزشی برنامه نویسی اندروید
p30droid.com انجمن برنامه نویسی اندروید
public class Dog extends Animal{
//body
}
)مثال
public class Parent{
public P1() {
System.out.println(“parent");
}
}
public class Child extends Parent{
public c1() {
System.out.println(“Child");
}
}
:فراخوانی
Child cobj=new Child();
cobj.c1();
cobj.p1();
Interfaces
کرد بدین صورت که نمی توان از آن شی ساخت وباید از آن در کالسnew یک کالس میباشد که نمی توان از آنInterfaces
های دیگر استفاده کرد
.شود تمام توابع آن باید حتما استفاده شوندimplements در یک کالس استفاده یاInterfaces وقتی از
26
دوره آموزشی برنامه نویسی اندروید
p30droid.com انجمن برنامه نویسی اندروید
public class Horse implements Animal{
interface Animal {
public void eat();
public void travel();
}
-----------------public class Horse implements Animal{
public void eat()
{
System.out.println("Mammal eats");
}
public void travel()
{
System.out.println("Mammal travels");
}
public int noOfLegs()
{
return 0;
}
:فراخوانی
27
دوره آموزشی برنامه نویسی اندروید
انجمن برنامه نویسی اندروید p30droid.com
;)( Horse m = new Horse
;)(m.eat
;)(m.travel
دوره آموزشی برنامه نویسی اندروید
28
انجمن برنامه نویسی اندروید p30droid.com
فصل سوم
Layoutدر اندروید
XMLچیست ؟
XMLمخفف عبارت ،Xtensible Markup Languageبه معنای زبان فرا متنی قابل توسعه است .
XMLبا هدف نگهداری و انتقال اطالعات طراحی شده است و نه برای نمایش آنها
تگ ها و نشانه های XMLاز قبل تعریف نشده اند ،بلکه کاربر بر حسب نیاز و کاری که می خواهد انجام دهد ،تگ های دلخواه
خود را ایجاد می کند
قوائد برنامه نویسی به زبان XML
-1تمام تگ ها باید تگ بسته داشته باشن
-2در XMLحرف کوچک و بزرگ با هم متفاوتند و تگ باز و بسته باید با یک نوع حروف از نظر بزرگی و کوچکی نوشته شوند
دوره آموزشی برنامه نویسی اندروید
29
انجمن برنامه نویسی اندروید p30droid.com
مثال
دو تگ زیر با هم فرق دارن
><Message>This is correct</Message
><message>This is incorrect</Message
-3همانطور که در HTMLترتیب بستن تگ های باز شده مهم است در XMLهم مهم است
-4تمام برنامه های XMLباید یک تگ ریشه داشته باشند که تمام تگ های دیگر درون ان قرار گیرد .نام تگ ریشه مانند تمام
تگ های دیگه اختیاری است
-5برخی کاراکترها در XMLدارای معنای خاصی هستن
><note
><to>katy</to
><from>john</from
><heading>Reminder</heading
><body>Don't forget me this weekend!</body
></note
دوره آموزشی برنامه نویسی اندروید
30
p30droid.com انجمن برنامه نویسی اندروید
در اندرویدLayout
نوشته میشودxml که با زبانLayout هنگامی که قصد داریم که اکتیویتی را ایجاد کنیم و ظاهر آن را طراحی کنیم باید با
.اینکار را انجام دهیم
: هاlayout لیست
LinearLayout
•
RelativeLayout
•
TableLayout
•
ScrollView
•
GridLayout
•
FrameLayout
•
Other(ListView,GridView,Webview)
•
LinearLayout -1
. عمل میکند که ویجت ها بصورت خطی و به صورت عمودی یا افقی قرار می گیرندBox بصورت یکLayout این
orientation,: vertical,Horizontal
•fill model, Wrap_content,Fill_parent
•weight,
•gravity,
•padding ,
•margin
Relative Layout
. بصورت نسبی عمل میکند و باید ویجت ها را براساس فاصله از هم قرار دادlayout این مدل
:به مثال توجه کنید
34
دوره آموزشی برنامه نویسی اندروید
انجمن برنامه نویسی اندروید p30droid.com
Aدر باالترین سطح قرار دارد
Cزیر Aقرار دارد و سمت راست
Bزیر Aقرار دارد و سمت چپ Bقرار دارد
دوره آموزشی برنامه نویسی اندروید
35
انجمن برنامه نویسی اندروید p30droid.com
فصل چهارم
برنامه نویسی اندروید ( ) Android Programming
Activity
هر اکتیویتی یک کامپوننت از برنامه میباشد که صفحه نمایش را در اختیار میگیرد تا کاربران بتوانند با برنامه ارتباط interact
برقرار کنند
هر اپلیکیشنی معموال از چندین اکتیویتی تشکیل میشود که با هم در ارتباط هستند.به طور معمول هر برنامه ای یک اکتیویتی
اصلی دارد که نقطه اغاز برنامه میباشد
برای ساخت یک اکتیویتی ،باید یک زیر کالس از Activityبسازید :
)(onCreate
بصورت اجباری باید این متد را اجرا کنید .سیستم این متد را زمانیکه درحال ساخت اکتیویتی است ،صدا میزند .درحین اجرا ،شما
میبایست کامپوننت هایی را که در اکتیویتان معرفی کرده اید ،مقدار دهی ( )initializeکنید .از همه مهمتر ،اینجا محلی است که
متد
دوره آموزشی برنامه نویسی اندروید
37
انجمن برنامه نویسی اندروید p30droid.com
setContentView
بمنظور اجرا و ساخت واسط گرافیکی و کاربری برای این اکتیویتی ،میبایست معرفی شود.
onPause() :
سیستم زمانی این متد را اجرا میکند که کاربر در حال ترک این اکتیویتی است
مثال) اینجا جایی است که معموالً باید تغییرات مهم مانند قطع موزیک ،اجرا شود
اجرای واسط کاربری user interface
واسط کاربری در یک اکتیویتی از مجموعه ای از viewها تشکیل میشود .
هر viewمحیط مستطیل شکل خودش را در داخل اکتیویتی کنترل میکند و میتواند به درخواست کاربر پاسخ دهد .بعنوان
مثال ،یک viewممکن است دکمه ای buttonباشد که وقتی کاربر آنرا لمس کرد ،یک عملی را اجرا کند.
بمنظور استفاده از اکتیویتی در برنامه ،قبل از هرچیز اکتیویتی باید به سیستم معرفی شود .برای این منظور ،فایل مانیفست برنامه
را باز کنید و المان ><activityرا بعنوان فرزند childالمان ><applicationقرار دهید .بعنوان مثال:
چندین و چند خصوصیت دیگر هم هستند که میتوانید به المانها اعمال کنید ،مانند قرار دادن برچسب labelبرای اکتیویتی ،قرار
دادن آیکون برای برنامه و ایجاد استایل برای واسط کاربری اکتیویتی.
دوره آموزشی برنامه نویسی اندروید
38
انجمن برنامه نویسی اندروید p30droid.com
بررسی چند واژه مهم اندروید
اصل و اساس برنامه نویسی اندروید بر پایه جاوا است .در این بین چندین و چند واژه وجود دارد که مختص خود اندروید است و در
جاوا تعریف نشده است .از آنجا که – بعضی اوقات – یادگیری واژگان جدید باعث اعصاب خوردی! می شوند ،تصمیم دارم به زبان
ساده و خیلی مختصر مهمترین آنها را توضیح دهم .بدیهی است از آنجا که متن کامالً تخصصی است منظور از زبان ساده ،سادگی
درک برای عموم افراد نیست بلکه منظور برنامه نویسان است.
اکتیویتی ها)(Activities
اکتیویتی ،واسط گرافیکی است که کل صفحه نمایشگر را در اختیار بگیرد .اکتیویتی میتواند از چندین Viewتشکیل شده باشد
یا به UIعملکرد مورد نیازش را بدهد .بعنوان مثال برنامه ارسال ایمیل .میتواند شامل دو اکتیویتی باشد .یکی شامل تمامی ایمیل
هایی که دریافت کرده ایم ،دیگری اکتیویتی که شامل محیط نوشتن ایمیل و ارسال آن باشد .هر دو اکتیوی به هم مربوط می
باشند ولی عملکرد آنها کامالً مستقل از یکدیگر است.
سرویس ها)(Services
یک سرویس در بک گراند ) (backgroundاجرا میشود و UIیا واسط کاربری ندارد .مثالی برای سرویس ها اطالعی
)(notificationاست که بوسیله زنگ و روشن شدن صفحه نمایشگر در زمان دریافت SMSیا ایمیل و یا زمانیکه کسی با ما
تماس میگیرد ،ارسال میشود.
Content providersتامین کنندگان محتوا
از طریق Content providerها دسترسی به تمامی اطالعات ذخیره شده در گوشی –توسط برنامه های دیگر و یا برنامه ای که
ما مینویسیم – امکان پذیر است .برای اینکه سایر برنامه ها بتوانند به اطالعات دسترسی داشته باشند ،معموالً اطالعات در فایل ها
یا دیتابیس ذخیره میشوند.
Layoutظاهر
Layoutها شامل المانهای طراحی واسط کاربری هستند .هر زمانیکه یک فایل XMLبرای واسط کاربری ایجاد میکنیم ،نیاز
به Layoutداریم تا طراحی ما را در خودش نگه دارد .در مورد Layoutها در نوشته های بعدی شرح ییشتری خواهم داد .پنج
نوع Layoutمختلف داریم که حتی میتوانند تو در تو بکار گرفته شوند.
View
Viewیک عضو مستقل ) (single objectدر واسط کاربری است . Viewدر داخل Layoutقرار میگیرد و از ترکیب View
ها ساده ترین تا پیچیده ترین واسط های گرافیکی و غیر گرافیکی کاربری ساخته میشود .بعنوان مثال ،برچسب )(Labelیک نوع
دوره آموزشی برنامه نویسی اندروید
39
انجمن برنامه نویسی اندروید p30droid.com
Viewاست .اندروید این قابلیت را دارد که ما طرحهای گرافیکی خود را بر اساس XMLتولید کنیم و در قسمت کد صرفاً به
عملکرد )(functionalityبرنامه بپردازیم و بدین سبب از پیچیدگی برنامه بکاهیم.
اتفاقات )(Events
Eventها اتفاقاتی هستند مانند کلیک کردن یا لمس کردن ،که برای دریافت این اتفاقات متد Listenerآن اتفاق باید تعریف
شود . Eventاتفاقی است که از بیرون رخ میدهد؛ چیزی است که کنترل آن دست ما نیست؛ یا حتی چیزیست که ما نمیدانیم
کی اتفاق میافتد .بدین منظور کنترلر های اتفاق )(Events controllersمورد استفاده قرار میگیرند .این امکان وجود دارد که
برای هر اتفاقی که رخ میدهد به سیستم بگوییم که چه کاری انجام دهد .معمول ترین اتفاق دریافت لمس صفحه نمایشگر است که
برای دریافت آن Listenerمورد نیاز باید تنظیم شود.
منابع )(Resources
منابع ،المانهای خارجی هستند که ما در برنامه خود بکار میگیریم .آنها در فولدر ” “resذخیره میشوند و میتوانند فایلهای
تصویری ،صوتی مانند عکس ،فیلم ،انیمیشن و موزیک باشند .همچنین فایلهای XMLکه شامل طراحی های پوسته ،واسط
کاربری و تم ها هستند ،در این پوشه ذخیره میشوند .وقتی عملیات کامپایل انجام میشود ،آنها بطور کامل از طریق کدهای جاوا
قابل دسترسی هستند.
دسترسی و ساماندهی منابع اندروید
آیتمهای خیلی زیادی وجود دارند که شما برای ساختن یک نرمافزار خوب برای اندروید از آنها استفاده میکنید .شما به غیر از
برنامهنویسی برای ساخت نرم افزار ،منابع مختلف دیگر مانند محتوای استاتیک (ثابت) از قبیل بیتمپها ،رنگها ،تعاریف
صفحهآرایی ،سری ابزار تعاملی کنترل صفحه برای کاربر ،آموزشهای انیمیشن و خیلی از این قبیل که کدهای شما استفاده
میکنند ،در نظر میگیرید.
این منابع همیشه به صورت مجزا در زیرشاخههای گوناگونی تحت عنوان شاخه res/پروژه محفوظ هستند.
این آموزش به شما توضیح خواهد داد که چگونه شما میتوانید منابع نرمافزار خود را ساماندهی کنید ،منابع دیگر برای آن تعیین
نمایید و به این منابع در نرمافزارهای خود دسترسی داشته باشید.
ساماندهی منابع
دوره آموزشی برنامه نویسی اندروید
40
انجمن برنامه نویسی اندروید p30droid.com
شما باید هر نوع از منبع را در یک زیرشاخه خاص از شاخه res/در پروژه خود قرار دهید .برای مثال ،اینجا یک سلسله فایل برای
یک پروژه ساده است:
شاخه res/شامل تمام منابع در زیرشاخههای گوناگون است .در اینجا ما یک منبع تصویر ،دو منبع صفحهآرایی و یک رشته فایل
داریم .جدول زیر جزئیاتی درباره منبع شاخههای پشتیبانى شده در داخل پروژه شاخه res/به ما ارائه میدهد.
نوع منبع
فایلهای XMLکه ویژگی انیمیشنها را مشخص میکنند در پوشه res/anim/ذخیره شده هستند و در رده
R.animقابلیت دسترسی دارند.
شاخه
anim/
فایلهای XMLکه وضعیت رنگها را مشخص میکنند در پوشه res/ colorذخیره شده هستند و در رده color/
R.colorقابلیت دسترسی دارند.
فایلهای تصویری مانند png, .jpg, .gifیا فایلهای XMLکه در بیتمپها جمع شدهاند ،لیستها ،شکلها و drawable/
قابلیت ترسیم انیمیشن را بیان میکنند .آنها در پوشه res/drawable/ذخیره شدهاند و و در رده
R.drawableقابلیت دسترسی دارند.
فایلهای XMLکه میانجی صفحهآرایی یک کاربر را مشخص میکنند ،در پوشه res/layout/ذخیره هستند و layout/
از طریق دسته R.layoutقابلیت دسترسی دارند.
فایلهای XMLاز قبیل منوی گزینهها ،منوی متن یا منو فرعی که منوهای نرمافزار را مشخص میکنند در پوشه menu/
در پوشه res/menu/ذخیره هستند و از طریق دسته R.menuقابلیت دسترسی دارند.
فایل های دلخواه برای ذخیره در شکل خام آنها .شما برای باز کردن چنین فایلهای خامی به فراخوانی raw/
)( Resources.openRawResourceبا هویت منبع ،که R.raw.filenameاست ،احتیاج دارید.
فایلهای XMLاز قبیل رشتهها ،اعداد صحیح و رنگها که شامل ارزشهای ساده هستند .برای مثال ،در اینجا
بعضی اسم فایل قراردادی برای منابع وجود دارند که شما میتوانید در این شاخه ایجاد کنید:
:arrays.xmlبرای آرایه های منابع و قابل دسترس از دسته .R.array
:integers.xmlبرای اعداد صحیح منبع و قابل دسترس از دسته .R.integer
:bools.xmlبرای عملگرهای منطقی منبع و قابل دسترس از دسته .R.bool
:colors.xmlبرای ارزشهای رنگ و قابل دسترس از دسته . R.color
:dimens.xmlبرای ارزشهای بُعد و قابل دسترس از دسته .R.dimen
: strings.xmlبرای ارزشهای رشته و قابل دسترس از دسته . R.string
:styles.xmlبرای سبکها و قابل دسترس از دسته . R.style
فایلهای دلخواه XMLکه میتوانند در زمان اجرا با فراخوانی )( Resources.getXMLخوانده شوند .شما
میتوانید فایلهای پیکربندی مختلفی را در اینجا ذخیره کنید که در زمان اجرا استفاده خواهند شد.
دوره آموزشی برنامه نویسی اندروید
values/
xml/
41
انجمن برنامه نویسی اندروید p30droid.com
منابع جایگزین
نرم افزار شما باید منایع جایگزین برای پشتیبانی تنظیمات دستگاه خاص فراهم کند .برای مثال ،شما باید منابع جایگزین قابل
ترسیم (تصاویر) برای صفحه نمایش با وضوح مختلف و منابع جایگزین رشته برای زبانهای مختلف در نظر بگیرید .در زمان اجرا،
اندروید تنظیمات دستگاه موجود را نشان میدهد و منابع مناسب را برای نرمافزار شما بارگذاری میکند.
برای مشخص کردن گزینه های پیکربندی خاص برای مجموعهای از منابع ،مراحل زیر را دنبال کنید:
یک شاخه جدید در res/ namedدر قالب > <resources_name>-<config_qualifierایجاد کنید .در
اینجا resources_nameهر کدام از منابع ذکر شده در جدول باال ،مانند صفحهآرایی ،قابل ترسیم و غیره خواهد بود.
توصیفکننده ( ،)qualifierیک پیکربندی شخصی برای منابعی که قرار است استفاده شوند مشخص خواهد کرد .شما
میتوانید اسناد رسمی را برای یک لیست کامل از توصیفکنندهها برای انواع مختلف منابع بررسی کنید.
منابع جایگزین مربوطه را دراین شاخه جدید ذخیره کنید .فایلهای منبع باید به دقیقاً مشابه فایلهای پیشفرض که در
مثال زیر نشانداده شدهاند نامگذاری شوند ،اما این فایلها محتوای خاصی برای جایگزین خواهند داشت .برای مثال،
اگرچه نام فایل تصویر مشابه خواهد بود اما برای صفحه نمایش ،وضوح آن باال خواهد بود.
در زیر یک مثال که تصاویر را برای صفحه نمایش پیش فرض و تصاویر جایگزین را برای صفحه نمایش با وضوح باال مشخص
میکند وجود دارد:
MyProject/
src/
MyActivity.java
res/
drawable/
icon.png
background.png
drawable-hdpi/
icon.png
background.png
layout/
activity_main.xml
info.xml
values/
strings.xml
در زیر یک مثال دیگر که صفحهآرایی را برای زبان پیش فرض و صفحهآرایی جایگزین را برای زبان عربی مشخص میکند وجود
دارد:
MyProject/
src/
MyActivity.java
دوره آموزشی برنامه نویسی اندروید
دسترسی منابع
در جریان ارتقا نرمافزار ،شما احتیاج به دسترسی به منابع مشخص در کدتان یا در فایلهای صفحهآرایی XMLخواهید داشت.
بخش بعدی ،چگونگی دسترسی به منابعتان در هر دو زمینه را توضیح میدهد.
منابع دسترسی در کد
هنگامی که نرمافزار آندروید شما ساخته شد ،یک طبقه Rتولید میشود که شامل شناسههای منبع برای تمام منابع قابل دسترس
در شاخه res/شما است .شما میتوانید از طبقه Rبرای دسترسی به منبعی که از زیرشاخه استفاده میکند و نام منبع یا به طور
مستقیم شناسه منبع استفاده کنید.
مثال:
برای دسترسی به res/drawable/myimage.pngو وارد کردن یک ImageViewشما از کد زیر استفاده خواهید کرد:
)ImageView imageView = (ImageView
;)findViewById(R.id.myimageview
;)imageView.setImageResource(R.drawable.myimage
دوره آموزشی برنامه نویسی اندروید
43
p30droid.com انجمن برنامه نویسی اندروید
در یکmyimageview مشخص با شناسهImageView استفاده میکند تاR.id.myimageview از،در اینجا خط اول کد
کهmyimage استفاده میکند تا یک تصویر با نامR.drawable.myimage از، خط دوم کد.فایل صفحهآرایی به دست آورد
. است به دست آورد/res قابل دسترس در زیرشاخه قابل ترسیم زیر
:مثال
: تعریف زیر را دارد توجه کنیدres/values/strings.xml جایی که، به مثال بعدی
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello, World!</string>
</resources>
: مانند زیر وارد کنید، با استفاده از یک شناسه منبعmsg مقصود با شناسهTextView اکنون شما میتوانید متن را روی
TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello);
:مثال
: با تعریف زیر در نظر بگیریدres/layout/activity_main.xml یک صفحهآرایی
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
</LinearLayout>
: مانند زیر بارگذاری خواهد کردonCreate() در روش،این کد نرمافزار این صفحهآرایی را برای یک فعالیت
دسترسی منابع در XML
به منبع فایل res/values/strings.xml XMLزیر که شامل یک منبع رنگ و یک منبع رشته است توجه کنید:
>?"<?xml version="1.0" encoding="utf-8
><resources
><color name="opaque_red">#f00</color
><string name="hello">Hello!</string
></resources
اکنون شما میتوانید این منابع را در فایل صفحهآرایی بعدی برای وارد کردن رنگ متن و رشته متن مانند زیر استفاده کنید:
>?"<?xml version="1.0" encoding="utf-8
<EditText
"xmlns:android="http://schemas.android.com/apk/res/android
"android:layout_width="fill_parent
"android:layout_height="fill_parent
"android:textColor="@color/opaque_red
>android:text="@string/hello" /
لیست ویوListview :
ListViewدر حالت استاندارد به صورت یک لیست متنی میباشد .که اطالعات را بصورت آرایه ای میسازد.لیست ویو بطور وفور
در بیشتر برنامه های اندرویدی یافت میشود مثال لیست شماره تلفن ها ،تماسها و غیره ،قرار میگیرد.
برای شروع به مثال ساده زیر توجه کنید:
در این مثال قصد داریم یک لیست ساده بسازیم که لیست ماه های میالدی را نمایش دهد
مرحله ) 1ابتدا باید در فایل main.xmlخود ویجت لیست ویو را قرار دهیم.
کد :
دوره آموزشی برنامه نویسی اندروید
45
p30droid.com انجمن برنامه نویسی اندروید
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/mainListView">
</ListView>
</LinearLayout>
. )برای نمایش لیست باید به اکتیویتی اصلی که قرار است لیست مربوطه فراخونی شود مراجعه کنیم و لیست را بسازیم2 مرحله
ابتدا باید ارایه خود را تعریف کنیم1: کد
String[] monthsArray = { "JAN", "FEB", "MAR", "APR", "MAY",
"JUNE", "JULY",
"AUG", "SEPT", "OCT", "NOV", "DEC" };
:لیست ویو را تعریف کنیم2: کد
private ListView monthsListView;
: ایجاد میکنیمArraylist یک متغیر سراسری از نوع3: کد
private ArrayAdapter arrayAdapter;
:در مرحله آخر لیست را میسازیم4: کد
arrayAdapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1, monthsArray);
monthsListView.setAdapter(arrayAdapter);
47
دوره آموزشی برنامه نویسی اندروید
p30droid.com انجمن برنامه نویسی اندروید
منوها در اندروید
:در اندروید چند نوع منو وجود دارد
1- Option Menu :
.این منو در بیشتر برنامه های کاربردی وجود دارد و یکی از الزامات اپلیکیشن های موبایل میباشد
:تصویر نمونه زیر یک مثال را نمایش میدهد
:برای ایجاد منو باید کارهای زیر انجام شود
انتخاب کنید تاSource->override/implements Methiods را از منویonCreateOptionsMenu باید تابع1-1 :
.تابع مربوطه اضافه گردد
گزینه منو را اضافه می کنیم0 برای مثال
: کد
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(1,searchBtnId ,searchBtnId,"Search");
menu.add(2,scheduleBtnId ,scheduleBtnId,"List Chanell");
menu.add(group2Id,playBtnId ,playBtnId,"Play");
menu.add(group2Id,stopBtnId ,stopBtnId,"test2");
// the following line will hide search
// when we turn the 2nd parameter to false
menu.setGroupVisible(1, false);
return super.onCreateOptionsMenu(menu);
}
: کار مورد نظر را انجام بده،بعد نوبت به این است که وقتی رو گزینه مورد نظر کلیک شد1-2 :
انتخاب کنید و گزینه را انتخاب کنیدSource->override/implements Methiods برای اینکار نیز از منوی
.تا تابع مربوطه اضافه گرددonOptionsItemSelected
: کد
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch(item.getItemId())
{
case 1:
Toast.makeText (getApplicationContext(),"TV 2" ,
Toast.LENGTH_LONG).show ();
break;
case 2:
48
دوره آموزشی برنامه نویسی اندروید
p30droid.com انجمن برنامه نویسی اندروید
final Intent intent1 = new Intent(this,
HomeActivity.class);
startActivity(intent1);
break;
case 3:
//txt.setText("you clicked on item "+item.getTitle());
break;
}
return super.onOptionsItemSelected(item);
}
:برای افزودن ایکن نیز به منو باید
: کد
menu.add(1, 1, 0, "Blu-Ray").setIcon(R.drawable.bluray);
:ساخت دیالوگ سفارشی
ک دیالوگ یک ابزار آماده هست تو تمام اکتیویتی ها
( ساخته می شوند و مقداری رو بر میگردانندonCreateDialog(int دیالوگ ها با دستور
اغلب از مدیریت پیش فرض در دیالوگ استفاده میکنیم و حالت دیالوگ و تم اون داخل اکتیویتی ثابت می مانند
( برمیگردونه و شما شئ دیالوگ فراخوانی می کنیدonCreateDialog(int یک دیالوگ اولین دفعه
( اسفاده میکنیم و یک عدد رو ارسال میکنیدshowDialog(int واسه نشون دادن دیالوگ از دستور
دیالوگ و واحد کردن شناسه استفاده می کنیمid این عدد جهت واحد کردن
package com.objectechenica.ui;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
49
دوره آموزشی برنامه نویسی اندروید
p30droid.com انجمن برنامه نویسی اندروید
import android.widget.Button;
import android.widget.Toast;
public class DialogActivity extends Activity {
// Constant for identifying the dialog
private static final int DIALOG_ALERT = 10;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
p30droid.com انجمن برنامه نویسی اندروید
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_ALERT:
Builder builder = new AlertDialog.Builder(this);
builder.setMessage("This will end the activity");
builder.setCancelable(true);
builder.setPositiveButton("I agree", new OkOnClickListener());
builder.setNegativeButton("No, no", new CancelOnClickListener());
AlertDialog dialog = builder.create();
dialog.show();
}
return super.onCreateDialog(id);
}
private final class CancelOnClickListener implements
DialogInterface.OnClickListener {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "Activity will continue", Toast.LENGTH_LONG).show();
}
}
private final class OkOnClickListener implements
DialogInterface.OnClickListener {
public void onClick(DialogInterface dialog, int which) {
51
دوره آموزشی برنامه نویسی اندروید
p30droid.com انجمن برنامه نویسی اندروید
Toast.makeText(getApplicationContext(), "I was just kidding", Toast.LENGTH_LONG).show();
}
}
}
52
دوره آموزشی برنامه نویسی اندروید
انجمن برنامه نویسی اندروید p30droid.com
SharedPreferencesدر اندروید
دوستان فرض کنید در برنامه خود قابلیت تعیین اندازه فونت توسط کاربر در نظر گرفته شده است ،پس بنابراین شما باید اندازه
فونت و یا نوع فونت را که کاربر در نظر گرفته است را ذخیره نمایید تا با اجرای دوباره برنامه تغیرات اعمال گردیده باشد و تغییرات
را حفظ نماید
برای این کار روشهای مختلفی وجود دارد:
میتونید اطالعات را در یک فایل ذخیره کنید که این روش پیشنهاد نمیشه چون دردسر های خاص خودشو داره از جمله نوشتن در
فایل ،خواندن از فایل و ...که اگه تعداد تنظیمات برنامه زیاد بشه کار مطلوبی به نظر نمیاد
راه دوم استفاده از بانک اطالعاتی میباشد که استفاده از این روش بهتر از روش قبل میباشد ولی میتوانید از یک حافظه موقت برای
اینکار استفاده کنید.
با استفاده از SharedPreferencesمیتونید بدین صورت مقادیر رو ذخیره کنید
در تکه کدی که ضمیمه گردیده است یک EditTextرو قرار دادایم که با زدن کلید setاین مقدار ذخیره میشه و با هر بار اجرای
این برنامه مقار Setشده نمایش داده میشه
;package com.example.sharedpreferences
انجمن برنامه نویسی اندروید p30droid.com
تفاوت واحدهای اندازه گیری (px,inو )...در اندروید؟
px :واحد پیکسل و وابسته به تعداد پیکسل های نمایشگر
in :واحد اینچ مبتنی بر اندازه فیزیکی نمایشگر
mm :واحد میلیمتر مبتنی بر اندازه فیزیکی نمایشگر
pt :واحد نقطه برابر با 72/1یک اینچ و مبتنی بر اندازه فیزیکی نمایشگر
dpi :چگالی صفحه نمایش،یعنی مقدار نسبت پیکسل ها به مساحت فیزیکی صفحه نمایش
dp :پیکسل های چگال و مستقل )(Density-independent Pixelsیک واحد انتزاعی مبتنی بر چگالی صفحه نمایش.این
واحد متناسب با تعداد پیکسل ها در نمایشگر با چگالی 163است.بنابراین یک dpدر یک نمایشگر با چگالی 163در واقع یک
پیکسل است و در یک نمایشگر با چگالی ،023دو پیکسل می باشد.دقت کنید که گاه به جای dpاز( dipمختصر Device
)Independent Pixelsهم استفاده می شود.ولی در واقع هر دو یک مفهوم دارند(.منبع)
در کل فرمول
|(px = dp * (dpi / 160
رابطه بین px,dpو dpiرا نشان می دهد.بهترین گزینه برای طراحی واسط کاربر )(UIاستفاده از واحد dpاست که نمایش
متناسب با نمایشگرهای مختلف با چگالی های متفاوت را تضمین می کند.
spو sip :چیزی شبیه به dpاست و برای مشخص کردن اندازه قلم به کار می رود.ولی با این تفاوت که با تنظیمات اندازه
قلم ) (font sizeکاربر نیز هماهنگ است در نتیجه خروجی،متناسب با چگالی نمایشگر و اندازه قلم تنظیم شده توسط کاربر
خواهد بود .
در مجموع استفاده از dpو spبه طور موکد توصیه شده است زیرا باعث می شود برنامه شما در گوشی های مختلف دارای تناسب
اندازه یکسانی باشد(چه اندازه کنترل ها و چه اندازه متن) و همچنین در صورتی که اندازه قلم توسط کاربر در دستگاه تغییر
کند،تغییرات در برنامه نیز اعمال می شود .
استفاده از قابلیت لرزش دستگاه
برای استفاده از حالت لرزش دستگاه باید از توابع زیراستفاده نمود:
در ابتدا باید مجوزی در مانیفست درخواست شود
کد :
><uses-permission android:name="android.permission.VIBRATE" /
پس از آن استفاده از لرزاننده دستگاه ،فقط سرویسی دیگر از سیستم اندروید است که توسط چارچوب فراهم می شود .این کار می
تواند توسط VIBRATorانجام شود:
کد :
)(Vibrator v = (Vibrator
getSystemService(Context.VIBRATOR_SERVICE
با یک نمونه VIBRATorتنها متد ()Vibratorرا برای آغاز لرزش دستگاه فراخوانی کنید
دوره آموزشی برنامه نویسی اندروید
56
p30droid.com انجمن برنامه نویسی اندروید
(v.vibrate(300
در اندرویدnotification ساخت
.یک راه خوب برای مطلع سازی کابر در مورد عملیات خاصی(مثل آپدیت برنامه ) هستstatus bar notification
.پروژه جدیدی ایجاد کنید
قرار دهیدxmlکد زیر را در فایل
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity> "
< TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="notification in android>/ "
کد زیر را در فایلjava قرار دهید.
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity{
58
دوره آموزشی برنامه نویسی اندروید
p30droid.com انجمن برنامه نویسی اندروید
private static final int NOTIFICATION_ID = 1;
@ Override
public void onCreate(Bundle savedInstanceState{ )
super.onCreate(savedInstanceState;)
setContentView(R.layout.activity_main;)
notification تعریف تنظیمات برای
int icon = R.drawable.ic_launcher;
آدرس آیکن موردنظر جهت نمایش در استاتوس بار
CharSequence tickerText = "This is a sample notification;"
long when = System.currentTimeMillis;)(
Context context = getApplicationContext;)(
CharSequence contentTitle = "Sample notification;"
CharSequence contentText = "This notification has been generated as a result of button click;".
Intent notificationIntent = new Intent(this, MainActivity.class;)
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0;)
با استفاده از تنظیمات باالNotification مقداردهی اولیه
در اندروید 4روش برای ذخیره اطالعات وجود دارد:
1- Shared preferences
2- Sqlite Databases
3- Content Provider
4- Files
که بیشتر بر روی ) Sqlite(http://www.sqlite.orgکار خواهیم کرد و بقیه را در آموزش های بعدی معرفی خواهم کرد،بحث
دیتابیس بدلیل گستردگی ،نمی توان در یک آموزش بیشتر مباحث را شرح داد پس مرحله به مرحله پیش می رویم و در مرحله
اول با ساختار دیتابیس و پیشنیازهای اولیه کار خواهیم کرد.
دیتابیسSqlite :
Sqliteیک موتور دیتابیسی کوچک ولی قوی بود که توسط دکتر ریچارد هیپ در سال 2000میالدی ایجاد شد . Sqliteابتدا
توسط اپل برای ، iphoneموبایل های ،Symbianموزیال فایرفاکس ،Mac OS X ،Adobe Air ،PHP ،Skype ،
Solariesو بیشتر محیط های برنامه نویسی دیگر نیز استفاده می شد.که در اندروید نیز از همین دیتابیس استفاده خواهد شد.
برای مدیریت دیتابیس sqliteباید از برنامه های زیر استفاده کنید:
1- SqliteAdmin
2- sqliteBrowser
3یک ADD-ONS Mozillaبه نام SQLite Manager4-و. . .
بیشتر این ایتم های بررسی خواهند شد و مثال های کاربردی نیز ارائه خواهد شد و برای شروع با متدها و کالس های دیتابیس
آشنا خواهیم شد.
چگونه دیتابیس را باز کنیمروش اول)
کد:
(public staticSQLiteDatabase.openDatabase
)Stringpath, SQLiteDatabase.CursorFactoryfactory, intflags
دوره آموزشی برنامه نویسی اندروید
62
انجمن برنامه نویسی اندروید p30droid.com
پارامتر ها :
: Pathمسیر دیتابیس
: Factoryیک متد اختیاری برای وقتی که Cursorیک شرط را فراخوانی می کند استفاده می شود( cursorبعدا بررسی
خواهد شد)
: Flagsبرای کنترل کردن حالت دسترسی به دیتابیس
که سه حالت دارد :
مثال ) 1ایجاد کردن دیتابیس : Sqlite
شرح کدها :
ابتدا باید یک متغیر از نوع SQLiteDatabaseبا اسم dbبصورت عمومی اعالن کنیم ،تا بتوانیم در قسمت های دیگر کالس
ازش استفاده کنیم.
سپس در متد OnCreateباید دیتابیس باز کنیم( دیتابیس که قبال وجود دارد) اگر وجود نداشت آنرا ایجاد خواهد کرد.
ارگومان
"/"data/data/cis493.sqldatabases/myfriendsDB
مسیر دیتابیس را که با نام myfriendsDBایجاد کرده ایم را باز می کند .و پوشه های dataکه آمده ،برای این است که در
حین اجرای برنامه در آن مسیر قرار گرفته.برای دستیابی به این مسیر در ایکلیپس باید آیکن DDMSرا که در باالی برنامه قرار
دارد را انتخاب کرده ،سپس در کادر باز شده روی تب File Exploreeرفته و می توانید مسیر را مانند نمونه باال پیدا کنید که
باید در مسیر dataنام پروژه خود را انتخاب و سپس در پوشه databaseنام دیتابیس قرار داده شده را مشاهده کنید.
دوره آموزشی برنامه نویسی اندروید
63
انجمن برنامه نویسی اندروید p30droid.com
متد : ;)(db.closeبستن دیتابیسروش دوم) روش دوم برای بازکردن /ایجاد کردن دیتابیس در داخل برنامه بصورت زیر میباشد
اجرای دستورات :بعد از اینکه دیتابیس باز/ایجاد شد ،می توان روی دیتابیس اعمال :ایجاد جداول،حذف جداول ،افزودن اطالعات و ...قابل انجام
خواهد بود.
-1ایجاد جدول :
کال برای کار با sqliteباید با زبان sqlآشنایی کافی داشته باشید.برای ایجاد جدول مانند زیر از دستور :
استفاده می کنیم.این دستور یک جدول با نام tblAMIGOرا که دارای سه فیلد میباشد ایجاد می کند.
نوشتن دستور در برنامه نویسی :
کد:
("db.execSQL("create table tblAMIGO
integer PRIMARY KEY autoincrement" ,
دوره آموزشی برنامه نویسی اندروید
شی dbرا قبال ایجاد کرده ایم و توسط متد execSQLمی توان دستورات sqlرا نوشت.از این متد برای اجرای دستور استفاده
می شود.
-2افزودن اطالعات :برای این کار دقیقا مانند مثال باال عمل می کنید و دستور insertرا اجرا می کنید :
' );" );db.execSQL( "insert into tblAMIGO(name, phone) values ('AAA', '555
این خط باعث افزودن یک رکورد اطالعاتی به جدول مربوطه می شود .که فیلد اول بصورت یکتا میباشد ،فیلد دوم AAAو فیلد
سوم 555در آن قرار می گیرد.
مثال های زیر هم :
' );" );db.execSQL( "insert into tblAMIGO(name, phone) values ('BBB', '777
' );" );db.execSQL( "insert into tblAMIGO(name, phone) values ('CCC', '999
دو رکورد در آن قرار می دهند.
** برای افزودن اطالعات به جدول مثال یک اطالعات خاصی که کابر وارد کند باید یک textviewرا تعریف کرد و در دستور
' );" );db.execSQL( "insert into tblAMIGO(name, phone) values (t1.getText(), '777
اصالعات آن را در فیلد مربوطه قرار داد.
فیلدهای پشتیبان کننده : Sqlite
text,varchar, integer, float, numeric, date, time, timestamp, blob, boolean
که بیشترشون مشخص هستند و نیاز به توضیح خاصی در مورد کاربردشون نیست.
بهتره همیشه موقعی که دستورات نوشته بشه درون یک try /catchنوشته بشه و برنامه crashنکنه و بتونید برنامه را مدیریت
کنید تا از بروز خطا و خروج از برنامه جلوگیری بشه.
دوره آموزشی برنامه نویسی اندروید
65
انجمن برنامه نویسی اندروید p30droid.com
مانند مثال زیر )
کد:
{try
//perform your database operations here...
}
)catch(SQLiteException e
{
//report problem
}
{finally
();db.endTransaction
}
دیتابیس اندروید-بخش دوم
ابتدا یک پروژه جدید را ایجاد کنید و اسم آن را مثال dbAndroidبگذارید.
دوره آموزشی برنامه نویسی اندروید
66
انجمن برنامه نویسی اندروید p30droid.com
سپس ورژن اندروید خود را مشخص کنید...که در این پروژه 2.3.3را در نظر گرفته ایم
دوره آموزشی برنامه نویسی اندروید
67
انجمن برنامه نویسی اندروید p30droid.com
در مرحله آخر نام پکیج و اکتیویتی خود را وارد کنید.
دوره آموزشی برنامه نویسی اندروید
68
انجمن برنامه نویسی اندروید p30droid.com
دکمه finishرا بزنید تا پروژه شما اماده شود.
اولین قدم برای اینکه بتوانیم از sqliteاستفاده کنیم این است که یک کالس جدید را ایجاد کنید.برای اینکار روی نام پکیچ
کلیک راست و گزینه new ->classرا انتخاب کنید تا کادر زیر ظاهر شود.
دوره آموزشی برنامه نویسی اندروید
69
انجمن برنامه نویسی اندروید p30droid.com
بعد از ایجاد کردن کالس باید از کالس SQLiteOpenHelperارث بری کنیم .بعد از اینکار رنگ قرمزی روی نام کالس ظاهر
میشود که برای این میباشد که حتما باید توابع سازنده را ایجاد کنید.که بعد از اینکار سه تابع که در تصویر نشان داده شده اضافه
میشوند.
دوره آموزشی برنامه نویسی اندروید
70
انجمن برنامه نویسی اندروید p30droid.com
بعد از اینکار ها بهتر است در قسمت generalمتغیر هایی را بصورت سراسری تعریف کنیم تا در کالس های دیگر نیز بتوانیم
فراخوانی کنیم.ابتدا در تابع onCreateدستور مربوطه به ایجاد جدول را بنویسید و در تابع onUpgradeهم دستور مربوط به
پاک کردن اطالعات جدول را بنویسید.بعد از اینکار ها میتونید در هر جای برنامه فقط با صدا زدن نام کالس و ایجاد کردن یک
شی از آن میتوانیم از دیتابیس اندروید به راحتی استفاده کنید
دوره آموزشی برنامه نویسی اندروید
71
انجمن برنامه نویسی اندروید p30droid.com
بعد از نوشتن دستورات باال به سراغ طراحی کردن یک UIساده میرویم تا با وارد کردن اطالعات در دو EditTextاطالعات را در
دیتابیس ذخیره کنید
دوره آموزشی برنامه نویسی اندروید
72
انجمن برنامه نویسی اندروید p30droid.com
خروجی UIبدین صورت میباشد.
دوره آموزشی برنامه نویسی اندروید
73
انجمن برنامه نویسی اندروید p30droid.com
کار بدین صورت میباشد که وقتی کاربر روی دکمه saveکلیک کرد اطالعات در دیتابیس ذخیره میشود
دوره آموزشی برنامه نویسی اندروید
74
انجمن برنامه نویسی اندروید p30droid.com
در خط : 13ابتدا باید یک شی جدید از کالس قبلی را ایجاد کنیم
خط : 14یک متغیر از نوع SQLiteDatabaseرا تعریف میکنیم تا بتوانیم عملیات های مختلف پایگاه داده را انجام دهیم
خط : 15برای اینکه بتوانیم اطالعات را در مکانی قرار دهیم بعد ذخیره شود از ContentValuesاستفاده میکنیم
در تابع OnCreateهم ابتدا خاصیت مربوط به دکمه را در حالتی وقتی که روی آن کلیک کردیم قرار میدهیم
بعد از این کارها نوبت به نوشتن کدهای ثبت اطالعات میباشد ،بعد از انتخاب دکمه مربوطه یک پیغام چاپ میشود مینی بر اینکه
دوره آموزشی برنامه نویسی اندروید
75
انجمن برنامه نویسی اندروید p30droid.com
اطالعات ثبت شد.
خط :33در این خط ما به شی dbمیگوییم که میتواند که اطالعات را در دیتابیس بنویسد
خط :34در این خط شی contentرا ایجاد میکنیم تا مقادیر را در آن قرار دهیم
خط های 35و 33مقادیر مربوط به فیلدهای name,lnameرا قرار میدهد
خط : 37اطالعات در دیتابیس ذخیره میکند
خط : 38یک پیغام را توسط Toastچاپ میکند
دوره آموزشی برنامه نویسی اندروید
76
انجمن برنامه نویسی اندروید p30droid.com
فصل پنجم
کسب درآمد از نرم افزارهای موبایل
دوره آموزشی برنامه نویسی اندروید
77
انجمن برنامه نویسی اندروید p30droid.com
دوره آموزشی برنامه نویسی اندروید
78
انجمن برنامه نویسی اندروید p30droid.com
دوره آموزشی برنامه نویسی اندروید
79
انجمن برنامه نویسی اندروید p30droid.com
منابع:
انجمن برنامه نویسی اندروید P30droid.com
مرجع توسعه دهندگان اندروید Developer.android.com
کماالن Kamalan.com
این آموزش به مناسبت دومین سالگرد انجمن برنامه نویسی اندروید تهیه گردیده است
22اسفند 1333