繁体   English   中英

记录传感器数据时的PARTIAL_WAKE_LOCK

[英]PARTIAL_WAKE_LOCK when recording sensor data

我正在记录诸如加速度计,方向,陀螺仪之类的传感器数据。 此数据每隔一段时间就会写入onSensorChanged更新文件中。

我的问题是,当我将手机置于待机状态时,传感器数据停止写入文件。 因此,我做了一些研究,决定使用PowerManager和唤醒锁进行设置

  • PARTIAL_WAKE_LOCK:我只是无法正常工作。
  • SCREEN_DIM_WAKE_LOCK:我的代码可以正常使用。 从我阅读的内容来看,使用PARTIAL_WAKE_LOCK似乎存在问题。

对于它是否仍然存在问题,我似乎找不到确切的答案。 我什至尝试了人们建议的一些破解方法,例如在屏幕关闭时使用itent捕获,然后取消注册传感器并再次注册。 但是此解决方案不起作用。 据我所知,它是否可以工作似乎不一致,并且似乎取决于电话。 我已经在运行Android2.2的HTC Wildfire和运行Android2.3的Nexus S上试用了我的代码。

我的应用程序是一个基本上在后台运行且具有长期运行服务的应用程序。 因此,拥有PARTIAL_WAKE_LOCK对于电池寿命很重要。

仅定义为从Android 2.3开始使用。 在此之前,该平台会在屏幕关闭时明确关闭所有传感器,以减少电池消耗。

这是一个很老的问题,我仍然会回答,因为今天几乎所有设备都超过了2.3

创建后台服务并以以下方式使用部分锁定唤醒:

首先要注意权限(在清单文件中):

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

然后,最好在应用程序文件中或任何地方使用它:

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
                "MyWakelockTag");
if(/*condition*/) {
    wakeLock.acquire(); //keep CPU awake
} else {
    wakeLock.release(); //disable keep CPU awake
}

尽管这是一个很酷的功能,但它会耗尽您的电池寿命,因此请负责任地使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM