java - 如何在录音时在语音笔记上设置计时器(与 WhatsApp 语音消息录制功能相同)?
问题描述
我正在构建一个具有语音消息功能的聊天应用程序,但是在录制时无法像“WhatsApp”那样获得任何感觉或计时器,所以任何人都可以拥有这个解决方案我尝试了开发人员 Android 的代码,但可以找到这样的解决方案。
btn_voice.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_DOWN)
{
startRecording();
}
else if(event.getAction()==MotionEvent.ACTION_UP)
{
stopRecording();
}
return false;
}
});
解决方案
创建处理程序
private Handler customHandler = new Handler();
然后在startRecording(){starttimer();}
然后
private void starttimer() {
startTime = SystemClock.uptimeMillis();
customHandler.postDelayed(updateTimerThread, 0);
// customHandler.removeCallbacks(updateTimerThread);
}
private Runnable updateTimerThread = new Runnable() {
@SuppressLint({"SetTextI18n", "DefaultLocale"})
public void run() {
timeInMilliseconds = SystemClock.uptimeMillis() - startTime;
updatedTime = timeSwapBuff + timeInMilliseconds;
int secs = (int) (updatedTime / 1000);
int mins = secs / 60;
secs = secs % 60;
int milliseconds = (int) (updatedTime % 1000);
dialTimer.setText("" + mins + ":"+String.format("%02d", secs) + ":"+String.format("%03d", milliseconds));
customHandler.postDelayed(this, 0);
}
};
并停止计时器
customHandler.removeCallbacks(updateTimerThread);
推荐阅读
- sql - 通过比较和检索涉及多列的数据的 SQL INSERT 语句
- image-processing - imagemagick mogrify 调整大小 - 失去第三维
- python - 仅使用脚本中的一列,但也打印同一索引的另一列
- reactjs - 如何在 React-Router 4 中保留查询字符串和哈希片段
? - python - 在列表中定位一个 html 链接地址字符串
- python - 如何计算列表列表中相同值的最长序列,然后输出元组中的最大序列
- php - 在 CodeIgniter 3 中使用 PDO 进行查询
- javascript - 在 mouseover/mouseout 事件中使用 $this 关键字声明变量
- python - 在 Panda DataFrame 中添加值列失败
- php - Codeigniter 中的多个相同表单