add a sport achievement tips for anan protocol.
authorTrillGates <williamtrillgates@gmail.com>
Tue, 8 Jun 2021 07:07:57 +0000 (15:07 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Tue, 8 Jun 2021 07:07:57 +0000 (15:07 +0800)
app/src/main/java/com/ic/protocols/protocol_anan.java
app/src/main/res/layout/dialog_tips.xml [new file with mode: 0644]
app/src/main/res/values/colors.xml
app/src/main/res/values/strings.xml

index e1c4b83..7899f42 100644 (file)
@@ -15,6 +15,9 @@ import android.os.Environment;
 import android.support.v4.app.ActivityCompat;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.view.WindowManager;
 
 import com.enqualcomm.support.Config;
 import com.enqualcomm.support.Constants;
@@ -35,11 +38,13 @@ import com.enqualcomm.support.service.HeartRateManager;
 import com.enqualcomm.support.utils.Connection;
 import com.enqualcomm.support.utils.ICLogger;
 import com.enqualcomm.support.utils.ProfileManager;
+import com.enqualcomm.support.utils.SharePreferenceUtil;
 import com.enqualcomm.support.utils.TemperatureUtil;
 import com.enqualcomm.support.utils.TimeUtil;
 import com.enqualcomm.support.utils.Util;
 
 import java.io.File;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -479,6 +484,7 @@ public class protocol_anan {
     }
 
     private static int targetStep = -1;
+    private static boolean isAchieveShow = false;
 
     public static StringMessage AP03(Runtime ds) {
         //处理心跳数据的时候,处理一下运动目标是否达标,如果达表的,弹出一个窗,表扬一下。
@@ -502,13 +508,18 @@ public class protocol_anan {
                 targetStep = 0;
             }
         }
-        ICLogger.d("target step == > " + targetStep);
+        ICLogger.d("target step == > " + targetStep + " current total step == > " + totalStepCount);
         //判断是否达标
         if (totalStepCount >= targetStep) {
-            //弹窗提示
-            ICLogger.d("今日运动目标已达成...");
-            //TODO:
-
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+            String format = simpleDateFormat.format(new Date());
+            String record = SharePreferenceUtil.getPrefString(ds.getContextProxy().context,
+                    "show_sport_target_flag", "");
+            if (!format.equals(record)) {
+                //弹窗提示
+                ICLogger.d("今日运动目标已达成...");
+                showLocalUpdateTips(ds.getContextProxy().context);
+            }
         }
         //示例数据:IWAP03,06000908000102,5555,30#  IWAP03,000000null00000,0,0#
         return genStringMessage(cmdMap.get(CMD_TYPE.AP03),
@@ -593,6 +604,42 @@ public class protocol_anan {
         return str;
     }
 
+    /**
+     * 展示本地安装和提示框
+     */
+    private static void showLocalUpdateTips(Context context) {
+        if (isAchieveShow) {
+            return;
+        }
+        WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+        WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
+        layoutParams.gravity = Gravity.CENTER;
+        layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
+        layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
+        layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
+        layoutParams.alpha = 1.0f;
+        layoutParams.packageName = context.getPackageName();
+        layoutParams.buttonBrightness = 1f;
+        layoutParams.windowAnimations = android.R.style.Animation_Dialog;
+        View view = View.inflate(context, R.layout.dialog_tips, null);
+        View okBtn = view.findViewById(R.id.button_ok);
+        okBtn.setOnClickListener(v -> {
+            if (manager != null) {
+                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+                //今天已经展示过了。
+                //今天的执法犯法
+                SharePreferenceUtil.setPrefString(context, "show_sport_target_flag",
+                        simpleDateFormat.format(new Date()));
+                isAchieveShow = false;
+                manager.removeView(view);
+            }
+        });
+        if (manager != null) {
+            isAchieveShow = true;
+            manager.addView(view, layoutParams);
+        }
+    }
+
     public static StringMessage genStringMessage(String cmdName, String msg) {
         StringMessage sm = new StringMessage(new String[]{cmdName, msg});
         sm.refresh(msg);
diff --git a/app/src/main/res/layout/dialog_tips.xml b/app/src/main/res/layout/dialog_tips.xml
new file mode 100644 (file)
index 0000000..8b27874
--- /dev/null
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/grey"
+    android:padding="4dp"
+    android:paddingLeft="20dp"
+    android:paddingRight="20dp">
+
+    <TextView
+        android:id="@+id/title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="5dp"
+        android:gravity="center_vertical|center_horizontal"
+        android:text="@string/sport_target_achieve"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textColor="@color/white"
+        android:textIsSelectable="true" />
+
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@id/title"
+        android:layout_marginBottom="46dp"
+        android:paddingTop="5dp"
+        android:paddingBottom="5dp">
+
+        <TextView
+            android:id="@+id/description"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="left"
+            android:padding="4dp"
+            android:text="@string/sport_aim_achieve_tips_text"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textColor="@color/white"
+            android:textIsSelectable="true"
+            android:textSize="18sp" />
+    </ScrollView>
+
+    <!-- Alert dialog style buttons along the bottom. -->
+    <Button
+        android:id="@+id/button_ok"
+        android:layout_width="wrap_content"
+        android:layout_height="32dp"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:background="@drawable/selector_next_step"
+        android:text="@string/commit_text"
+        android:textColor="@color/white"
+        android:textSize="20sp" />
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_above="@id/button_ok"
+        android:layout_marginBottom="5dp"
+        android:background="@color/white" />
+
+</RelativeLayout>
index b9e0fd3..aa8b71f 100644 (file)
@@ -6,4 +6,6 @@
 
     <color name="colorIcBg">#000000</color>
     <color name="colorIcTextView">#FFFFFF</color>
+    <color name="grey">#6d6d6d</color>
+    <color name="white">#ffffff</color>
 </resources>
index 1b1d45e..ccc9ccf 100644 (file)
     <string name="it">意大利</string>
     <string name="fr">法语</string>
     <string name="de">德语</string>
-    
+
     <string name="untitled_apn">Untitled</string>
     <!-- APN error dialog title -->
     <string name="error_title"></string>
     <string name="error_apn_type">"Apn type you entered is not supported, please re-enter!"</string>
     <string name="same_apn_type">"You have entered the same type of APN, please re-enter!"</string>
     <string name="empty_apn_type">"You did not entered or select any type of APN, please re-enter!"</string>
+    <string name="sport_target_achieve">Tip:</string>
+    <string name="close_text">关闭</string>
+    <string name="commit_text">确定</string>
+    <string name="sport_aim_achieve_tips_text">恭喜您,运动达标!</string>
     <!--    法语,德语,意大利-->
 </resources>