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

ستاره مقاری 1395/1/14 2624

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

با سلام خدمت دوستان عزیز. با جلسه یازدهم اندروید در خدمتتون هستم. میخواهیم این جلسه به دو تا کار کاربردی دراندروید بپردازیم.

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

**تقویم فارسی

  1. اضافه کردن تقویم

لینکی که خدمتتون دادم این بود:

http://smartlab.ir/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-persiandatepicker-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF/

خب این تقویمی که توی این سایت گذاشته باید نسخه sdk شما حداقل 11 باشه. یادتون باشه ما api8 گذاشته بودیم. پس الان باید بیایم و نسخه api پروژمون رو تغییر بدیم. خیلی هم خوب چون اینطوری یاد میگیرید که از کجا اینکار رو انجام بدید.

  • قدم اول: نصب یه ورژن api بالای 11. میتوانید برای اینکار از همان pdf که دادم استفاده کنید
  • قدم دوم: تغییر ورژن android sdk در پروژتون. برای اینکار از بالا سمت راست intellij ایکون زیر رو انتخاب کنید:

آموزش برنامه نویسی اندروید

حالا در پنجره زیر در این قسمت ورژن sdk رو تغییر بدید:

آموزش برنامه نویسی اندروید

  • قدم سوم: اضافه کردن تقویم به پروژه

برای اینکار دو راه نوشته شده است. من راه دوم را خواهم رفت. (راه اول را با برنامه اکیلیپس نوشتند)

خب راه دوم رو هم باید با کمی تغییر بدیم.

داخل لینک زیر بشوید و از سمت راست با زدن Download Zip سورس تقویم را دانلود کنید

https://github.com/alibehzadian/PersianDatePicker

پس از دانلود مراحل زیر رو با دقت انجام بدید:

 

  1. داخل پوشه src از سورسی که دانلود کردید بشید. یک پوشه به نام ir هست. اون رو کپی کنید. حالا برید توی محلی که پروژه خودتون رو ساختید. داخل پوشه src پروژتون چیزی که کپی کردید رو paste کنید.
  2. از فایلی که دانلود کردید وارد پوشه Res و سپس layout بشید. sl_persian_date_picker.xml رو کپی کرده و بعد وارد پوشه پروژه خودتون شده و در مسیر مشابه اون رو paste کنید.
  3. از داخل intellij در پروژه خودتون داخل پوشه res روی پوشه values راست کلیک کنید، سپس new و سپس Values resource file رو بزنید و نام اون رو بذارید attrs . یک فایل xml برای شما ساخته میشه.

داخل اون شده و بین رو تگ resources> این رو قرار بدید:

آموزش برنامه نویسی اندروید

خب حالا یک دور پروژه رو بزنید Run بشه. اگه از کلاس PersianDatePicker از کده زیر ایراد گرفت اون رو پاک کنید:

displayDescription = a.getBoolean(R.styleable., false);

if( displayDescription ) ){

 descriptionTextView.setVisibility(View.VISIBLE);

}

 

بیشتر هدف من این بود یاد بگیرید چطور یک سورس رو به پروژتون اضافه کنید. توی اینترنت سورس کدهای زیادی هست. خیلی ها هم داخل همین سایت github قرار داده میشوند.

 

البته روش دیگه این هست که یک کتابخانه اضافه کنید به پروژه خودتان. در آینده این را هم تست میکنیم با کتابخانه های دیگر.

  1. استفاده از تقویم

برای اینکه از این تقویم استفاده کنید کافی هست برید داخل همان layout مربوط به ثبت نام دوستانتان. مثلا من اسمش رو قرار داده بودم add_person. خب کده زیر رو بزنید:

آموزش برنامه نویسی اندروید

این کد رو در انتهای سایر تگها اضافه کنید یا هرجا میخواهید.

صفتها را که میشناسید. این تقویم خودش به تنهایی یک سری صفتهای جدید دارد. مثلا displayMonthName برای این هست که در ماه ها به جای عدد اسامی ماه ها رو بگوید.

یا selected year، selected month و selected year برای این هست که بصورت دیفالت چه تاریخی انتخاب شود در غیر اینصورت تاریخ روز نمایش داده میشود. همچنین با min Year و Max Year میتونید رنج زمانی رو تعیین کنید.

 

زمانی که به بحث ذخیره سازی در SQLITE رسیدیم با کدنویسی این تقویم اشنا میشوید.

برای اینکه یک عنوان بگذارم برای تقویم از تگ زیر استفاده کردم در بالای تگ تقویم (layout ما linear است):

آموزش برنامه نویسی اندروید

شکل نهایی تقویم به اینصورت هست:

آموزش برنامه نویسی اندروید

**کار با اینترنت

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

میتوانید یک پروژه مجزا باز کنید (یا داخل پروژه فعلی یک صفحه و اکتیویتی دیگر تعریف کنید) تا یک سری کد را تست کنیم.

  1. باز کردن یک صفحه اینترنت:

بطور مثال من در یک پروژه که فایل آن را در اختیارتان میگذارم، یک دکمه به نام button ایجاد کردم. میخواهم این دکمه هنگامی که زده شد یک صفحه اینترنتی باز بشود.

در ابتدا میخواهیم متصل بودن دستگاه به اینترنت رو بررسی کنیم:

  • بررسی اتصال به اینترنت

