2016-01-22 73 views
0

建立一個Cordova/Ionic應用程序,讓用戶可以使用webrtc(peerJs)實時查看Andoroid手機的相機。屏幕關閉時部分喚醒鎖釋放

我需要讓設備關閉屏幕(比方說)15秒後,並繼續將視頻傳輸到其他Android設備。

據我所知要處理這個問題,我需要獲得一個PARTIAL_WAKE_LOCK(這允許屏幕關閉,並保持應用程序運行),並且永遠不會釋放它,所以應用程序不停地向我發送視頻。

我決定去一個Android原生實現,所以我獲得了onStart()方法的鎖,出現在platform \ android \ CordovaLib \ src \ org \ apache \ cordova \ CordovaActivity.java中目前幾乎每個教程

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
     wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, 
     "My wakelook"); 
     wakeLock.acquire(); 

我第一次嘗試上面的代碼,獲得SCREEN_DIM_WAKE_LOCK。它的工作,屏幕從來沒有關閉,它讓我無休止地發送視頻。這讓我覺得喚醒鎖獲得成功。當我將代碼更改爲PARTIAL_WAKE_LOCK時,屏幕在15秒後關閉,視頻剛剛凍結。

我讀過獲取wakelock的類必須擴展「Application」,但是這個類CordovaActivity擴展了Activity,我不能讓它擴展另一個類,也不能用「Application」替換「Activity」。我不知道這是否是必要的,因爲上面的代碼使用SCREEN_DIM_WAKE_LOCK可以正常工作。

我試着用這個插件https://github.com/boltex/cordova-plugin-powermanagement來獲得部分喚醒鎖,但它的確如上所述。

謝謝

回答

0

原來,喚醒鎖並未釋放。會發生什麼情況是相機的編程與屏幕的狀態緊密耦合。即使CPU仍然打開,關閉屏幕禁用了相機,這就是爲什麼視頻凍結。