|
针对这个问题,我写了个测试APP,用TimerTask定时器每10秒中断一次,播放一次短暂的声音。灭屏后每10秒听到一次响声。没过几分钟就听不到声音了,估计是休眠了(休眠了就连CPU也停止执行了)。用手点一下屏,OLED屏见到解锁界面,一会儿又可以听到声音了。过一会后又听不到声音了。我用另外一个手机发微信给测试的手机,测试手机来微信消息了,同时我的测试程序也有声音了。我在我的测试软件里加上电源锁,阻止系统进入休眠,加上这代码后果然,我的测试程序每10秒就响一声,没有停止过。但问题是阻止系统进入休眠肯定影响整个手机的待机时间。但微信为什么又可以在休眠时收到消息呢?他用了什么技术?我猜测如下 :有TCP/IP数据进入,网络模块唤醒了系统。你们觉得呢?
class Task extends TimerTask {
// 必须实现方法run()
public void run() {
这里播放半秒语音
}
}
电源锁:
//在获取电源锁的程序中,必须在其Manifest.xml文件中加入下面的权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
private PowerManager.WakeLock mWakeLock;
//申请设备电源锁
private void acquireWakeLock()
{
if (null == mWakeLock)
{
PowerManager pm = (PowerManager)this.getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK|PowerManager.ON_AFTER_RELEASE,"");
if (null != mWakeLock)
{
mWakeLock.acquire();
}
}
}
//释放设备电源锁
private void releaseWakeLock()
{
if (null != mWakeLock)
{
mWakeLock.release();
mWakeLock = null;
}
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|