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%

    }
}

ドキュメントを見ると、ステータスは「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      
                }
    }

基本的に最初のコードと同じですが、レベルの変更をチェックしていますか?

4

1 に答える 1

3

がマスクstatus組み合わせである場合、値にビットが含まれているかどうかを判断するために、このテストが必要になると思います。BSTAT_ intBSTAT_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%
        }
    }
}
于 2012-09-17T05:55:00.880 に答える