2012-09-17 46 views
0
public void batteryStatusChange(int status) 
{ 
    if(DeviceInfo.getBatteryLevel() == 70) 
    { 
// TODO Auto-generated method stub 
     //play a tune that tells the user that yourbattery is at 70% 

    } 
} 

望着文檔,狀態batteryStatusChange(int status)函數在BlackBerry OS 6中如何工作?

如果我的電池電量百分比下降,例如,71%至70%「從DeviceInfo的BSTAT_xxx口罩的組合」,將這個函數將被調用SystemListener2接口,即使我不使用狀態參數?

如果我想在BSTAT中做更具體的說明,比如只在電池電平發生變化時激活功能內部的方法,而不是在檢測到任何類型的變化(如熱或冷)時激活,則此代碼:

public void batteryStatusChange(int status) 
    { 
     if(status == DeviceInfo.BSTAT_LEVEL_CHANGED) 
      if(DeviceInfo.getBatteryLevel() == 70) 
       { 
      //play a tune that tells the user that ur battery is at 70% 
     // TODO Auto-generated method stub  
       } 
    } 

基本上和第一個代碼是一樣的,但是通過檢查水平的變化?

回答

3

如果status組合BSTAT_口罩,那麼我想你會希望這個測試,以確定是否int值包含BSTAT_LEVEL_CHANGED位。

public void batteryStatusChange(int status) 
{ 
    if ((status & DeviceInfo.BSTAT_LEVEL_CHANGED) != 0) 
    { 
     if(DeviceInfo.getBatteryLevel() == 70) 
     { 
      //play a tune that tells the user that ur battery is at 70% 
     } 
    } 
} 

或者,我想另一種方式來跟蹤這個自己僅僅是記錄水平作爲成員變量:

private int currentBatteryLevel = -1; 

public void batteryStatusChange(int status) 
{ 
    int newBatteryLevel = DeviceInfo.getBatteryLevel(); 
    if (currentBatteryLevel != newBatteryLevel) 
    { 
     currentBatteryLevel = newBatteryLevel; 
     if(DeviceInfo.getBatteryLevel() == 70) 
     { 
      //play a tune that tells the user that ur battery is at 70% 
     } 
    } 
} 
+1

我不知道,但可能這個代碼有編譯錯誤'狀態&DeviceInfo.BSTAT_LEVEL_CHANGED'。它不是布爾值。 –

+0

@EugenMartynov,謝謝!當我輸入那個數字時,我可能正在用'C'思考:) – Nate

+0

我的第二個代碼片段不會像第一個代碼片段那樣工作嗎?我猜測比較對方的位更準確? – Dog