2013-07-03 33 views

回答

1

簡短的回答:第

龍答:是的,可以。但不說容易..因爲你不知道設備消耗多少能量,你應該首先嚐試找出那個數據,然後使用該數據計算剩餘時間...

正如你可能已經猜到的那樣已經,它可能不是那麼準確,但你越是sample,數據就越準確。 所以在這裏得出結論是你必須做的:

首先當用戶打開應用程序,因爲你沒有足夠的能源消耗數據,你應該只顯示像Calculating...。在這裏你應該決定抽樣時間。這就像數學中的derivation ..

假設您的採樣時間爲10秒。 (你的實際應該更大,我猜。)

你應該有一個變量名爲level1。保存當前的級別。等待數量爲sample time,現在爲10秒。現在將當前值保存到level2 ..將level1 - level2產品保存到另一個變量,如consumed

現在,這裏是神奇的。您知道在10秒鐘內消耗了多少電量(這是consumed變量)。從現在開始,您可以使用該數據計算剩餘時間。但請記住它仍然是10秒。如果這10秒用戶正在玩一場沉重的比賽,或者甚至該設備處於待命狀態呢?這就是它不準確的原因。但直到現在..

你可以做的是將consumed變量添加到一個名爲sample_data的數組中。讓該過程繼續並每10秒採樣一次並將其添加到數組中。您獲得的數據越多,您的計算結果就越準確。

然後你就可以很容易地計算出使用樣本的平均值數組..易peasy在剩餘的時間:P

+0

Ahaha是啊這很「容易」!好吧,我明白你寫了什麼。但也許對我來說現在有點複雜:)謝謝 –

+0

我假設你會使用battery_level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,-1)來獲得你的level1,level2等等。由於這個答案不是很安卓具體來說,我會補充一點:如果你在UI線程上運行這樣的應用程序(就像你通常會這樣做),它將無法工作。它必須是使用[IntentService類](https://developer.android.com/training/run-background-service/create-service.html)的後臺服務。 –

+1

@ user2508402是的,也許這對我來說很容易說話,但實施它會很難..但至少試着去做,如果您有任何問題,我在這裏回答:) –

2

您無法準確猜測電池放電剩餘多少時間,您只需進行一些估算即可。

您可以通過註冊一個接收器的行動得到的電池壽命與廣播接收器的幫助下Intent.ACTION_BATTERY_CHANGED

battery_level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); 

編輯:

你應該做的,是定期獲得battery_level和檢查多少每分鐘/每小時消耗電池,並進行一些計算。

所以,如果您的電池是80%,每小時的下降4%,你有20個小時來評價,電池壽命

+0

海報想要計算的剩餘時間,而不是百分比。 –

+0

您無法準確猜測電池放電剩餘多少時間,您只需進行一些估算,但需要大量代碼並以root身份監控所有系統進程。 –

+0

我知道,你應該在答案中提到。 –