From 5b15bee8c80588c8d6002c4a22a82033aa4cfb4f Mon Sep 17 00:00:00 2001 From: TrillGates Date: Tue, 14 Sep 2021 16:50:17 +0800 Subject: [PATCH] completed battery charge tips. --- .../support/service/SilentManager.java | 2 + .../enqualcomm/support/utils/BatteryUtil.java | 7 +++ .../com/ic/view/battery/ChargeTipsView.java | 39 +++++++++++-- .../ic/view/webmsgresponse/WebMsgView.java | 1 + .../res/drawable/selector_urgent_call_bg.xml | 1 + .../res/drawable/shape_black_dialog_bg.xml | 4 +- .../drawable/shape_urgent_call_bg_disable.xml | 8 +++ .../battery_charge_tips_dialog_layout.xml | 55 +++++++++++-------- 8 files changed, 86 insertions(+), 31 deletions(-) create mode 100644 app/src/main/res/drawable/shape_urgent_call_bg_disable.xml diff --git a/app/src/main/java/com/enqualcomm/support/service/SilentManager.java b/app/src/main/java/com/enqualcomm/support/service/SilentManager.java index 05276f9e..e0b9b867 100644 --- a/app/src/main/java/com/enqualcomm/support/service/SilentManager.java +++ b/app/src/main/java/com/enqualcomm/support/service/SilentManager.java @@ -37,6 +37,7 @@ import com.enqualcomm.support.utils.ICLogger; import com.enqualcomm.support.utils.TimeUtil; import com.enqualcomm.support.utils.Util; import com.enqualcomm.support.utils.VibrateUtil; +import com.ic.view.battery.ChargeTipsView; import java.util.ArrayList; import java.util.Calendar; @@ -231,6 +232,7 @@ public class SilentManager extends AbstractInvokeHandlerService { private void handleSilent() { this.mInSilent = this.isSilentTime(); + ChargeTipsView.getInstance().updateCallBtnState(); } public boolean isIdle(Context context) { diff --git a/app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java b/app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java index 34075c3f..b329522c 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java @@ -26,6 +26,7 @@ import com.enqualcomm.support.service.AudioService; import com.enqualcomm.support.service.Deliver; import com.ic.protocols.protocolAPIHelper; import com.ic.protocols.protocol_s123; +import com.ic.view.battery.ChargeTipsView; import static android.os.BatteryManager.BATTERY_STATUS_CHARGING; import static android.os.BatteryManager.BATTERY_STATUS_DISCHARGING; @@ -144,11 +145,14 @@ public class BatteryUtil { mRuntime.setHaveBatteryChange(false); mRuntime.setBatteryLow(false); } else if (batLevel < 25 && batLevel > 15) { + ChargeTipsView.getInstance().dismiss(); mRuntime.setBattery(String.format("%03d", batLevel)); mRuntime.setBattery(batLevel); mRuntime.setHaveBatteryChange(true); mRuntime.setBatteryLow(false); } else if (batLevel <= 15 && batLevel > 10) { + ChargeTipsView.getInstance().showMsgDialog(); + ICLogger.d("on lower power please get charge..."); if (Config.LOG_TOFILE) ICLogger.logToFile("Battery", "BatteryLow less than 15%!"); checkAndSendBatteryEvent(param1Context, mRuntime); mRuntime.setBattery(String.format("%03d", batLevel)); @@ -163,6 +167,9 @@ public class BatteryUtil { mRuntime.setHaveBatteryChange(true); mRuntime.setBatteryLow(true); } else { + ChargeTipsView.getInstance().dismiss(); + //这里则会显示可能会关机 + ICLogger.d("on lower then 5 percent..." + batLevel); if (Config.LOG_TOFILE) ICLogger.logToFile("Battery", "BatteryLow less than 5% !"); checkAndSendBatteryEvent(param1Context, mRuntime); mRuntime.setBattery(String.format("%03d", batLevel)); diff --git a/app/src/main/java/com/ic/view/battery/ChargeTipsView.java b/app/src/main/java/com/ic/view/battery/ChargeTipsView.java index c6bcc7fb..1fb25e26 100644 --- a/app/src/main/java/com/ic/view/battery/ChargeTipsView.java +++ b/app/src/main/java/com/ic/view/battery/ChargeTipsView.java @@ -1,21 +1,27 @@ package com.ic.view.battery; import android.content.Context; +import android.content.Intent; +import android.graphics.PixelFormat; import android.view.Gravity; import android.view.View; import android.view.WindowManager; import com.enqualcomm.support.ICApplication; import com.enqualcomm.support.R; +import com.enqualcomm.support.service.SilentManager; import com.enqualcomm.support.utils.ICLogger; /** * 低点请充电提示窗口 + * 弹窗的时机:电量低于15% + * 消失的时机为:电量高于15%,或者低于百分之5 */ public class ChargeTipsView { private WindowManager windowManager; private View view; + private View btnView; private ChargeTipsView() { //获取到数据库里的数据,显示快捷回复列表 @@ -43,13 +49,13 @@ public class ChargeTipsView { //设置属性 WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(); layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; - //这个是针对S123的屏幕,如果要适配其他,可以动态获取屏幕宽度,高度,再以百分比的形式计算即可。 layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; + layoutParams.format = PixelFormat.TRANSPARENT; layoutParams.packageName = context.getPackageName(); layoutParams.gravity = Gravity.CENTER; //加载布局 - view = View.inflate(context, R.layout.msg_dialog_layout, null); + view = View.inflate(context, R.layout.battery_charge_tips_dialog_layout, null); //设置适配器 initView(view); windowManager.addView(view, layoutParams); @@ -57,13 +63,38 @@ public class ChargeTipsView { public void dismiss() { - windowManager.removeView(view); + this.isShow = false; + if (windowManager != null) { + windowManager.removeView(view); + } sInstance = null; windowManager = null; } + public void updateCallBtnState() { + if (btnView == null) { + return; + } + //还要判断是否显示此内容 + boolean idle = SilentManager.getInstance().isIdle(view.getContext()); + if (!idle) { + btnView.setEnabled(false); + } else { + btnView.setEnabled(true); + } + } private void initView(final View view) { - + btnView = view.findViewById(R.id.show_dial); + btnView.setOnClickListener(v -> { + //打开拨号界面 + Context context = v.getContext(); + Intent targetIntent = context.getPackageManager().getLaunchIntentForPackage("com.ic.dial"); + if (targetIntent != null) { + targetIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(targetIntent); + } + }); + updateCallBtnState(); } } diff --git a/app/src/main/java/com/ic/view/webmsgresponse/WebMsgView.java b/app/src/main/java/com/ic/view/webmsgresponse/WebMsgView.java index b5ed4799..0cd900e0 100644 --- a/app/src/main/java/com/ic/view/webmsgresponse/WebMsgView.java +++ b/app/src/main/java/com/ic/view/webmsgresponse/WebMsgView.java @@ -126,6 +126,7 @@ public class WebMsgView { } public void dismiss() { + this.isShow = false; contentResolver.unregisterContentObserver(observer); windowManager.removeView(view); executorService.shutdown(); diff --git a/app/src/main/res/drawable/selector_urgent_call_bg.xml b/app/src/main/res/drawable/selector_urgent_call_bg.xml index 298454a0..b0cdef06 100644 --- a/app/src/main/res/drawable/selector_urgent_call_bg.xml +++ b/app/src/main/res/drawable/selector_urgent_call_bg.xml @@ -1,5 +1,6 @@ + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_black_dialog_bg.xml b/app/src/main/res/drawable/shape_black_dialog_bg.xml index c8e550a1..3bde135b 100644 --- a/app/src/main/res/drawable/shape_black_dialog_bg.xml +++ b/app/src/main/res/drawable/shape_black_dialog_bg.xml @@ -3,8 +3,6 @@ android:shape="rectangle"> - + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_urgent_call_bg_disable.xml b/app/src/main/res/drawable/shape_urgent_call_bg_disable.xml new file mode 100644 index 00000000..29c0757a --- /dev/null +++ b/app/src/main/res/drawable/shape_urgent_call_bg_disable.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/battery_charge_tips_dialog_layout.xml b/app/src/main/res/layout/battery_charge_tips_dialog_layout.xml index 90944167..06dd082a 100644 --- a/app/src/main/res/layout/battery_charge_tips_dialog_layout.xml +++ b/app/src/main/res/layout/battery_charge_tips_dialog_layout.xml @@ -1,33 +1,40 @@ - + android:background="#dd000000"> - - + android:layout_gravity="center" + android:background="@drawable/shape_black_dialog_bg" + android:gravity="center_horizontal" + android:orientation="vertical" + android:padding="20dp"> + + + + - + - \ No newline at end of file + \ No newline at end of file -- 2.17.1