Android實現(xiàn)檢測實體按鍵事件并屏蔽
本文實例為大家分享了Android實現(xiàn)檢測實體按鍵事件并屏蔽的具體代碼,供大家參考,具體內(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;
}
}
}
注冊服務(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;**加上注釋。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
實例講解Android中ContentProvider組件的使用方法
這篇文章主要介紹了Android中ContentProvider組件的使用方法,包括ContentProvider使用單元測試的步驟,需要的朋友可以參考下2016-04-04
Android實現(xiàn)圖片隨手指旋轉(zhuǎn)功能
這篇文章主要為大家詳細介紹了Android實現(xiàn)圖片隨手指旋轉(zhuǎn)功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
Android中WebView加載的網(wǎng)頁被放大的解決辦法
這篇文章主要介紹了Android中WebView加載的網(wǎng)頁被放大的問題的解決辦法,非常不錯,具有參考借鑒價值,需要的朋友參考下2016-12-12
詳解LeakCanary分析內(nèi)存泄露如何實現(xiàn)
這篇文章主要為大家介紹了詳解LeakCanary分析內(nèi)存泄露如何實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12

