Browse Source

增加 sp存储,没用功能

liuyuqi-dellpc 4 years ago
parent
commit
9a7c7cec91

+ 32 - 1
app/src/main/java/me/yoqi/android/qrcode/service/QuickStartService.java

@@ -2,11 +2,14 @@ package me.yoqi.android.qrcode.service;
 
 
 import android.content.Intent;
 import android.content.Intent;
 import android.os.Build;
 import android.os.Build;
+import android.service.quicksettings.Tile;
 import android.service.quicksettings.TileService;
 import android.service.quicksettings.TileService;
 
 
 import androidx.annotation.RequiresApi;
 import androidx.annotation.RequiresApi;
 
 
 import me.yoqi.android.qrcode.CaptureActivity;
 import me.yoqi.android.qrcode.CaptureActivity;
+import me.yoqi.android.utils.SPUtils;
+import me.yoqi.android.utils.SimplexToast;
 
 
 /**
 /**
  * 下拉快速启动
  * 下拉快速启动
@@ -16,6 +19,14 @@ import me.yoqi.android.qrcode.CaptureActivity;
  */
  */
 @RequiresApi(api = Build.VERSION_CODES.N)
 @RequiresApi(api = Build.VERSION_CODES.N)
 public class QuickStartService extends TileService {
 public class QuickStartService extends TileService {
+    Tile tile;
+    SPUtils spUtils;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        spUtils = SPUtils.getInstance(this);
+    }
 
 
     /**
     /**
      * 当用户从Edit栏添加到快速设置中调用
      * 当用户从Edit栏添加到快速设置中调用
@@ -35,14 +46,34 @@ public class QuickStartService extends TileService {
     @Override
     @Override
     public void onClick() {
     public void onClick() {
         super.onClick();
         super.onClick();
-        int state = getQsTile().getState();
+        tile = getQsTile();
+        int state = tile.getState();
+        if (state == Tile.STATE_INACTIVE) {
+            tile.setState(Tile.STATE_ACTIVE);
+            spUtils.putBoolean("flag_qrcode", true);
+        } else {
+            spUtils.putBoolean("flag_qrcode", false);
+        }
+        tile.updateTile();
+
+        SimplexToast.show(this, state + "");
         Intent intent = new Intent(this, CaptureActivity.class);
         Intent intent = new Intent(this, CaptureActivity.class);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         startActivityAndCollapse(intent);
         startActivityAndCollapse(intent);
     }
     }
 
 
+    /**
+     * 打开下拉菜单的时候调用,当快速设置按钮并没有在编辑栏拖到设置栏中不会调用
+     */
     @Override
     @Override
     public void onStartListening() {
     public void onStartListening() {
         super.onStartListening();
         super.onStartListening();
+        tile = getQsTile();
+        if (tile == null) {
+            return;
+        }
+        boolean flag = spUtils.getBoolean("flag_qrcode", false); // 是否启动
+        tile.setState(flag ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE);
+        tile.updateTile();
     }
     }
 }
 }

+ 12 - 0
app/src/main/java/me/yoqi/android/utils/NetUtils.java

@@ -0,0 +1,12 @@
+package me.yoqi.android.utils;
+
+/**
+ * 网络检测工具类
+ * @author liuyuqi.gov@msn.cn
+ * @createTime 2020-08-18
+ */
+public class NetUtils {
+    //检测网络是否可用,wifi or gps
+    
+}
+

+ 22 - 0
app/src/main/java/me/yoqi/android/utils/RegexParser.java

@@ -0,0 +1,22 @@
+package me.yoqi.android.utils;
+
+import android.util.Patterns;
+
+/**
+ * 常用正则表达式
+ *
+ * @author liuyuqi.gov@msn.cn
+ * @createTime 2020-08-17
+ */
+public class RegexParser {
+    static final String PHONE_PATTERN = Patterns.PHONE.pattern();
+    static final String EMAIL_PATTERN = Patterns.EMAIL_ADDRESS.pattern();
+
+    //at、话题、链接匹配表达式
+    static final String MENTION_PATTERN = "@.{1,15}?\\s";
+    static final String HASHTAG_PATTERN = "#.{1,15}?\\s";
+    static final String URL_PATTERN = "(http|https|ftp|svn)://([a-zA-Z0-9]+[/?.?])" +
+            "+[a-zA-Z0-9]*\\??([a-zA-Z0-9]*=[a-zA-Z0-9]*&?)*";
+
+}
+

+ 78 - 0
app/src/main/java/me/yoqi/android/utils/SPUtils.java

