如何在android中覆盖双击电源按钮或音量按钮?
Posted
技术标签:
【中文标题】如何在android中覆盖双击电源按钮或音量按钮?【英文标题】:How to override double click of power button or volume button in android? 【发布时间】:2015-08-15 22:40:36 【问题描述】:我正在尝试创建一个简单的手电筒应用程序
我想要的是,每当用户按 KEYCODE_VOLUME_DOWN 2 次或单次时,我想打开手电筒,或者每当用户按 KEYCODE_POWER 2 次时
可以在任何地方完成,即我的应用是否打开,或者屏幕是否关闭?
出于测试目的,我只是显示 Toast 通知,但我无法覆盖 KEYCODE_POWER ,如何覆盖 KEYCODE_POWER ?
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
switch(keyCode)
case KeyEvent.KEYCODE_POWER:
Toast.makeText(this,"Power Down pressed", Toast.LENGTH_SHORT).show();
textview1.setText("Power Button Pressed");
return true;
case KeyEvent.KEYCODE_VOLUME_UP:
//event.startTracking();
Toast.makeText(this, "Volume Up Pressed", Toast.LENGTH_SHORT).show();
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
Toast.makeText(this,"Volume Down pressed", Toast.LENGTH_SHORT).show();
return true;
return super.onKeyDown(keyCode, event);
【问题讨论】:
看看这篇文章可能会得到帮助click here @Clairvoyant 很好,我认为这是一种技巧,无论如何我会尝试从那个链接中找出一些东西,这很有帮助,你能告诉我我该怎么做吗无论我的应用程序是打开还是关闭,都意味着在任何屏幕上,如果用户按音量增大或减小 2 次或 3 次,应该做些什么? 制作整数变量并在 keydown 方法中为所需条件递增它们并检查值是否大于等于 2 如果为真则按下按钮两次然后将变量值再次设为零它将再次增加到 2 @Clairvoyant 好的,我明白了,谢谢,但我的问题是如何在任何屏幕上执行您所写的上述操作,我的意思是用户不应该运行我的应用程序,比如像这个应用程序这样的后台服务play.google.com/store/apps/… 你无法处理服务中的关键事件 【参考方案1】:从任何地方访问按键,即使手机被锁定,但在屏幕关闭时不能。
创建一个类 Myaccessibility 然后扩展 android.accessibilityservice.AccessibilityService 然后覆盖该类中的 onKeyEvent。
在 Manifest 中注册服务 有关如何创建无障碍服务的更多信息
https://developer.android.com/guide/topics/ui/accessibility/service
【讨论】:
以上是关于如何在android中覆盖双击电源按钮或音量按钮?的主要内容,如果未能解决你的问题,请参考以下文章