completed battery charge tips.
authorTrillGates <williamtrillgates@gmail.com>
Tue, 14 Sep 2021 08:50:17 +0000 (16:50 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Tue, 14 Sep 2021 08:50:17 +0000 (16:50 +0800)
app/src/main/java/com/enqualcomm/support/service/SilentManager.java
app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java
app/src/main/java/com/ic/view/battery/ChargeTipsView.java
app/src/main/java/com/ic/view/webmsgresponse/WebMsgView.java
app/src/main/res/drawable/selector_urgent_call_bg.xml
app/src/main/res/drawable/shape_black_dialog_bg.xml
app/src/main/res/drawable/shape_urgent_call_bg_disable.xml [new file with mode: 0644]
app/src/main/res/layout/battery_charge_tips_dialog_layout.xml

index 05276f9..e0b9b86 100644 (file)
@@ -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) {
index 34075c3..b329522 100644 (file)
@@ -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));
index c6bcc7f..1fb25e2 100644 (file)
@@ -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();
     }
 }
index b5ed479..0cd900e 100644 (file)
@@ -126,6 +126,7 @@ public class WebMsgView {
     }
 
     public void dismiss() {
+        this.isShow = false;
         contentResolver.unregisterContentObserver(observer);
         windowManager.removeView(view);
         executorService.shutdown();
index 298454a..b0cdef0 100644 (file)
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:drawable="@drawable/shape_urgent_call_bg_press" android:state_pressed="true" />
+    <item android:drawable="@drawable/shape_urgent_call_bg_disable" android:state_enabled="false" />
     <item android:drawable="@drawable/shape_urgent_call_bg_normal" />
 </selector>
\ No newline at end of file
index c8e550a..3bde135 100644 (file)
@@ -3,8 +3,6 @@
     android:shape="rectangle">
 
     <solid android:color="#242424" />
-    <corners
-        android:bottomLeftRadius="10dp"
-        android:bottomRightRadius="10dp" />
+    <corners android:radius="10dp" />
 
 </shape>
\ 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 (file)
index 0000000..29c0757
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <corners android:radius="4dp" />
+    <solid android:color="#727476" />
+
+</shape>
\ No newline at end of file
index 9094416..06dd082 100644 (file)
@@ -1,33 +1,40 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@drawable/shape_black_dialog_bg"
-    android:baselineAligned="false"
-    android:gravity="center_horizontal"
-    android:orientation="vertical"
-    android:padding="20dp">
+    android:background="#dd000000">
 
-
-    <TextView
+    <LinearLayout
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:text="@string/tips_charge_text"
-        android:textColor="@color/white"
-        android:textSize="20sp" />
+        android:layout_gravity="center"
+        android:background="@drawable/shape_black_dialog_bg"
+        android:gravity="center_horizontal"
+        android:orientation="vertical"
+        android:padding="20dp">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/tips_charge_text"
+            android:textColor="@color/white"
+            android:textSize="28sp" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="20dp"
+            android:background="@drawable/selector_urgent_call_bg"
+            android:paddingLeft="14dp"
+            android:id="@+id/show_dial"
+            android:paddingTop="4dp"
+            android:paddingRight="14dp"
+            android:paddingBottom="4dp"
+            android:text="@string/urgent_call_text"
+            android:textColor="@color/white"
+            android:textSize="24sp" />
 
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="10dp"
-        android:background="@drawable/selector_urgent_call_bg"
-        android:paddingLeft="14dp"
-        android:paddingTop="4dp"
-        android:paddingRight="14dp"
-        android:paddingBottom="4dp"
-        android:text="@string/urgent_call_text"
-        android:textColor="@color/white"
-        android:textSize="16sp" />
 
+    </LinearLayout>
 
-</LinearLayout>
\ No newline at end of file
+</FrameLayout>
\ No newline at end of file