我正在研究一種傾聽周圍聲音並執行命令的Android應用程序。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_LOCK
和FULL_WAKE_LOCK
是deprecated。AsyncTask和sleep的使用看起來像是一種以非阻塞方式打開屏幕的不好解決方案。
我想知道是否有更優雅的方式存在。有什麼建議麼?
但是一個服務沒有'getWindow'方法。 – barak1412