کار با کلید های فیزیکی در اندروید+سورس

به نام خدا،در این جلسه می خواهیم با کلید های سخت افزاری اندروید کار کنیم.تمامی دستگاه های تلفن همراه دارای  دکمه های سخت افزاری هستند از جمله VOLUME,POWER,HOME,MENU,BACK.برای تمامی این دکمه در SDK و کتابخانه  اندروید رویداد های تعیین شده که میتونیم ازشون استفاده کنیم.در این آموزش به صورت کامل با این رویداد ها کار خواهیم کرد.

برای شروع کار یک پروژه جدید ایجاد میکنیم.در لایه اصلی برنامه activity_main.xml از دوتا تکست ویو TEXTVIEW برای نمایش نام هرکدام از کلید  در صورت فشرده شدن.(کدهای کامل لایه activity_main.xml).

 <LinearLayout 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/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Action:"
android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
android:id="@+id/action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="30dp"
android:textAppearance="?android:attr/textAppearanceLarge" />


</LinearLayout>

 

در ادامه کار کلاس MainActivity.java رو اجرا کرده و کدهای زیر رو بهش اضافه می کنیم.در داخلی این کلاس ما یک رویداد داریم به نام onKeyDown،این رویداد وظیفه داره در زمانی که هرکدام از کلید های سخت افزاری گوشی فشرده شد و در اصطلاح DOWN شد اطلاعات اون کلید رو بگیره و به TEXTVIEW بفرسته جهت نمایش.رویداد دوم برعکس رویداد اول هست.onKeyUp این رویداد زمانی شورع به کار میکنه که کاربر دستش رو از کلید های سخت افزاری برداره.رویداد سوم موجود در این کلاس onKeyLongPress هست. این رویداد زمانی اجرا میشه که کاربر به مدت دو ثانیه یا بیشتر از آن دستش رو بر روی کلید ها قرار بده.اگر این اتفاق بیفته یک پیغام در قالب TOAST نمایش داده خواهد شد.و در نهایت آخرین رویداد این کلاسonTouchEvent هست.این رویداد وظیفه دار هنگامی که صفحه تاچ گوشی لمس شد وارد عمل بشه و اطلاعات دقیقی از محل تاچ رو در تکست ویو چاپ کنه.(کدهای کلاس MainActivity.java)

 /*
* appinapps.com
* آموزش برنامه نویسی
*/

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MotionEvent;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends Activity {

TextView actionLabel;
int counter = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actionLabel = (TextView) findViewById(R.id.action);
}

@Override
// رویداد دکمه های سخت افزاری برای زمانی که دکمه ها فشرده میشوند
public boolean onKeyDown(int keyCode, KeyEvent event) {

switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
//رویداد برای دکمه سخت افزاریback
actionLabel.setText("KEYCODE_BACK key pressed");
Toast.makeText(this, "Press again back for exit", Toast.LENGTH_SHORT).show();
counter++;
if (counter > 1) {
super.onBackPressed();
}
return true;
//رویداد برای دکمه آپ ولوم
case KeyEvent.KEYCODE_VOLUME_UP:
actionLabel.setText("VOLUME_UP key pressed");
return true;
//رویداد برای دکمهDownولوم
case KeyEvent.KEYCODE_VOLUME_DOWN:
actionLabel.setText("VOLUME_DOWN key pressed");
return true;
}

return super.onKeyDown(keyCode, event);
}

// ایجاد رویداد برای زمانی که دکمه های سخت افزاری رها میشوند
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
//رویداد دکمه back
case KeyEvent.KEYCODE_BACK:
actionLabel.setText("KEYCODE_BACK key released");
return true;
//رویداد دکمه ولومup 
case KeyEvent.KEYCODE_VOLUME_UP:
actionLabel.setText("VOLUME_UP key released");
return true;
//رویداد دکمه ولوم down
case KeyEvent.KEYCODE_VOLUME_DOWN:
actionLabel.setText("VOLUME_DOWN key released");
return true;
}
return super.onKeyDown(keyCode, event);
}

// 
@Override
public void onBackPressed() {
actionLabel.setText("BACK key pressed");
super.onBackPressed();
}

// رویداد برای فشرده کردن دکمه ها برای مدت طولانی 
//(longer than 2 seconds)
@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
Toast.makeText(this, "Pressed for a long time", Toast.LENGTH_SHORT).show();
return true;
}

// رویداد برای تاچ یا لمس کردن صفحه گوشی
// touched
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
actionLabel.setText("Touch press on x: " + x + " y: " + y);
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

سورس این آموزش را می توانید از این لینک دانلود کنید.


فایلهای ضمیمه
توجه! هیچ فایل ضمیمه ای برای این مطلب یافت نشد

