جلسه دوم برنامه نویسی موبایل

در J2ME

جلسه دوم:
خب جلسه قبل که کاره خاصی نکردیم :دی ، فقط NetBeans رو اجرا کردیم! این جلسه باید یه کم بیشتر از خودمون فعالیت نشون بدیم !
خب اینجا یه نموره با جاوای معمولی فرق داره، طبق معمول اولین چیزی که می خواهیم اینه که بتونیم یه جورایی با کاربر ارتباط بر قرار کنیم ، یه چیزی نشونش بدیم،یه چیزی ازش بگیریم و و....
برای ارتباط با کاربر باید از کلاس Display استفاده کنیم.هر MIDlet یه Display مخصوص به خودش رو داره که هنگام کار با هر MIDlet باید به Display  مربوط به اون دسترسی پیدا کنیم و روی اون کار کنیم.برای دستری به Display مربوط به هر MIDlet  از متد getDisplay  استفاده می کنیم :

Display currentDis=Display.getDisplay(MIDlet m)d   

که m اون MIDlet ای هست که داریم روش کار می کنیم.
پس از اینکه به Display مربوط به یه MIDlet دسترسی پیدا کردیم می تونیم با استفاده از متد setCurrent مشخص کنیم که چه چیزی نمایش داده شود!!!
(یه نموره این حرفا فعلاً خشکه ولی تو عمل که کد بزنیم قشنگ جا می افته!)

به دو صورت میشه از متد setCurrent برای تعیین نمایش فعلی استفاده کرد:

Display.getDisplay(MIDlet midlet).setCurrent(Alert alert,Displayable disp)d
Display.getDisplay(MIDlet midlet).setCurrent(Displayable disp)d

اولی ابتدا یه Alert رو به کار بر نشون میده (بعداً در مورد Alert توضیح می دم) و سپس یه Displayable رو .
دومی هم خب معلومه دیگه ،Alert که بهش ندادیم! فقط یه Displayable رو نشون میده دیگه! (الکی الکی برای این دو خط توضیح کاراکتر حروم کردیم :دی)

برای ارتباط با کاربر (چه نمایش چه دریافت ) یه سری ابزار مثله Alert نیاز داریم که همشون تو مسیر زیر هستن:

javax.microedition.lcdui.*d
خب بیایید فعلاً با همین اطلاعات و با آگاهی از اسم Alert برنامه قبلی رو یه کم گسترش بدیم:

توجه کنید که تو کده بالا وقتی از getDisplay استفاده کردیم تو پارامتر ورودیش نوشتم this ، خب تابلوئه دیگه چون کلاسی که داریم توش کد می زنیم خودش MIDlet هست.
خب حالا برنامه رو اجرا کنید ، باید یه Alert  نمایش داده بشه:

اگه برنامه اجرا نشد ، یعنی موبایل پوبایلی ، چیزی ظاهر نشد تو قسمت Project روی پروژه کلیک راست کنید و گزینه clean رو انتخاب کنید و بعد برنامه رو اجرا کنید (معمولاً تو NetBeans زیاد باید این کار رو انجام بدین!)

اگه باز هم برنامه اجرا نشد (که برای من زیاد پیش اومده) حتماً گیرش بر می گرده به آنتی ویروس ،برید آنتی ویروسه مسخره رو غیر فعال کنید و یه کم صبر کنید و بعد دوباره برنامه رو اجرا کنید.
(هر چی می کشیم از همین آنتی ویروس هاست :دی ، هیچ فایده ای هم ندارن ها! الکی عادت کردیم چرت و پرت نصب کنیم رو سیستممون :دی)

اگه برنامه اجرا شد بعد اون یه سری پیام چرند و پرند میاد که فعلاً به دردمون نمی خورن. مهم این بود که تونستیم یه Alert نشون بدیم.فعلاً با همینش هم باید کلی حال کرد.

نکته خیلی خیلی مهم: از همین جلسه های اول عادت کنید هر برنامه ای رو که می نویسید زارت ببرید رو یه گوشی اجرا کنید. چون تو گوشی های مختلف نتیجه ها فرق داره. برای اینکار هم اونجایی که پروژه اتون ذخیر میشه یه پوشه به نام dist ساخته میشه که توش برنامه اتون با پسوند های jar و jad وجود داره ، بسته به نوعه گوشی ای که استفاده می کنید باید یکی یا هر دوی این فایل ها رو با بلوتوثی چیزی بفرستید تو گوشیتون و برنامه رو اونجا نصب و اجرا کنید.

خب باز هم بریم سر کد نویسی!
تا اینجا یه سری اسامی مسامی به گوشمون خورد ، Alert و Displayable و ...
همه اینا ابزار هایی هستن که بتونیم باهاشون با کاربر ارتباط برقرار کنیم.
API های ارتباط با کاربر تو j2me  به دو دسته تقسیم می شن:
1)API های سطح بالا
این API ها ابزار هایی رو در اختیار ما قرار می دن که کار کردن باهاشون ساده است ، تو طیف گسترده ای از از گوشی ها و وسایل همراه اجرا میشن ، کاره کد نویسی رو ساده می کنن ولی در عوض ظاهر ماهر آنچنانی ندارن.

