gpt4 book ai didi

android - 如果在服务中按下电源按钮 3 秒或单击 3 次,则捕获事件

转载 作者:行者123 更新时间:2023-12-05 07:49:54 25 4
gpt4 key购买 nike

我想在我的应用程序中捕获电源按钮按下事件,并且也在后台运行的服务内。为此,我在 Broadcast Receiver 中使用了以下代码。

private static final String ACTION="android.intent.action.SCREEN_ON";
private BroadcastReceiver yourReceiver;

onReceive()方法:

final IntentFilter theFilter = new IntentFilter();
theFilter.addAction(ACTION);
this.yourReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
// Do whatever you need it to do when it receives the broadcast
// Example show a Toast message...
Log.d("button","button pressed");
Toast.makeText(context,"pressed",Toast.LENGTH_LONG).show();
}
};

通过这段代码,我能够检测到接收器中按钮的按下事件。

现在我想检测电源按钮是否被按下 3 秒或更长时间 然后我想在我的接收器中执行特定操作。为此我发现了这个方法

    @Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_POWER) {
// Do something here...
return true;
}
return super.onKeyLongPress(keyCode, event);
}

但是我发现这个方法只会在一个 Activity 中运行,但我想在一个服务中调用它。

有什么方法可以检测电源按钮是否被按下 3 秒,或者我们可以在 Service 中使用上述方法。

最佳答案

在 android 中,没有办法做到这一点“不把事情弄得一团糟”,如果你需要这样做,你实际上做错事的可能性很高,因为服务文档中指定“服务是一个应用程序组件表示应用程序希望在不与用户交互的情况下执行长时间运行的操作”。服务组件仅用于长期执行的任务,这些任务不需要任何交互,也完全不依赖于除启动和停止之外的 Activity 的特定操作。默认情况下,该服务不包含您需要的输入法,但只是为了回答您的问题。一种方法是将服务绑定(bind)到 Activity ,从 Activity 中获取服务引用,在服务中实现一个方法,然后在调用 onKeyPress 时从 Activity 中执行该方法。

关于android - 如果在服务中按下电源按钮 3 秒或单击 3 次,则捕获事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36807692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com