2012-11-29 71 views
1

我想在某些代码后更换电池。我正在使用下面的代码,但不幸的是没有运气。我得到零的任何想法,请在特定代码后获取Android上的电池电量

在上创建一个:

batteryIntent = registerReceiver(null,new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 

private double batteryLevel() { 
    int rawlevel = batteryIntent.getIntExtra("level", -1); 
    double scale = batteryIntent.getIntExtra("scale", -1); 
    double level = -1; 
    if (rawlevel >= 0 && scale > 0) { 
     level = rawlevel/scale; 

    } 
return level; 

} 

,并在的onClick:

double startbatterylevel = batteryLevel(); 

//certain code 

double estimatedbattery = startbatterylevel - endbatterylevel ; 
Estbatterylevel.setText("estimated battery"+estimatedbattery); 
+2

也许电池没有变化? – Yahia

+1

你怎么知道应该有?采取时间不是一个可行的提示/参数...有很多方面,可以生效电池... – Yahia

回答

3

就像你写的那样,我们不知道问题出在电池电量检测方法还是减法。 batteryLevel();方法的输出是什么?它是准确还是始终是默认值?

你可以尽量去适应这个页面上的例子:http://mobiledevtuts.com/android/android-sdk-get-device-battery-information/

public void onCreate(Bundle savedInstanceState) { 
    ... 
    this.registerReceiver(this.batteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
    ... 
} 

private BroadcastReceiver batteryInfoReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); 
     Estbatterylevel.setText("estimated battery" + level); 
    } 
}; 

如果仍显示为0,也许有兼容性问题。你能提供你的设备规格和Android版本吗?

+0

输出零 – user1862650

+0

你注册了'BroadcastReceiver'你的清单吗? – tolgap

+0

我想不,你能否让我知道该怎么做? – user1862650