AndroidStudio里面设置一个倒计时

AndroidStudio里面设置一个倒计时,就像微信录制语音最后有一个倒计时样的。但是,设置了一个时间,不起作用呢?
我这是用的AudioManager写的一个录音 。不知道这样的话,该怎么做一个倒计时,然后,到10秒时设置一次振动。
下面是直接在录音java里面做的,没有在Manager里面

img


下面是task 方法

//计时任务
    TimerTask task = new TimerTask() {
        @Override
        public void run() {
            recLen--;

            vibrator = (Vibrator) activity.getSystemService(VIBRATOR_SERVICE);
            vibrator.hasVibrator();
            long[] pattern = {100, 50};
            vibrator.vibrate(pattern, -1);
            AudioRecorderManager.getInstance(LibraryContentsUtil.AUDIO_PATH).stop();//超过时间就停止
        }
    };

它不起作用,第二次再录时,就闪退了。报错是:timer已经cancel了。。

android  倒计时 直接用 CountDownTimer   挺好 没有必要专门自己写一个线程



```java
import android.os.CountDownTimer;
import android.view.View;
/**
 * 倒计时计时工具
 * @author wjh 2021-01-29
 *
 * 当Activity/Fragment销毁的时候记得 调用CountDownTimerUtils.cancle
 * Fragment在onDestoryView时调用 视图被移除时(reason:CountDownTimerUtils调用可能会涉及Ui的改变)
 *
 */
 
public class CountDownTimerUtils extends CountDownTimer {
    private View view;
    private long countDownInterval;
    private OnFinishListener listener;
    private OnTickListener tickListener;
    public interface OnFinishListener{
        void onFinishListener(View v);
    }
 
    public interface OnTickListener{
        void onTickListener(View v, long millisUntilFinished, long countDownInterval);
    }
    public CountDownTimerUtils(View view, long millisInFuture, long countDownInterval, OnTickListener tickListener, OnFinishListener listener){
        super(millisInFuture,countDownInterval);
        this.view=view;//倒计时相关组件  可以是TextView Button 等等
        this.countDownInterval=countDownInterval;//倒计时时长
        this.listener=listener;//倒计时结束监听
        this.tickListener=tickListener;//计时监听 相隔一秒调用
    }
 
    @Override
    public void onTick(long millisUntilFinished) {
        tickListener.onTickListener(view,millisUntilFinished,countDownInterval);
    }
 
    @Override
    public void onFinish() {
        listener.onFinishListener(view);
    }
}

```

这个直接用就成了

timer.cancel了就是取消倒计时得意思。在代码中你设置了倒计时任务又马上取消了,肯定首先倒计时不起作用了。第二个点击得时候,你要判断timer得状态,然后做不同得处理。比如在取消得时候设置为空,然后重新new一个