无法在需要时获取电池电量。该方法仅在电池状态更改或电池电量更改时触发。这里我编写了一个插件,用于随时随地获取电池电量。
在源文件夹中创建这些java文件
在源文件夹中创建 Bat_lev 插件
package org.apache.cordova.example;
import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
public class Bat_lev extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("echo")) {
String message = args.getString(0);
this.echo(message, callbackContext);
return true;
}
return false;
}
private void echo(String message, CallbackContext callbackContext) {
PowerConnectionReceiver p1=new PowerConnectionReceiver();
Context context=cordova.getActivity();
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);
p1.onReceive(cordova.getActivity(), batteryStatus);
callbackContext.success(""+ p1.BAT_LEVEL);
}
}
下面的java类为我们提供电池电量
package org.apache.cordova.example;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.BatteryManager;
public class PowerConnectionReceiver extends BroadcastReceiver {
static int BAT_LEVEL;
@Override
public void onReceive(Context context, Intent intent) {
int currentLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
int level = -1;
if (currentLevel >= 0 && scale > 0) {
level = (currentLevel * 100) / scale;
}
BAT_LEVEL = level;
}
}
编写这段 JavaScript 代码来获取电池电量
function bat_level() {
window.echo = function(str, callback) {
cordova.exec(callback, function(err) {
callback('Nothing to echo.');
}, "Bat_lev", "echo", [str]);
};
window.echo("echome", function(echoValue) {
console.log(echoValue);
localStorage.bat_level=echoValue;//u can use this value anywhere u want
});
}
并确保将此行添加到 config.xml
<feature name="Bat_lev" >
<param
name="android-package"
value="org.apache.cordova.example.Bat_lev" />
</feature>