Android:监听电源键按下

2024-02-05

我目前正在尝试监听何时按下电源按钮。最终,我希望在按两次电源按钮时运行一些代码,以检查屏幕是否锁定或解锁。我目前有这个:

  @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);//prevent phone from being locked
}

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {

    switch (keyCode) {
        case KeyEvent.KEYCODE_POWER:
        {
            Toast.makeText(getBaseContext(), "Power button pressed", Toast.LENGTH_LONG).show();

            return true;
        }
        case KeyEvent.KEYCODE_MENU:
            Toast.makeText(getBaseContext(), "Menu Button Pressed", Toast.LENGTH_LONG).show();

            return true;
    }
    return super.onKeyDown(keyCode, event);
}

该代码可以很好地为菜单键事件祝酒,但不会为电源键事件执行任何操作。有任何想法吗?


尽管我无法捕获硬件键,但我最终能够通过使用监听屏幕是否关闭或打开的广播接收器来猜测按下电源键。我用了:

            if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
                    //do something 
            }

            else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
                    //do something else
            }

通过几秒后超时的计数,我能够更加确定是否按下了电源按钮。这样,我让用户按电源按钮三次以确保正确的行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:监听电源键按下 的相关文章

随机推荐

  • Chrome 扩展页面 popup.html 无法调整大小

    所以我有这个 Chrome 扩展程序 可以从互联网上加载一些内容 基本上 用户单击弹出图标 然后后台页面中的一些 JavaScript 加载一些页面 从中解析图像并将其放入 popup html 页面中 问题是 popup html 没有调
  • 在 C# 中扩展枚举

    我想知道是否可以扩展 C 中的 Enum 类型来实现我的自定义 Enum GetValues type 并像 Enum GetMyCustomValues type 那样调用它 我正在尝试实现这样的事情 public static bool
  • 使用 C++ 命名参数习惯用法的更好方法?

    我一直在为 Windows 开发一个 GUI 库 作为个人业余项目 不希望有用 对于我的主窗口类 我设置了选项类的层次结构 使用命名参数惯用语 http www parashift com c faq lite named paramete
  • Microsoft Edge:本地/会话存储无法在新选项卡中工作

    我正在开发一个托管在 Azure 中的 Web 应用程序 我在 MS Edge 版本 20 10525 0 0 上尝试过 但遇到了以下问题 我有一个带有 target blank 的链接 可以在新选项卡中打开页面 在该链接的点击事件中 我将
  • 将日期字符串转换为正确的格式

    我收到服务器的响应 并且需要将日期字符串转换为日期 2017 年 6 月 29 日星期四 07 15 25 0000 我正在尝试将字符串转换为人类可读的格式 谁能建议如何将此字符串转换为日期 您需要将日期字符串解析为Date对象使用Date
  • 可捕获的致命错误:类 mysqli 的对象无法转换为字符串

    所以我有一个问题 我对 PHP 非常陌生 并且在更新数据库上的字符串时遇到问题 它抛出了这个错误 Catchable fatal error Object of class mysqli Could not be Converted to
  • 获取类型的默认构造函数的最有效方法

    获取 System Type 的默认构造函数 即不带参数的实例构造函数 的最有效方法是什么 我正在思考下面的代码 但似乎应该有一种更简单更有效的方法来做到这一点 Type type typeof FooBar BindingFlags fl
  • 如何从对象中深度删除空值、空对象和空数组

    我有一个看起来像这样的对象 var myObject a b c d 2 e 2 f g h i null 2 我想删除空值和空对象 数组和对象 使其看起来像 a c d 2 e 2 i 2 该函数应删除空值 空对象和空数组 有什么优雅的方
  • 找出远程服务器上git的版本

    我正在本地计算机上寻找 git 命令 我可以运行该命令来查找远程服务器上运行的 git 版本 如果这可能的话 现代 git 服务器 始于git 1 7 12 1 https github com git git commit ff5effd
  • 运行Hadoop时如何避免OutOfMemoryException?

    我正在运行一个超过 1 5 TB 数据的 Hadoop 作业 并进行大量模式匹配 我有几台每台 16GB RAM 的机器 我总是得到OutOfMemoryException使用这些数据来完成这项工作 我正在使用 Hive 我想知道如何最佳设
  • 多行函数调用的左括号必须是该行的最后一个内容

    我在 PHP 文件中写入以下代码 public function ScriptsStyles wp enqueue style fontawesome plugins url css font awesome css FILE array
  • WPF:“名称”和“x:名称”之间有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 在 WPF 中 x Name 和 Name 属性之间有什么区别 https stackoverflow com questions 589874 in wpf what are the differe
  • Android CoroutineScope 完成后自动取消

    我想知道是否coroutineScope工作完成后将自动取消 假设我创建了一个coroutineScope在自定义类中而不是 ViewModel类或Fragment Activity class class MyClass private
  • firebase存储cors奇怪的行为

    我正在构建一个应用程序 让用户看到一组缩小的图像 然后按 确定 让应用程序下载所有原始文件 将它们放入 zip 文件中并发送 zip 文件 该应用程序使用polymer polymerfire firebase 包括存储 在上传图像的过程中
  • 组合两个 Linq lambda 表达式

    Expression
  • 没有 AppBar 的 Flutter 布局

    我需要一个没有应用栏的布局 所以最明显的方法是省略appbar标签上的Scaffold但如果我这样做 内容就会出现在状态栏下方 如下所示 正如您所看到的 我的蓝色容器从状态栏下方开始 但事实并非如此 因此我必须手动设置容器的边距 这不太好
  • 在文件夹中查找最新文件并打开它(vba 访问)

    我正在尝试使用以下代码通过访问按钮宏打开文件夹中的最新文件 使用 if 语句进行测试 没有发现任何问题 但是一旦我使用了 do while 我就收到了运行时 6 溢出的错误消息 does len dir 不能使用循环 下面是我的代码 Pri
  • 在终端中,将多个文件夹合并为一个

    我有一个由 WDBackup 西部数据外置硬盘备份实用程序 创建的备份目录 其中包含每天备份的目录以及备份内容的增量内容 所以层次结构看起来像这样 20100101 My Documents Letter1 doc My Music Bes
  • 根据从 WSDL 中提取的多个模式验证 XML

    我尝试使用 SAAJ 手动处理 Web 服务请求 但仍然根据 Web 服务的 WSDL 架构验证接收到的请求 这个特定的 WSDL 包含多个元素 我使用 wsdl4j 提取这些元素 当我尝试创建新的验证器时 我收到一条错误消息 说明该验证器
  • Android:监听电源键按下

    我目前正在尝试监听何时按下电源按钮 最终 我希望在按两次电源按钮时运行一些代码 以检查屏幕是否锁定或解锁 我目前有这个 Override public void onCreate Bundle savedInstanceState supe