当前位置: 首页 > 知识库问答 >
问题:

当手机处于深度睡眠状态时,接收音量键按下事件

梁泰
2023-03-14

我试图捕捉当手机处于深度睡眠模式时的音量增加/减少事件。我读了几篇文章和这里我做了什么。

在Activitiesoncreate方法中,我设置了一个wakelock

PowerManager mgr = (PowerManager)this.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();

我读到,即使我的屏幕被锁定,如果我设置了这个,我的应用程序将响应事件。另外,我已经添加了Android清单的权限。

<uses-permission android:name="android.permission.WAKE_LOCK" />

然后在oncreate方法中声明广播接收器

VolReceiver volumeBroadcastReceiver = new VolReceiver();

IntentFilter filter = new IntentFilter();
filter.addAction("android.media.VOLUME_CHANGED_ACTION");
registerReceiver(volumeBroadcastReceiver, filter);

当应用程序处于前台或后台时,这一切都工作得很好,但然后我通过按电源按钮锁定手机屏幕,应用程序停止接收广播事件,我认为PowerManager必须解决这个问题,但它没有。所以请帮帮我,提供一些信息。

共有1个答案

卜和悌
2023-03-14

我试图捕捉当手机处于深度睡眠模式时的音量增加/减少事件。

根据定义,这是不可能的。

在创建方法的活动中,我设置了一个WakeLock

然后我通过按下电源按钮应用程序停止接收广播事件来锁定手机屏幕

这里有几种可能性。一个是您的进程被终止,因为它不再需要。一旦您不再有任何前台活动,您的进程就有资格被终止,以便为其他应用程序释放内存,这可能在任何时候发生。另一种可能是,当屏幕关闭时,Android根本不发送广播。

 类似资料: