batteryStatusChange(int status)函数在BlackBerry OS 6中是如何工作的


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%
}
}

查看文档,状态为"DeviceInfo的BSTAT_xxx掩码的组合">

如果我的电池电量百分比下降,例如71%到70%,即使我不使用状态参数,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      
}
}

基本上和第一个代码做的一样,但是随着级别的变化进行检查?

如果statusBSTAT_掩码组合,那么我认为您需要此测试来确定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%
}
}
}

最新更新