برای انجام هرکار با اینترنت جهت جلوگیری از خطاهای احتمالی ابتدا باید بررسی کنیم ایا دستگاه به اینترنت متصل هست یا نه. پس در اکتیویتی در ابتدا دو کد زیر رو بنویسید.

Context myContext = this;

ConnectivityManager connectMngr = myContext.getSystemService(Context.CONNECTIVITY_SERVICE);

 

خب برای فهم کد بالا خیلی ساده بهش نگاه میکنیم. ابتدا Context تعریف کردیم و همانطور که قبلا گفتم این کلاس میشود گفت وضعیت کنونی را به ما برمیگرداند. یک نمونه ازش گرفتم و مقدار اولیه آن را برابر this گذاشتم.

 

 

بعد از آن از کلاس ConnectivityManager استفاده کردم. این کلاس مدیریتی از اتصالات دستگاه را به ما میدهد. یک نمونه ازش گرفتم. برای مقدار دهی دقیقا این رو گفتم: "از وضعیت کنونی دستگاه، سرویس Connectivity رو از وضعیت دستگاه گرفته و اون رو بعنوان یک سیستم سرویس به من بده"

متد getSystemService، یک متد از context هست که یک ورودی میگیرد و در نهایت با توجه به ورودی که بهش میدهیم به ما آن سرویس را میدهد. توجه کنید که خروجی این متد از نوع Object هست. پس باید از Cast کردن استفاده کنیم تا بتوانیم مقدارش را در connectMngr ذخیره کنیم:

ConnectivityManager connectMngr = (ConnectivityManager) myContext.getSystemService(Context.CONNECTIVITY_SERVICE(;

خب تا الان ما تمام سرویس های Connect را داخل connectMngr داریم. اما ما تنها الان اطلاعاتی از شبکه را لازم داریم. که به این میگوند NetworkInfo. پس کافی هست کد زیر را بنویسید تا از connectMngr اطلاعات شبکه را گرفته و داخل یک شی از NetworkInfo ذخیره کنه:

NetworkInfo netInfo = connectMngr.getActiveNetworkInfo ();

خب حالا برای بررسی شرط اتصال به اینترنت داخل متد Onclick کد زیر را بنویسید:

if(netInfo == null || netInfo.isAvailable() == false || netInfo.isConnected() == false){

 Toast.makeText(getApplicationContext(),"No Internet!",Toast.LENGTH_LONG);

}

 

اول از همه جهت یاداوری دوستان جهت بررسی یک شرط در جاوا (بیس اندروید) از if استفاده میکنیم.

 

 

If(some condition)

{ Do something }


 

جهت بررسی یک شرط در جاوا از if استفاده میکنیم و شرط مورد نظر داخل پرانتز قرار داده میشود. سپس بررسی میکنیم اگر شرطی برقرار است کارهای مورد نظر ما داخل {} نوشته میشود.

 

شرطهایی که بررسی کردیم

1)netInfo == null : اگر هیچ شبکه ای موجور نیست.

2)netInfo.isAvailable() == false: یعنی اگر شبکه فعال نیست

3)netInfo.isConnected() == false: یعنی اگر شبکه متصل نیست

این نکته را هم بگویم که در شرط ها اگر بین چند شرط "یا" برقرار بود یعنی در نظر داشتیم یکی از شرطها هم حتی اگر برقرار بود عملیات ما انجام شود، بین آنها علامت || میگذاریم.

همچنین اگر مورد نظر ما بود که تمام شرطها حتما برقرار باشند همزمان تا کاری را انجام دهیم، بین آنها && میگذاریم.

در اخر اینکه در بررسی شرطها علامت تساوی (آیا مساوی بودن!؟) بصورت == قرار داده میشود.

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

درغیر اینصورت اینترنت وصل هست پس میشود صفحه اینترنت رو باز کنیم.

 

حالا کد زیر را اضافه کنید:

else {

 Toast.makeText(getApplicationContext(),"You are Connectedd",Toast.LENGTH_LONG);

}

 

زمانی که شرطی را بررسی میکنیم و میخواهیم بگویم اگر if مطرح شده برقرار نبود در غیر اینصورت چکاری انجام بده، از else استفاده میکنیم.

 

فعلا داخل else نوشتم یک پیام نشان بده که به اینترنت متصل هستید.

  • تنها چیزی که نباید فراموش بشود اجازه گرفتن از کاربر هست. که میخواهیم از اینترنت اون فرد استفاده کنیم. این permission ها رو در manifest قرار بدید.
  • <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    
    
    

     

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

  • حالا در این مرحله باید داخل else صفحه مورد نظر را باز کنیم.

 اگر به یاد داشته باشید intent ها درخواست ما از اندروید بودند. درحال حاضر ما درخواست باز کردن یک صفحه وب رو داریم. از کد زیر استفاده میکنیم:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(http://www.google.com));

startActivity(intent);

 

این نوع خاصی از intent هست. ورودی اول نوعش را مشخص کرده و ورودی دوم یک متد هست به نام Parse. این متد در کلاس Uri قرار دارد. یک ورودی رشته ای (string) گرفته و اون رو تبدیل به یک uri معتبر میکند. در اخر هم Intent خود رو اجرا کردیم.

 

دوستان امیدوارم این جلسه مطالب مفید بوده باشه.

در جلسه اینده به ادامه بحث اینترنت میپردازیم. به استفاده از webView و یک سری کاربردهاش. همچنین ارسال ایمیل.

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

stackoverflow.com فراموش نشود.

خسته نباشید

قسمت بعدی قسمت قبلی