تبليغاتX
برنامه نویسی موبایل j2me
سلام،ببخشید خیلی وقته که پستی نذاشتم، از حامد عزیز هم تشکر می کنم که تو این مدت فرم رو زنده نگه داشتی،بالاخره نرم افزار جاوای راهنمای متروی تهران برروی موبایل آماده و برای دانلود گذاشته شد. می تونید از این لینک دانلودش کنید و اگر سوال فنی! یا نظری درباره‌ی نرم افزار دارید همینجا کامنت بذارید حتما جواب می دم.

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


     

ویژگی های این نرم افزار کاربردی :
1- تقویم کامل شمسی بهمراه مناسبت ها و ساعت
2- اعلام ساعت حرکت بعدی قطار در تمام ایستگاه ها
3- لیست کامل برنامه ی حرکت قطارها در تمامی ایستگاه ها
4- نقشه مترو - برنامه ریزی حرکت و راهنمای استفاده از خطوط مترو
5- خدمات تمام ایستگاه ها بهمراه لیست تمامی اتوبوس های موجود در ایستگاه ها
6- معرفی انواع بلیت های مترو و انتخاب بلیت مناسب براساس نیاز کاربر
7- امکان بروزرسانی اطلاعات با استفاده از Gprs


لینک دانلود: metro.xpm.ir

+ نوشته شده توسط امیر رضا شبان در دوشنبه بیست و هشتم اردیبهشت 1388 و ساعت 1:7 |

سلام، حتما دیدید که بعضی نرم افزار موبایل فارسی رو درست نشون نمی دن. مثلا "سلام" رو می نویسن " س ل ا م" یا "م ا ل س" این برنامه این مشکلات رو در نمایش متون رفع می کنه.

طریقه ی استفاده:

برنامه(فایل patchFontMe.jar) رو در کامپیوترتون اجرا کنید و دکمه ی Load app رو بزنید و فایل jar برنامه ای که مشکل داره رو بهش بدید بعد دکمه ی patch app رو بزنید تا فایل خروجی رو بهتون بده این فایل دیگه مشکل نمایش فونت رو نخواهد داشت. من این کار رو روی نرم افزار Opera mini انجام دادم و روی W810iجواب گرفتم.

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

این مشکل در بسیاری از مدل های sonyEricsson و nokia وجود داره و به درد هزاران نرم افزار روزنامه خوان و مرورگر وب و... می خوره و اولین باره که تولید می شه، چیزی که الان نیاز دارم یک سایت دو زبانه(فارسی و انگلیسی) برای معرفی و ارایه نرم افزار هست اگر مایل به همکاری در این زمینه هستید با من(amirreza_shaban  در یاهو)  تماس بگیرید.

لینک دانلود نرم افزار

آموزش استفاده از نرم افزار

اطلاعات تخصصی در مورد نحوی کار نرم افزار در ادامه ی مطلب


ادامه مطلب
+ نوشته شده توسط امیر رضا شبان در سه شنبه هفتم آبان 1387 و ساعت 19:7 |

سلام،

بایت کدهای j2ME زیرمجموعه ای از j2SE هستند بنابراین می تونید از ابزارهای Decompile در J2SE برای این کار استفاده کنید. بهترین decompiler رایگان موجود JAD هست. یک ورژن اون با نام DJ Java Decompiler پوسته ی گرافیکی براش قرار داده و یک مرحله تصحیح کد هم روی سورس حاصل انجام می ده. البته پولی هست و ک ر ک هم اینجا پیدا می کنید. وقتی کدی رو Decompile می کنید ممکن هست که کاملا درست نباشه که عموما شامل دستورهای goto، لیبل ها، break و exception ها می شه. در واقع این ها قسمت هایی از کد هستند که obfuscate شدن و برنامه نتونسته به فرم استاندارد برشون گردونه.

برای رهایی از این مشکل چند تا راه پیشنهاد می کنم:

1- فقط کلاس هایی که لازم دارید رو Decompile کنید و بعد jar فایل که حاوی فایل .class بقیه ی فایل ها هست رو به پروژه تون اضافه کنید.

2- اگر می خوایین فارسی سازی کنید و ... فقط کافی هست رفتار چندتا تابع رو عوض کنید، مثلا به جای Graphics.drawString تابع drawBitMapFont بذارید که خودتون ساختید. در این موارد از function mapping استفاده کنید که ابزارهایی برای این کار هستند.

3- اگر این قسمت های مشکل دار کد رو بخونید بعد از کمی کار می تونید خودتون به فرم استاندارد تبدیلشون کنید.

 

