猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
如何连接到Android中的Power按钮?
如何连接到Android中的Power按钮?
在Android设备上,只有音量按钮和电源按钮,我想让应用程序对按下电源按钮(长和短)做出反应。这是怎么做的?
BIG阳
浏览 707
回答 3
3回答
汪汪一只猫
现有的答案并没有完全回答这个问题,并且遗漏了足够的细节,如果没有更多的调查,它们就无法发挥作用。我会分享我在解决这个问题上所学到的。首先,需要向清单文件添加以下权限:<uses-permission android:name="android.permission.PREVENT_POWER_KEY" />要处理短的和长的按压,请将以下重写添加到活动类中:@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_POWER) { // Do something here... event.startTracking(); // Needed to track long presses return true; } return super.onKeyDown(keyCode, event);}@Overridepublic boolean onKeyLongPress(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_POWER) { // Do something here... return true; } return super.onKeyLongPress(keyCode, event);}注意:值得注意的是,onKeydown()将在onKeyLongPress之前触发多次,因此您可能希望触发onKeyUp()或其他逻辑,以防止在用户实际按住onKeydown()时对一系列onKeydown()调用采取行动。我认为下一部分只适用于CyanogenMod。 如果防止电源键常数是未定义的,所以您不应该需要它。要开始拦截电源密钥,需要从活动中设置以下标志:getWindow().addFlags(WindowManager.LayoutParams.PREVENT_POWER_KEY);若要停止拦截电源密钥(允许标准功能),请执行以下操作:getWindow().clearFlags(WindowManager.LayoutParams.PREVENT_POWER_KEY);如果您愿意,可以在程序中反复地在这两种模式之间来回切换。
0
0
0
慕姐4208626
解决办法:@Overridepublic boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) { Intent i = new Intent(this, ActivitySetupMenu.class); startActivity(i); return true; } return super.dispatchKeyEvent(event);}
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Android
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续