gpt4 book ai didi

Android:从服务唤醒屏幕

转载 作者:行者123 更新时间:2023-11-30 01:53:45 27 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,它可以聆听周围的声音并执行命令。

命令之一是唤醒屏幕。

为了实现该目标,我在我的服务中使用了以下函数:

private void wakeupScreen() {
new AsyncTask<Void, Void, Exception>() {
@Override
protected Exception doInBackground(Void... params) {
try {
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock fullWakeLock = powerManager.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "Loneworker - FULL WAKE LOCK");
fullWakeLock.acquire(); // turn on
try {
Thread.sleep(10000); // turn on duration
} catch (InterruptedException e) {
e.printStackTrace();
}
fullWakeLock.release();
} catch (Exception e) {
return e;
}
return null;
}
}.execute();
}

但是,这段代码有几个问题:(它在服务上运行)

  • 使用 SCREEN_BRIGHT_WAKE_LOCKFULL_WAKE_LOCKdeprecated .

  • 使用 AsyncTask 和 sleep 似乎不是以非阻塞方式打开屏幕的糟糕解决方案。

我想知道是否存在更优雅的方法。有什么建议吗?

最佳答案

显然,没有优雅的方法可以实现该目标。

我将为 future 的读者总结我对该问题的 3 个非优雅的解决方案:

  • 以异步方式使用唤醒锁:

    private void wakeupScreen() {
    new AsyncTask<Void, Void, Exception>() {
    @Override
    protected Exception doInBackground(Void... params) {
    try {
    PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock fullWakeLock = powerManager.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "Loneworker - FULL WAKE LOCK");
    fullWakeLock.acquire(); // turn on
    try {
    Thread.sleep(10000); // turn on duration
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    fullWakeLock.release();
    } catch (Exception e) {
    return e;
    }
    return null;
    }
    }.execute();
    }
  • Launch an activity that turns the screen on.

  • Simulate HOME button click. (与方案二类似,无需创建自定义activity,行为略有不同)

我发现第一个解决方案最适合我的需求。

关于Android:从服务唤醒屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32591360/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com