ورود

View Full Version : (دانلود) كلاسي براي تشخيص كليد هاي انواع گوشي ها در Canvas



bahman_akbarzadeh
پنج شنبه 01 مرداد 1388, 20:00 عصر
سلام
من اين كلاس رو با قابليت تشخيص كليد هاي خاص مانند كليد هاي نرم و كليد هاي تنظيم صدا و عكس برداري و ... نوشتم و به همراه يه برنامه ساده براي نمونه گذاشتم. اطلاعات كليد هاي مورد نظرم رو هم از اين آدرس گرفتم :

http://www.j2meforums.com/wiki/index.php/Canvas_Keycodes
اين كلاس اول مدل گوشي رو با متود System.getProperty ميگيره و بعد با تابع realCode مقدار اصلي كليد كورد نظر رو بر ميگردونه.
فقط اگه به لينك بالا توجه كنيد، اين كلاس كامل نيست و براي بعضي از گوشي ها، تمام كليد ها تعريف نشدن.
البته بازم همون مقدار قبلي بر ميگرده.

حالا شما بعد از دانلود، فايل Jar داخل پوشه اصلي رو تو گوشيتون نصب كنين و كليد هاييو كه Not Defined مينويسه رو به همراه كدش كه در وسط مياد، در همين جا به همراه مدل گوشيتون بزارين تا اين كلاس تكميل بشه و همه استفاده كنن.

البته فكر نمي كنم زياد پايه باشين !!
ولي بازم اميدي هست.
ممنون

bahman_akbarzadeh
جمعه 02 مرداد 1388, 13:13 عصر
حدس ميزدم پايه نباشين.
اما ديگه فكرشو نمي كردم كه فقط 2 نفر ازش استفاده كنن :اشتباه:
لطفا تست كنين و دكمه هاييو كه تو گوشيتون، Not Defined ميده رو با كدش اينجا بنويسين تا كاملش كنم.
با تشكر

Mah
شنبه 03 مرداد 1388, 10:54 صبح
سلام دوست گرامی.
برنامه شما را تست کردم .
گوشی من Nokia 5320 XpressMusic است . یک گوشی پر کلید از نوکیا .


برای کلیدهای جهتی و کلید ویرایش undefined میداد .



برای کلیدهای +و- و Play,Next,Back که برای کم و زیاد صدا و پخش موزیک و ... هستند نیز هیچ عکس العملی نشان نمیداد .



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


protected void keyPressed(int keyCode) {
int keyUP=getKeyCode(UP);
int keyDown=getKeyCode(DOWN);
int keyLeft=getKeyCode(LEFT);
int keyRight=getKeyCode(RIGHT);
int keyFire=getKeyCode(FIRE);

if(keyCode==keyRight || keyCode==KEY_NUM6)
////////////////////////////////////
else
if(keyCode==keyLeft || keyCode==KEY_NUM4)
//////////////////////////////
}



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

موفق باشید

bahman_akbarzadeh
شنبه 03 مرداد 1388, 11:38 صبح
پیشنهاد می کنم در کلاستان از تابع getKeyCode برای گرفتن کدها استفاده نمائید . این طوری کد هر کلید بر عهده سیستم عامل آن نوع گوشی مورد استفاده کاربر می باشد ...! به همین راحتی ...!
مشكل توابع getKeyCode و getGameAction اينه كه كدي كه بر مي گردونن شايد يك كد درست باشه، اما من مقدارش رو با چي مقايسه كنم؟
مقادير static براي كليدهاي عمومي وجود دارن، ولي براي كليد هاي خاص، من از چه چيزي براي مقايسه استفاده كنم و چه چيزي رو به تابع getKeyCode براي بدست آوردن مثلا كليد Clear پاس بدم؟

Mah
شنبه 03 مرداد 1388, 12:05 عصر
دوست عزیز .
من یک مثال برای شما گذاشتم .
در مثال هم یمی بینید که کد گرفته شده از سیستم عامل موبایل با کد کلیدی که کاربر زده مقایسه می شود .
مگر شما چزی غیر از این می خواهید !!!!
برای کلیدهای مثل C نیز من تابه حال تست نکردم .
دم دستم هم netBeans نیست .
لطفا تست کنید .

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

موفق باشید .

bahman_akbarzadeh
شنبه 03 مرداد 1388, 13:05 عصر
شما منظور منو نگرفتين.
من ميگم فرضا اين دستور كه به اين صورته :


int keyUP=getKeyCode(UP);
چطور ميشه اينطوري نوشت :


int Clear=getKeyCode(CLEAR);
اصلا اين كليد ها بصورت پيش فرض، تعريف نشدن.
من در كلاسي كه نوشتم، اينهارو هم اضافه كردم و بصورت متغير هاي ثابت تعريف كردم.

Mah
یک شنبه 11 مرداد 1388, 11:16 صبح
سلام .


دوست عزیز اینجا را ببین خیلی به دردت می خوره (http://api.farmanager.com/en/winapi/virtualkeycodes.html) .



و اینجا . (http://www.monkeybreadsoftware.net/)


کد کلیدهای اصلی و مجازی .
موفق باشید .