<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>