دیروز 2 تا برنامه رو ک ر ک کردم:

mGaurd که یک نرم افزار free هست و key رو هم خودش می ده! سیستم کدگذاریش بسیار ساده بود و مشکل اساسی که داشت که خودش درون خودش key رو می ساخت و با مقداری که کاربر بهش داده بود مقایسه می کرد، خوب منم فقط اون تابع رو برداشتم اوردم بیرون که کلید درست کنه اینجا می تونید سورس تابعش رو ببینید. این تابع مثال خوبی هست که چه جوری از IMEI کد فعال سازی درست کنیم.

 

TinyLine2D یک لایبرری برای کارهای گرافیکی موبایل استفاده می شه. پیچیدگی های خیلی زیادی داشت ولی قسمت زیادیش مربوط به Hash کردن دیتایی می شد که اصلا ربطی به کد ورودی نداشت و نتیجه این کار یک رشته ای از اعداد می شد که همواره یکی بود. و بعد این رشته رو با کدی که شما داده بودید XOR می کرد و یک جوری مخلوطشون می کرد و در نهایت اگر حاصل 0 می شد یعنی key درست هست و در غیر این صورت غلط بود. نکته ی مثبتی که داشت این بود که هیچ جایی از برنامه به دست خودش کد صحیح رو درست نکرد و این باعث می شد که درست کردن k e y G e n براش سخت بشه ولی تشخیص درستی و غلطی کد چون به مقدار نهایی بستگی داشت خیلی راحت ک. ر. ک می شد. لایبرری ک ر ک شده + سورس کد TinyLine2D.java بعد ازکامنت گذاری هم براتون گذاشتم در این ورژن برای اینکه کد فعال سازی رو بدید دیگه لازم نیست تابع init رو صدا کنید و watermark هم دیگه چاپ نمی شه.

 

و اگر می خوایین برای برنامه تون قفل بذارید:

1 - چون می خوایین از برای هر گوشی یک کد مستقل وجود داشته باشه پس باید کارتون رو از  IMEI گوشی شروع کنید.

2- این کد رو خوب hash(پخش) که مثلا اگر IMEI یه رقم عوض شد مقدار key  تون کلی عوض بشه(XOR موجود دوست داشتنی هست!)

3- هیچ وقت درون برنامه تون کلید رو درست نکنید چون خیلی راحت براش k e y G e n می نویسن(مثل مثال اول) و ک. ر. ک کردنش خیلی راحت هست.

4- از قوائدهای خاص ریاضی استفاده کنید، مثلا جمع دو تاعدد فرد می شه یه عدد زوج، می شه که جمع دو تا عدد مثبت بشه منفی(تو کامپیوتر می شه.)، یا اگر یک عدد رو دو بار با یه چیزی XOR کنی می شه خودش یا خواص اعداد اول. این ها باعث می شن ک. ر. ک ر نتونه از روند تایید یا رد کد فعال سازی سر در بیاره.

5- اگر فقط از IMEI استفاده کنید تقریبا در 5 دقیقه ک. ر. ک می شید (مثل نرم افزارهای پارس آسان افزار!) شیوه ی کار هم اینه که اگر شما کد فعال سازی برای IMEI گوشی A رو بدونید، کافی تا تابعی که IMEI رو بر می گردونه رو عوض کنید که همیشه A بر گردونه. جالب بدونید چنین بلایی سر Windows Vista هم اومد. برای جلوگیری از این کار از متغییرهای تصادفی مثل زمان و اعداد random برای hashing استفاده کنید.البته به این سادگی که گفتم نیست.

6- به جای parameter passing های معمول در توابع مربوط به تایید کد فعال سازی از Class member variables استفاده کنید، مثلا تمام متغییرهای حساس به کلید رو در یک کلاس نگه داری کنید و بقیه ی توابع در همه ی کلاس ها بطور مستقیم بخوننشون. اینجوری رد گیری استفاده از این متغییرها در کلاس های دیگه خیلی سخت تر می شه.

7- مواظب چیزی که در RecordStore ذخیره می کنید باشید. چون همه می دونن که این تنها منبع ممکن هست که شما در بارهای بعدی می فهمید که کد فعال سازی قبلا وارد شده و مستقیم وارد برنامه می شید. پس چیزی که اونجا می می نویسید حتی اگر یک کد پیچیده ولی مستقل از IMEI گوشی باشه اگر من اول برنامه 2 خط اضافه کنم که این مقدار رو تو RecordStore بنویسه خوب همه گی خوشحال می شیم.

 

