【问题标题】:WakeLock turns screen on only when chargingWakeLock 仅在充电时打开屏幕
【发布时间】:2013-10-30 10:11:29
【问题描述】:

我编写了一个简单的倒计时应用程序,我使用下面的代码在倒计时结束时打开屏幕、振动并播放警报声:

Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Vibrator v = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
RingTone r = RingtoneManager.getRingtone(mContext, notification);
WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "Countdown Timer");

wl.acquire(1000);

v.vibrate(pattern, -1);     
r.play();

虽然这在手机充电时可以正常工作,但当我断开充电器时,wakelock 不会打开屏幕,当我使用电源按钮手动打开屏幕时,我只会收到振动和警报。

当我在不同的设备上测试它时,它似乎工作正常。

有什么想法吗?

【问题讨论】:

    标签: android wakelock


    【解决方案1】:

    您的代码wl.acquire(1000); 将在 1 秒后释放唤醒锁。试试这个代码:

    wl.acquire();
    v.vibrate(pattern, -1);     
    r.play();
    w1.release();
    

    【讨论】:

    • 我也试过了,但没有什么不同。还尝试将时间增加到 5 秒。
    • 这很奇怪。也许您应该尝试为您的手机型号寻找这个。也许有一个错误?
    • 可能是。我会尝试在不同的设备上进行更多测试。
    【解决方案2】:

    我用这个很好用

    // set up wakelock
    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    WakeLock wakelock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen");
    wakelock.acquire();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      相关资源
      最近更新 更多