这篇文章主要介绍了Android实现检测实体按键事件并屏蔽,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了Android实现检测实体按键事件并屏蔽的具体代码,供大家参考,具体内容如下
效果图:

新建服务类MyKeyEventService.java。用于监听电源键的触发。
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;
}
}
}
注册服务类,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");
}
}
}
}
如果不想屏蔽系统按键事件,则把**return true;**加上注释。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程学习网。
织梦狗教程
本文标题为:Android实现检测实体按键事件并屏蔽
基础教程推荐
猜你喜欢
- Flutter绘图组件之CustomPaint使用详解 2023-05-12
- IOS 播放系统提示音使用总结(AudioToolbox) 2023-03-01
- IOS应用内跳转系统设置相关界面的方法 2022-11-20
- Android多返回栈技术 2023-04-15
- Android中的webview监听每次URL变化实例 2023-01-23
- iOS开发教程之XLForm的基本使用方法 2023-05-01
- 解决Android Studio突然不显示logcat日志的问题 2023-02-04
- Android开发使用RecyclerView添加点击事件实例详解 2023-06-15
- Flutter手势密码的实现示例(附demo) 2023-04-11
- android studio按钮监听的5种方法实例详解 2023-01-12