در هر حال ک. ر. ک کردن کد گوشی خیلی سخت نیست بنابراین بهتره:

 

8- محدودیت ایجاد کنید: مثلا فایل jar رو در اختیار کسایی قرار بدید که نرم افزار رو خریدن حتی بهتره به اون ها هم ندید مثلا براش نصب کنید و بگید هر وقت خواستی بیا دوباره برات نصب کنم مثل روش های دانلود با GPRS و نصب مستقیم.

9- آپدیت کنید: ایران خودرو بازی در نیارید! هر چند وقت یک بار ورژن جدید درست کنید و به بازار بدید این کار باعث می شه ک ر ک ر ها فرصت کمتری داشته باشن و چون همیشه شما یک قدم جلوترید با وجود ورژن ک ر ک شده کاربران ورژن جدید رو از شما می خرن.

10- نرم افزار Free بدید: راه های زیادی برای کسب در آمد از یک نرم افزار Free و پرکاربرد وجود داره.

 

موفق باشید.

+ نوشته شده توسط امیر رضا شبان در جمعه دوازدهم مهر 1387 و ساعت 15:45 |

سلام،
در j2me انواع Connection ها توسط  تابع Connector.open() باز می شن که شامل موارد زیرهستند:
1- HTTP Connection
2- FTP Connection شامل خوندن و نوشتن روی فایل سیستم
3- Soket Connection برای ارتباط میان دو برنامه روی پورت مشخص با پروتکل HTTP
توجه کنید تنها موردی که حتما باید توسط دستگاه ساپورت بشه مورد اول هست و بقیه اختیاری.

HTTP:
امروز براتون دو تا مثال آماده کردم یکی محتویات یک Web page رو چاپ می کنه و دیگری یک تصویر رو از server می گیره و نمایش می ده.لینک دانلود هم اینجاست.
اگر موبایلتون GPRS نداره به انترنت کانکت شید و با emulator تستش کنید. سعی می کنم در مورد متدهای مختلف(GET, POST, HEAD) و دستکاری header ها و... براتون یه PDF بسازم، شایدم چند تا برنامه ی کامل تر نوشتم، شایدم پست بعدی استفاده از Web Service باشه، شاید هم هیچ کار دیگه ای نکردم! فعلا فقط بدونید که ساپورت کامل از HTTP وجود داره.سوالاتتون رو تو فرم بپرسید. شب بخیر.

+ نوشته شده توسط امیر رضا شبان در دوشنبه یازدهم شهریور 1387 و ساعت 1:5 |

سلام، جلسه ی سوم و چهارم آموزش راه دور هم برگزار نشد! مشکلاتی پیش اومد که نتونستیم ادامه بدیم. ولی خوب اسلایدها و سورس کد ها آماده است و براتون گذاشتم. مطالب این جلسه:

1- سورس کد خوندن و نوشتن یک تصویر در File System که از جلسه قبل باقی مونده بود.

2- آموزش نصب و استفاده از j2mePolish که البته فقط یک سورس موجود داریم و بقیه سورس ها قرار بود سر کلاس نوشته بشه.

و به این ترتیب کار یک دوره آموزش تموم شد. می دونم j2mepolish براتون چیز جذابی هست. من به هر سوالی در هر سطحی در مورد این دوره ی آموزشی باشه اینجا جواب می دم و قسمت سوم آموزش رو هم می تونید از اینجا دانلود کنید.

امیدوارم براتون مفید باشه
+ نوشته شده توسط امیر رضا شبان در سه شنبه بیست و دوم مرداد 1387 و ساعت 1:18 |

سلام، جلسه دوم آموزش راه دور هم برگزار شد فقط چون یه کم خسته بودم چندتا تپق زدم ولی بخوبی و خوشی تموم شد،همونطوری که قول داده بودم اسلایدهای جلسه ی دوم رو براتون آوردم. در این جلسه این مطالب آموزش داده شده:

 

1- برنامه نویسی چند ریسمانی(Thread programming) که برای کار I/O لازم هست.

2- کار با System File یعنی نوشتن و خوندن فایل ها.

3- استفاده از حافظه ی ماندگار RMS و خوندن Resource های پروژه با استفاده از Input Stream

 

برای هر بخشی یک برنامه کاربردی نوشته شده که باز هم بهتون توصیه می کنم بخونید مخصوصا برنامه File Explorer و در فرم سوالاتتون رو بپرسید.این جلسه تقریبا کارI/O رو پوشش می ده و من هنوز فایل هام رو تو rapidshare می ذارم چون خیلی تنبلم.

