Ionic 4 中的电池状态有问题
Having issue with Battery status in Ionic 4
我正在使用 Ionic4,我正在尝试获取设备的电池电量。但我得到一个错误:
错误类型错误:无效的事件目标
对于电池电量,我不确定。
有没有人运行遇到同样的问题
ionic 上有一个未解决的错误报告:https://github.com/ionic-team/ionic-native/issues/2972
不幸的是,目前还没有解决方案,但是有一个解决方法可以绕过 ionic 打字稿包装器,直接监听 window 事件。
fromEvent(window, 'batterystatus').subscribe((status) => {
console.log(status)
});
这就是我在 Ionic 4 中获取电池状态的方法:
window.addEventListener('batterystatus', this.onBatteryStatus, false);
onBatteryStatus(status) {
console.log('Level: ' + status.level + ' isPlugged: ' + status.isPlugged);
}
一个简单的方法可能是这样的:
$ ionic cordova plugin add cordova-plugin-battery-status
$ npm install --save @ionic-native/battery-status@4
然后在你的代码中:
import { Platform } from 'ionic-angular';
import { BatteryStatus } from '@ionic-native/battery-status';
batterylevel = 0;
constructor(...
private batteryStatus: BatteryStatus,
private plt: Platform ) {}
ionViewDidEnter()
{
// Cordova check
if(this.plt.is('core') || this.plt.is('mobileweb'))
{
// NO. It's a browser.
// don't call the batery.
}
else
{
const batterysubscription = this.batteryStatus.onChange().subscribe(status => {
this.batterylevel = status.level;
});
}
}
yourfunction()
{
console.log(this.batterylevel);
}
您还需要将其添加到您的提供商列表中。
当然,这只适用于仿真或设备。
我正在使用 Ionic4,我正在尝试获取设备的电池电量。但我得到一个错误: 错误类型错误:无效的事件目标 对于电池电量,我不确定。
有没有人运行遇到同样的问题
ionic 上有一个未解决的错误报告:https://github.com/ionic-team/ionic-native/issues/2972
不幸的是,目前还没有解决方案,但是有一个解决方法可以绕过 ionic 打字稿包装器,直接监听 window 事件。
fromEvent(window, 'batterystatus').subscribe((status) => {
console.log(status)
});
这就是我在 Ionic 4 中获取电池状态的方法:
window.addEventListener('batterystatus', this.onBatteryStatus, false);
onBatteryStatus(status) {
console.log('Level: ' + status.level + ' isPlugged: ' + status.isPlugged);
}
一个简单的方法可能是这样的:
$ ionic cordova plugin add cordova-plugin-battery-status
$ npm install --save @ionic-native/battery-status@4
然后在你的代码中:
import { Platform } from 'ionic-angular';
import { BatteryStatus } from '@ionic-native/battery-status';
batterylevel = 0;
constructor(...
private batteryStatus: BatteryStatus,
private plt: Platform ) {}
ionViewDidEnter()
{
// Cordova check
if(this.plt.is('core') || this.plt.is('mobileweb'))
{
// NO. It's a browser.
// don't call the batery.
}
else
{
const batterysubscription = this.batteryStatus.onChange().subscribe(status => {
this.batterylevel = status.level;
});
}
}
yourfunction()
{
console.log(this.batterylevel);
}
您还需要将其添加到您的提供商列表中。
当然,这只适用于仿真或设备。