@@ -0,0 +1,78 @@
+package me.yoqi.android.utils;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
+
+import java.util.Map;
+import java.util.Set;
+
+public class SPUtils {
+    private static final String SP_NAME = "common";
+    private static SPUtils mSpUtils;
+    private SharedPreferences sp;
+    private Editor editor;
+
+    public SPUtils(Context mContext) {
+        sp = mContext.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE);
+        editor = sp.edit();
+    }
+
+    public static SPUtils getInstance(Context context) {
+
+        if (mSpUtils == null) {
+            synchronized (SPUtils.class) {
+                if (mSpUtils == null) {
+                    mSpUtils = new SPUtils(context);
+                    return mSpUtils;
+                }
+            }
+        }
+
+        return mSpUtils;
+
+    }
+
+    public void putBoolean(String key, Boolean value) {
+        editor.putBoolean(key, value);
+        editor.commit();
+    }
+
+    public boolean getBoolean(String key, Boolean defValue) {
+        return sp.getBoolean(key, defValue);
+    }
+
+    public void putString(String key, String value) {
+        if (key == null) {
+            return;
+        }
+        editor.putString(key, value);
+        editor.commit();
+    }
+
+    public String getString(String key, String defValue) {
+        return sp.getString(key, defValue);
+    }
+
+    public Set<String> getStringSet(String key, Set<String> defValue) {
+        return sp.getStringSet(key, defValue);
+    }
+
+    public void putInt(String key, int value) {
+        editor.putInt(key, value);
+        editor.commit();
+    }
+
+    public int getInt(String key, int defValue) {
+        return sp.getInt(key, defValue);
+    }
+
+    public Map<String, ?> getAll() {
+        return sp.getAll();
+    }
+
+    public void remove(String key) {
+        sp.edit().remove(key).apply();
+    }
+
+}

+ 80 - 0
app/src/main/java/me/yoqi/android/utils/SimplexToast.java

@@ -0,0 +1,80 @@
+package me.yoqi.android.utils;
+
+import android.content.Context;
+import android.view.Gravity;
+import android.widget.Toast;
+
+/**
+ * 以后请用这个吐司,谢谢!!!
+ * <p>
+ * <p>
+ * {@link Toast}的创建都是要inflate一个layout, findViewById之类的
+ * 将一个吐司单例化,并且作防止频繁点击的处理。
+ * <p>
+ * <p>
+ */
+@SuppressWarnings("all")
+public class SimplexToast {
+
+    private static Toast mToast;
+    private static long nextTimeMillis;
+    private static int yOffset;
+    static Context mContext;
+    private static SimplexToast simplexToast;
+
+    public synchronized static SimplexToast getInstance(Context context) {
+        if (simplexToast == null) {
+            simplexToast = new SimplexToast(context);
+        }
+        return simplexToast;
+    }
+
+    public SimplexToast(Context context) {
+        mContext = context;
+    }
+
+    public static Toast init(Context context) {
+        if (context == null) {
+            throw new IllegalArgumentException("Context should not be null!!!");
+        }
+        if (mToast == null) {
+            mToast = Toast.makeText(context, null, Toast.LENGTH_SHORT);
+            yOffset = mToast.getYOffset();
+        }
+        mToast.setDuration(Toast.LENGTH_SHORT);
+        mToast.setGravity(Gravity.BOTTOM, 0, yOffset);
+        mToast.setMargin(0, 0);
+        return mToast;
+    }
+
+    public static void show(String content) {
+        show(content, Toast.LENGTH_SHORT);
+    }
+
+    public static void show(String content, int duration) {
+        show(mContext, content, Gravity.BOTTOM, duration);
+    }
+
+    public static void show(Context context, int rid) {
+        show(context, context.getResources().getString(rid));
+    }
+
+    public static void show(Context context, String content) {
+        show(context, content, Gravity.BOTTOM);
+    }
+
+    public static void show(Context context, String content, int gravity) {
+        show(context, content, gravity, Toast.LENGTH_SHORT);
+    }
+
+    public static void show(Context context, String content, int gravity, int duration) {
+        long current = System.currentTimeMillis();
+        //if (current < nextTimeMillis) return;
+        if (mToast == null) init(context.getApplicationContext());
+        mToast.setText(content);
+        mToast.setDuration(duration);
+        mToast.setGravity(gravity, 0, yOffset);
+        nextTimeMillis = current + (duration == Toast.LENGTH_LONG ? 3500 : 2000);
+        mToast.show();
+    }
+}

+ 10 - 0
app/src/main/java/me/yoqi/android/utils/StringUtils.java

@@ -0,0 +1,10 @@
+package me.yoqi.android.utils;
+
+/**
+ * @author liuyuqi.gov@msn.cn
+ * @createTime 2020-08-17
+ */
+public class StringUtils {
+
+}
+