+ نوشته شده توسط امیر رضا شبان در سه شنبه هشتم مرداد 1387 و ساعت 22:47 |

سلام، امروز یک تجربه ی جدید داشتم. به یک دانشجو در جیرفت J2ME رو از راه دور آموزش دادم!

Desktop کامپیوتر من با استفاده از نرم افزار TeamVeiwer برای ایشون نمایش داده می شد و Yahoo Messenger هم صدا رو انتقال می داد. اولش که ایشون به من زنگ زدن و اصرار به تشکیل کلاس راه دور داشتن به نظرم کاملا غیر ممکن اومد ولی جلسه ی اول خیلی راحت و خوب برگزار شد.

خوب این اسلایدها و مثال های جلسه ی اول هست که براتون گذاشتم، این اسلایدها شامل مباحث زیر است:

1-بررسی مختصر ساختار برنامه های MIDlet

2-گرافیک سطح پایین و استفاده از Canvas

3-آشنایی مختصر با کلاس Graphics و Image


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

 

+ نوشته شده توسط امیر رضا شبان در دوشنبه سی و یکم تیر 1387 و ساعت 18:25 |

سلام، تو آموزشهایی که تا حالا آقای شریفی براتون گذاشتن کار کردن و ساخت عناصر High level  مثل فرم و لیست و استفاده از اون ها رو یاد گرفتید، استفاده از این عناصر امتیازهای زیادی داره و مهمترین اون ها اینه که کد شما بر روی تمامی گوشی ها بدون هیچ مشکلی اجرا میشه و به اصطلاح compatible هست. ولی متاسفانه امکانات گرافیکی کمی در اختیار کاربر قرار می­ده بخاطر همین بسیاری از برنامه نویسان حرفه ای ترجیح می دن لیست ها و فرم های مورد نیاز در برنامه رو خودشون بنویسن. تجربه شخصی من میگه بخاطر تفاوت ها و باگ های زیادی که گوشی های مختلف دارن نوشتن عناصر High level که با تمامی گوشی های موجود سازگار باشه کار مشکلی هست بنابراین من توصیه می کنم از لایبرری هایی که برای این کار نوشته شده استفاده کنید من مدت زیادی رو صرف ساخت و امتحان لایبرری های High level کردم و فکر می کنم بهترین framework های موجود این ها باشن:

 

1 - Micro Window Toolkit

 

 

                                                     

 

2 - J2mePolish

 

 

                                                 

 

3 - J4ME

 

 

                                                         

 

4 -Fire

 

                                           

  

 برای شروع آموزش استفاده از Micro Window Toolkit رو براتون تو فرم گذاشتم که می ­تونیداز اینجا دنبال کنید.

+ نوشته شده توسط امیر رضا شبان در دوشنبه بیست و چهارم تیر 1387 و ساعت 1:29 |

در این PDF به شما آموزش داده می ­شود که چگونه مستقل از نوع تلفن همراه متون فارسی خود را با فونت دلخواه نمایش دهید. این PDF آموزش استفاده از لایبرری فونت فارسی که قبلا براتون گذاشتم.دانلود کنید از اینجا

لینک شماره دو

+ نوشته شده توسط امیر رضا شبان در چهارشنبه هشتم خرداد 1387 و ساعت 14:4 |

برای نوشتن یک برنامه فارسی مشکلات زیادی وجود داره و بزرگترینشون هم استفاده از فونت فارسی در برنامه است. لایبرری که نوشتم برای نشون دادن حروف فارسی با فونت دلخواه و مستقل از نوع گوشی است. برای اینکه کار باهاش رو سریع یاد بگیرید یک برنامه نمونه هم نوشته شده و می تونید از  فروم دانلود کنید. در حال حاضر فقط فونت Homa رو قرار دادم اگر استقبال بشه فونت های بیشتر و آموزش ساخت فونت رو هم همین­جا می ذارم.من منتظر نظرات شما بویژه باگ ­هایی که کشف می­کنید هستم.

+ نوشته شده توسط امیر رضا شبان در جمعه بیست و هفتم اردیبهشت 1387 و ساعت 20:26 |

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

+ نوشته شده توسط امیر رضا شبان در جمعه سی ام فروردین 1387 و ساعت 17:4 |

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

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

من امیررضاشبان دانشجوی کامپیوتر دانشگاه سراسری تهران هستم و از همه تقاضا دارم که منو با آقای شریفی اشتباه نگیرید چون ایشون به این مطلب خیلی حساس اند!

+ نوشته شده توسط امیر رضا شبان در جمعه سی ام فروردین 1387 و ساعت 13:31 |