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