如何获得电源按钮点击事件

时间:2017-06-06 08:32:01

标签: android

我正在尝试捕获电源点击我的Android应用程序,我正在寻找任何解决方案,我只是找到一个有良好的结果,这是当我检测到screenOn / screenOff像这样:

public class Receiver extends BroadcastReceiver {

    private boolean screenOff;

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            screenOff = true;
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            screenOff = false;
        }
        Intent i = new Intent(context, PowerButtonService.class);
        i.putExtra("screen_state", screenOff);
        context.startService(i);
    }
}

这个方法的问题是,在我的应用程序中,我正在寻找屏幕关闭,然后它不适合我。

我也在我的MainActivity中尝试了这个代码,但这并不起作用,对它进行调试,当我向上或向下推动时执行进入内部而不是在我按下电源键时执行:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) {
        Log.i("Main", "Dispath event power");
        Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        sendBroadcast(closeDialog);
        Log.d("DISPATCH", "boton pulsado");
        return true;
    }
    return super.dispatchKeyEvent(event);
}

我在这个问题上遇到同样的问题:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_POWER) {
        Log.w("Test", "Power button down detected");
        return true;
    }
    return false;
}

有人可以帮助我吗?感谢

编辑:我想抓住短按键

抱歉我的英文

0 个答案:

没有答案