我的应用需要以最长8秒的时间录制视频。这已经使用MediaRecorder.setMaxDuration(长毫秒)实现。 该应用程序还需要一个顶部的进度条和一个剩余时间倒计时的标签。
这里的问题是UI和MediaRecorder进度之间存在偏差,这会导致用户混淆。例如,用户认为他/她记录了某些内容,因为UI中的进度是这样说的,但是媒体记录器在一秒钟之前切断了视频。
挑战是在录音机实际开始录音的同时启动进度条和计数器。 我已经尝试在MediaRecorder.start()之后启动计时器,在第一次修改创建的文件的回调中,但我还没有找到一种方法以正确的方式实现这一点。我们尝试为这些值设置硬编码偏移量,但当然它对每个设备都不起作用。
我希望MediaRecorder有一个回调来告知它实际上已经开始录制视频,或者可能是当前的长度。
问题是否清楚?有人在此之前解决了这个问题吗?
答案 0 :(得分:0)
MediaRecorder早已知道切断音频的问题。我用一个按钮实现了一个录音机 - 点击按钮停止录音机实际上会产生一个音频文件,最后一秒切断。 不确定您的UI偏移是否是一个单独的问题,但我会尝试在用户尝试结束后将MediaRecorder扩展半秒。您可以通过将最长时间更改为8.5秒或仅使用以下代码行来执行此操作:
android.os.SystemClock.sleep(500);