Android實(shí)現(xiàn)檢測(cè)實(shí)體按鍵事件并屏蔽
本文實(shí)例為大家分享了Android實(shí)現(xiàn)檢測(cè)實(shí)體按鍵事件并屏蔽的具體代碼,供大家參考,具體內(nèi)容如下
效果圖:

新建服務(wù)類MyKeyEventService.java。用于監(jiān)聽電源鍵的觸發(fā)。
public class MyKeyEventService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
final IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_PRESENT);
final BroadcastReceiver mReceiver = new MainActivity.ScreenReceiver();
registerReceiver(mReceiver, filter);
return super.onStartCommand(intent, flags, startId);
}
public class LocalBinder extends Binder {
MyKeyEventService getService() {
return MyKeyEventService.this;
}
}
}
注冊(cè)服務(wù)類,AndroidManifest.xml文件。
<service android:name=".MyKeyEventService">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</service>
主界面MainActivity.java。
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MyKeyEvent";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startService(new Intent(this, LockService.class));
}
@Override
protected void onDestroy() {
super.onDestroy();
stopService(new Intent(MainActivity.this, LockService.class));
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
Log.i(TAG, "onKeyDown: vol+ down");
return true;
// break;
case KeyEvent.KEYCODE_VOLUME_DOWN:
Log.i(TAG, "onKeyDown: vol- down");
return true;
// break;
case KeyEvent.KEYCODE_POWER:
Log.i(TAG, "onKeyDown: power down");
return true;
// break;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
Log.i(TAG, "onKeyDown: vol+ up");
return true;
// break;
case KeyEvent.KEYCODE_VOLUME_DOWN:
Log.i(TAG, "onKeyDown: vol- up");
return true;
// break;
case KeyEvent.KEYCODE_POWER:
Log.i(TAG, "onKeyDown: power up");
return true;
// break;
default:
break;
}
return super.onKeyUp(keyCode, event);
}
static class ScreenReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
// Log.e(TAG, "onReceive " + intent.getAction());
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
// do whatever you need to do here
Log.e(TAG, "Screen Off");
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
// and do whatever you need to do here
Log.e(TAG, "Screen On");
}
}
}
}
如果不想屏蔽系統(tǒng)按鍵事件,則把**return true;**加上注釋。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android 控制wifi 相關(guān)操作實(shí)例
本篇文章主要介紹了Android 控制wifi 的開發(fā)實(shí)例,并附有實(shí)例源碼等相關(guān)資料,需要的朋友可以參考下2016-07-07
Android ViewPager實(shí)現(xiàn)每隔兩秒自動(dòng)切換圖片功能
圖片來回自動(dòng)切換,設(shè)計(jì)非常人性化,那么圖片自動(dòng)切換功能基于代碼如何實(shí)現(xiàn)的呢?下面小編給大家?guī)砹薃ndroid ViewPager實(shí)現(xiàn)每隔兩秒自動(dòng)切換圖片功能,感興趣的朋友一起看看吧2021-10-10
android計(jì)算pad或手機(jī)的分辨率/像素/密度/屏幕尺寸/DPI值的方法
本文將介紹手機(jī)布局/界面設(shè)計(jì)/分辨率/密度相關(guān),接下來介紹android計(jì)算pad或手機(jī)的分辨率像素等等的方法,感興趣的朋友可以了解下,希望本文可以幫助你2013-01-01
Android TextView和ImageView簡(jiǎn)單說明
Android TextView和ImageView簡(jiǎn)單說明,需要的朋友可以參考一下2013-03-03
Android :okhttp+Springmvc文件解析器實(shí)現(xiàn)android向服務(wù)器上傳照片
這篇文章主要介紹了Android :okhttp+Springmvc文件解析器實(shí)現(xiàn)android向服務(wù)器上傳照片,需要的朋友可以參考下2020-05-05
詳解如何在Android中實(shí)現(xiàn)懸浮Activity
本篇文章主要介紹詳解如何在Android中實(shí)現(xiàn)懸浮Activity,通過修改Activity的實(shí)現(xiàn)來適配平板設(shè)備,已達(dá)到代碼的最大利用率。有興趣的可以了解一下。2017-01-01

