<template>
|
|
<view class="yingbing-battery">
|
|
<view class="yingbing-battery-wrapper" :style="{
|
|
'border-color': color
|
|
}">
|
|
<view class="yingbing-battery-content">
|
|
<view class="yingbing-battery-content-value" :style="{
|
|
'background-color': color,
|
|
width: value + 'px'
|
|
}">
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="yingbing-battery-top" :style="{
|
|
'background-color': color
|
|
}"></view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
const max = 16
|
|
export default {
|
|
inject: ['getColor'],
|
|
computed: {
|
|
color () {
|
|
return this.getColor()
|
|
}
|
|
},
|
|
data () {
|
|
return {
|
|
value: max
|
|
}
|
|
},
|
|
// #ifdef APP-PLUS
|
|
beforeDestroy() {
|
|
if ( this.recevier ) {
|
|
plus.android.runtimeMainActivity().unregisterReceiver(this.recevier)
|
|
}
|
|
},
|
|
// #endif
|
|
created () {
|
|
this.getBattery()
|
|
},
|
|
methods: {
|
|
getBattery () {
|
|
// #ifdef H5
|
|
//window.navigator.getBattery只能在安全环境下(比如:https file:///url)使用,判断一下避免报错
|
|
window.navigator.getBattery && window.navigator.getBattery().then((res) => {
|
|
// 电池电量在0到1之间,因此我们将其乘以100得出百分比
|
|
this.value = res.level * max
|
|
});
|
|
// #endif
|
|
// #ifdef MP-WEIXIN
|
|
wx.getBatteryInfo({
|
|
success: (res) => {
|
|
this.value = (res.level / 100) * max
|
|
}
|
|
})
|
|
// #endif
|
|
// #ifdef APP-PLUS
|
|
uni.getSystemInfo({
|
|
success: (res) => {
|
|
if ( res.osName == 'android' ) {
|
|
const main = plus.android.runtimeMainActivity()
|
|
const Intent = plus.android.importClass('android.content.Intent');
|
|
this.recevier = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
|
|
onReceive: (context, intent) => {
|
|
let action = intent.getAction();
|
|
if (action == Intent.ACTION_BATTERY_CHANGED) {
|
|
let level = intent.getIntExtra("level", 0); //电量 B5教程网
|
|
this.value = (level / 100) * max
|
|
main.unregisterReceiver(this.recevier)//销毁注册广播
|
|
//let voltage = intent.getIntExtra("voltage", 0); //电池电压
|
|
//let temperature = intent.getIntExtra("temperature", 0); //电池温度
|
|
//如需获取别的,在这里继续写,此代码只提供获取电量
|
|
}
|
|
}
|
|
});
|
|
const filter = plus.android.newObject('android.content.IntentFilter', Intent.ACTION_BATTERY_CHANGED);
|
|
main.registerReceiver(this.recevier, filter);
|
|
} else if ( res.osName == 'ios' ) {
|
|
const UIDevice = plus.ios.import("UIDevice");
|
|
const dev = UIDevice.currentDevice();
|
|
if (!dev.isBatteryMonitoringEnabled()) {
|
|
dev.setBatteryMonitoringEnabled(true);
|
|
}
|
|
let level = dev.batteryLevel();
|
|
this.value = level * max
|
|
}
|
|
}
|
|
})
|
|
// #endif
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.yingbing-battery {
|
|
/* #ifndef APP-NVUE */
|
|
display: flex;
|
|
/* #endif */
|
|
flex-direction: row;
|
|
align-items: center;
|
|
opacity: 0.5;
|
|
}
|
|
.yingbing-battery-wrapper {
|
|
width: 20px;
|
|
height: 9px;
|
|
border-width: 1px;
|
|
border-style: solid;
|
|
padding: 1px;
|
|
/* #ifndef APP-NVUE */
|
|
display: flex;
|
|
flex-direction: column;
|
|
box-sizing: border-box;
|
|
overflow: hidden;
|
|
/* #endif */
|
|
}
|
|
.yingbing-battery-content {
|
|
flex: 1;
|
|
/* #ifndef APP-NVUE */
|
|
display: flex;
|
|
flex-direction: column;
|
|
box-sizing: border-box;
|
|
overflow: hidden;
|
|
/* #endif */
|
|
}
|
|
.yingbing-battery-content-value {
|
|
height: 5px;
|
|
}
|
|
.yingbing-battery-content-value-text {
|
|
font-size: 8px;
|
|
}
|
|
.yingbing-battery-top {
|
|
width: 2px;
|
|
height: 5px;
|
|
}
|
|
</style>
|