2) API های سطح پایین
API های سطح پایین نقطه مقابل API های سطح بالا هستن ، در صورت استفاده از این امکانات بیشتر کاره کد نویسی به عهده خودمون هست (به قولی خر کاری داره) ولی در عوض کنترل بیشتری بر روی ظاهر و ... خواهیم داشت ،طوری که می تونیم ابزار های اختصاصی خودمون رو ایجاد کنیم.
توجه کنید که وقتی یه MIDlet طراحی می کنید می تونید هم از API های سطح بالا استفاده کنید و هم از API های سطح پایین ولی وقتی فقط دارید یه صفحه (Screen) از یه MIDlet رو برنامه اش رو می نویسید نمی تونید همزمان هم از API های سطح بالا استفاده کنید و هم از API های سطح پایین . یه برنامه با دو صفحه متفاوت رو در نظر بگیرید که یه صفحه اش رو با API سطح بالا طراحی کردید و یه صفحه اش رو هم با API سطح پایین ! (اینجوری میشه ولی تو یه صفحه دو جور API نه!) - حالا جلوتر کد می زنیم می فهمیم الآن داریم چی چرت می گیم :دی :دی  :دی

API های سطح بالا:

Alert:
از Alert شروع می کنیم ، چون به نظر من از همه ساده تره :دی.
Alert ها ابزار های خیلی ساده ای هستن برای نمایش پیغام به کاربر.این پیغام می تونه پیغام خطا ، نمایش اطلاعات خاص یا هر چیزه دیگه ای باشه.
Alert ها معمولاً دارای محدودیت زمانی هستن یعنی برای یه مدت خاص نمایش داده میشن و بعد هم میرن :دی ، البته این ویژگیشون رو میشه تغییر داد یعنی کاری که کرد که یه Alert به صورت دائمی نمایش داده شده ( در این صورت خوده کاربر پس از مشاهده Alert اون رو می بنده).
یه Alert می تونه همراه با متن و عنوان، شامل عکس هم باشه.
اگه تصاویر و متن Alert زیاد باشن اونوقت به حالت Scroll در میاد و محدودیت زمانی اون از بین میره و مجدداً خوده کاربر باید اون رو ببنده.

علاوه بر مواردی که بالا اشاره کردم نوعه Alert رو هم میشه تعیین کرد. (کاره خوبیه:دی)
برای تعیین نوع Alert از AlertType استفاده می کنیم.AlertType می تونه یکی از موارد زیر باشه:

AlertType.ALARM
AlertType.CONFIRMATION
AlertType.ERROR
AlertType.WARNING
AlertType.INFO

برای ایجاد یه Alert از دو روش می شه استفاده کرد:

Alert alert1=new Alert(String message)d
Alert alert2=new Alert(String title,String message,Image img,AlertType type)d

وقتی یه Alert ایجاد می کنیم و داریم باهاش کار می کنیم می تونیم رو موارد زیر کنترل داشته باشیم:
1) String
متن اصلی Alert هست . همون message تو پارامتر های ورودی!

2) Title
همون عنوان Alert می باشد.

3) Image
عکس Alert

4) Type
نوع Alert

5) Timeout
محدودیت زمانی Alert

برای کار (دسترسی یا تغییر) تمامیه موارد فوق متد هست:

 
 

 

public String getString()D دسترسی به متن پیغام
public void setString(String message)d تغییر متن
public Image getImage()d دسترسی به تصویر
public void setImage(Image img)d تغییر تصویر
public String getTitle()d دسترسی به عنوان
public void setTitle(String title)d تغییر عنوان
public int getTimeout()d دستری به اندازه محدودیت زمانی
public void setTimeout(int time)d تغییر محدودیت زمانی
public AlertType getType()d به دست آوردن نوع پیغام
public void setType(AlertType at)d تغییر نوع پیغام

 نکته : اگه می خواهید محدودیت زمانی یه Alert  رو از بین ببرید و اون رو به صورت دائمی نشون بدین باید به صورت زیر عمل کنید:

setTimeout(Alert.FOREVER)d

نکته اضافی: Alert زیر کلاس Screen هست .(بعداً توضیح میدم-شاید البته! :دی).

یه نکته دیگه : به Alert میشه Ticker اضافه کرد.این که Ticker چیه فعلاً مهم نیست تو کد متوجه میشین.

خب با این حرفا یه کدی بزنیم فعلاً :

حالا برنامه رو اجرا کنید و حالش رو ببرید:

چون نوع Alert از نوعه Alert.FOREVER هست به صورته دائمی نمایش داده میشه و تا روی Done کلیک نکنید نمی ره!