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