2012-11-16 54 views
0

我有一個應用程序,它以連續的方式使用TTS。一旦開始,它應該不斷創建問題和答案。然而,我想在給出答案之前等待一段時間。android:在手機處於睡眠狀態時使用TTS的正確方法

目前我使用這個

public void WaitSeconds(int seconds) { 
    long time0, time1, diff; 
     time0 = System.currentTimeMillis(); 
    do{ 
     time1 = System.currentTimeMillis(); 
     diff = time1 - time0; 
    } 
    while (diff < seconds * 1000); 
    } 

這並不工作,但只有等到手機進入休眠狀態。之後,如果秒數設置爲3或更少,它會繼續工作,否則它會開始等待顯然是隨機的時間。答案可能在10秒甚至1分鐘後以不可預知的方式出現(至少對我而言)。 當我按任何按鈕的應用程序「醒來」並說出答案,但我需要它沒有用戶輸入。

編輯----------------------

我試圖使用激活鎖定,作爲建議,但它似乎並沒有工作。

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    PowerManager.WakeLock mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "TTS Wake Lock"); 
    mWakeLock.acquire(); 

的錯誤信息是:「喚醒鎖定最終確定,同時還舉行了」 我看到其他人有這個問題,但代碼移動到的onCreate解決。在我的情況下,它並沒有解決任何問題。

回答

0

如果您需要在電話關閉時運行,則需要使用喚醒鎖。這樣可以讓手機保持打開狀態(保持屏幕開啓或關閉屏幕但保持運行狀態)。

+1

另外,這是一種可怕的睡眠方式。你在燃燒時鐘週期,什麼也不做,這會殺死電池。你應該使用鬧鐘,這樣你就不會在等待。 –

+0

但是WakeLock不是很難用電池嗎?這就是爲什麼我想我必須首先避免它。 – DavidTonarini

+0

是的,但不像繁忙的循環那麼難。您也不需要完整的喚醒鎖定,只需部分(僅限CPU,不顯示)。 –

相關問題