نظرات شما نظر جدید
سایر مقالات این دسته
کار با حالت ActionMode در اندرویدکار با انیمیشن ها قسمت اول ساخت Spalsh Screenساخت انیمیشن به صورت کامل قسمت دومحرکت اسلاید بین اکتیوتی ها با انیمیشن ها +سورسمعرفی انواع پایگاه داده (DataBase)کار با دیتابیس در اندروید قسمت اولساخت toggleButton زیبا و سفارشیکار با دیتابیس در اندروید قسمت دومساخت برنامه رادیوی انلاین+سورسکار با حافظه داخلی در اندرویدساخت برنامه تشخیص صدای فارسی و انگلیسی در اندروید+استفاده از سورس های اندروید استودیو در محیط ایکلیپکار با Switch Button در اندرویدتغییر خودکار تصویر پس زمینه لایه ساخت لیست ویو با قابلیت جستوجوی الفباییدانلود تصویر از ادرس اینترنتی+سورسکار با دیتابیس در اندروید:جستجو در sqlite قسمت 1دانلود نسخه جدید و بروز شده محیط توسعه اندرویدکار با دیتابیس در اندروید:جستجو در sqlite قسمت 2ساخت کتاب برای اندروید بدون برنامه نویسیبهترین زبان برنامه نویسی که میتوانید در 2015 بياموكار با Power Manager در اندرويدساخت اسکرول بار سفارشی+سورسساخت گرید ویو سفارشیساخت پروگرس بار با شمارنده +سورسترسیم یک خط با Canvas+سورستغییر نام برنامه به صورت کاملکار با حالت دوبل بک(Double back)ساخت برنامه دو زبانه(Multi language )ساخت لایه و عناصر داینامیک در اندرویدساخت برنامه چاپ متن بر روی تصویر+سورسکار با ShowCase View در اندروید+سورسافزودن لیست به الرت دیالوگ+سورسساخت مرورگر وب سادهکار با Drag And Drop در اندروید+سورسکار با DatePickerDialog در اندروید+سورسکار با فرگمنت ها(ساخت Sliding Navigation Drawer)کار با ViewFlipper (ساخت اسلاید شو تصاویر)ساخت توست سفارشی قسمت دوم زمانبندی Toastکار با BroadcastReceiver ها،ساخت برنامه دریافتsmsطراحی و ساخت صفحه Login Screen + سورسبارگذاری ویدیو از گالری در اندرویدساخت پنجره پاپ آپ + سورسبارش برف بروی تصویر + سورسکار با فیلتر hue رنگی کردن تصویر انتخاب و پخش فایل صوتی از حافظه گوشی+سورساضافه کردن چک باکس به لیست ویوکار با ShelfView یا نمایش کتابخانه ای + سورسکار با TabHost،اضافه کردن تب به برنامه های اندرویدمعکوس کردن رنگ ها(Invert Image) + سورسآموزش کامل ساخت اکشن بار سفارشی+سورسساخت برنامه های واکنش گرا(ریسپانسیو) در اندرویدقسمت دوم صفحات 7 اینچ به بالااضافه کردن انیمیشن به دکمه+سورسکار با View Switcher در اندروید + سورسکار با فیلتر Blur Mask + سورسدانلود پک کامل آیکون های طراحی اندرویدکار با sharedPreferences در اندروید+سورسآموزش کار با proguard،محافظت از برنامه اندرویدپخش فایل صوتی (MP3) از ادرس اینترنتی+سورسپخش ویدیو از آدرس اینترنتی(URL) در اندروید+سورسگوشی های و تبلت های مطرح تا چینی به ساده ترین روشپاسخ به رویداد های WebVeiw دسترسی به وب ویو با استفاده از جاوااسکریپتکار با WIFI اکسس+سورسساخت تقویم هجری برای اندروید+سورسapp rateدانلود و نمایش تصویر در ListView+سورسدانلود و نمایش فایل متنی+سورسکار با کلاس های پایه اکتیویتیآینه کردن تصویر+سورسافزودن آیتم منو سفارشی بهActionBar+سورسارسال اطلاعات از دیتابیس به GridView + سورسکار با کلید های فیزیکی در اندروید+سورسدسترسی به Api هایREST قسمت اولتغییر فونت لیست ویواستفاده از تحلیل گرGoogle Analytics در برنامه اندرویداضافه کردن انیمیشن به دیالوگ ها در اندروید+سورساستفاده ازگیت‌هاب در اندروید استودیوکار با Swipe tab Layouدر برنامه نویسی اندروید دیباگ کردن برنامه اندروید با wifiبهینه سازی مصرف RAM در برنامه نویسی اندرویدافزودن شمارنده صفحه به ViewPager + سورس آموزش نرم افزار SQLite Browserکار با JSON در اندرویدآموزش ساده نصب شبیه ساز اندروید Genymotion