From: TrillGates Date: Wed, 1 Sep 2021 03:43:49 +0000 (+0800) Subject: refactor vibrate. X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=a07b06bb6d5a3ba327570712c969ab2bf90d8db1;p=icsupport.git refactor vibrate. --- diff --git a/app/src/main/java/com/enqualcomm/support/utils/VibrateUtil.java b/app/src/main/java/com/enqualcomm/support/utils/VibrateUtil.java index d2605d75..2975e300 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/VibrateUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/VibrateUtil.java @@ -1,23 +1,37 @@ package com.enqualcomm.support.utils; import android.content.Context; +import android.os.Handler; +import android.os.HandlerThread; import android.os.Vibrator; import static android.content.Context.VIBRATOR_SERVICE; public class VibrateUtil { - private static Context mContext = null; + private final Handler handler; - public static VibrateUtil getInstance(Context context) { + private VibrateUtil(Context context) { if (mContext == null) { mContext = context; } if (vibrator == null) { vibrator = (Vibrator) mContext.getSystemService(VIBRATOR_SERVICE); } + HandlerThread handlerThread = new HandlerThread("ic:vibrate"); + handlerThread.start(); + handler = new Handler(handlerThread.getLooper()); + } + + private static Context mContext = null; + + public static VibrateUtil getInstance(Context context) { if (vibrateUtil == null) { - vibrateUtil = new VibrateUtil(); + synchronized (VibrateUtil.class) { + if (vibrateUtil == null) { + vibrateUtil = new VibrateUtil(context); + } + } } return vibrateUtil; } @@ -26,7 +40,6 @@ public class VibrateUtil { private static VibrateUtil vibrateUtil = null; private static long patter_item = 1000; - private long[] patter = {patter_item, 1000, patter_item, 1000}; //1秒开,1秒关,2秒开,50ms关 private long[] patterOnce = {patter_item, 1000}; //1秒开,1秒关,2秒开,50ms关 /** @@ -38,11 +51,21 @@ public class VibrateUtil { patter_item = l; } + boolean isVibrate = false; + public void vibrateOn(boolean on) { + if (isVibrate) { + return; + } if (vibrator != null) { if (on) { - vibrator.cancel(); - vibrator.vibrate(1000);//不循环} + isVibrate = true; + //一秒钟后置成false + handler.postDelayed(() -> { + isVibrate = false; + ICLogger.d("vibrate finish..."); + }, 1300); + vibrator.vibrate(1000);//不循环 } else { vibrator.cancel(); }