Android - MediaRecorder 的回调开始录制

标签 android callback android-progressbar mediarecorder android-mediarecorder

我的应用需要录制最长 8 秒的视频。这已经通过 MediaRecorder.setMaxDuration(long milliseconds) 实现。 该应用还需要顶部的进度条和带有剩余时间倒计时的标签。

这里的问题是 UI 和 MediaRecorder 进度之间存在偏移,这会导致用户混淆。例如,用户认为他/她录制了一些东西,因为 UI 中的进度是这么说的,但媒体录制器提前一秒切断了视频。

挑战在于在录音机实际开始录音的同时启动进度条和计数器。 我已经尝试在 MediaRecorder.start() 之后启动计时器,在第一次修改创建的文件时的回调中,但我还没有找到以正确方式实现此目的的方法。我们尝试为这些值设置硬编码偏移量,但当然它对每个设备的工作方式都不一样。

我希望有来自 MediaRecorder 的回调通知它实际上已经开始录制视频,或者可能是当前长度。

问题清楚了吗?以前有人解决过这个问题吗?

最佳答案

MediaRecorder 已知存在提前切断音频的问题。我用一个按钮实现了一个录音机——点击按钮停止录音机实际上会产生一个音频文件,最后一秒被切断。 不确定您的 UI 偏移量是否是一个单独的问题,但我会尝试在用户尝试结束 MediaRecorder 后将其延长半秒。您可以通过将最长时间更改为 8.5 秒来执行此操作,也可以只使用以下代码行:

   android.os.SystemClock.sleep(500);

关于Android - MediaRecorder 的回调开始录制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25649873/

相关文章:

javascript - 涉及异步调用时,如何设置具体的执行顺序?

ios - 在回调中使用函数/在单元格内使用 SegmentedControl

android - 如何将文件添加到 Android 项目,将其部署到设备,然后打开它?

android - 如何检测向上按钮是否被按下

jquery - 调用 jquery ajax - .fail 与 :error

android - 不应用进度条可绘制的填充

java - 如何设置圆形不确定进度条android的粗细?

android - 如何从使用 PowerMockRunner 运行的 android 单元测试加载 json 文件?

android - 在 TextView 上调用 setText 会调用 requestLayout(),它会重置父 View 的 offsetTopAndBottom 位置

android - "java.lang.RuntimeException: Could not launch intent"用于具有不确定 ProgressBar 的 UI