目前我正在用第三方应用程序录制我骑自行车的音频,而我的应用程序则记录GPS和BLE数据。我的应用程序还可以设置标记,用于标记我在麦克风中发表评论(“备忘录”)的时间点,以便我可以将其映射到音频录制。
这个
GitHub issue
它有截图可以给你一个更好的主意,但它不显示标记。
我已经开始尝试安卓系统
MediaRecorder API
在我的应用程序中,我想我可以用它来代替第三方应用程序。我测试了一下,效果相当不错。
现在查看MediaRecorder文档中的以下代码:
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(PATH_NAME);
recorder.prepare();
recorder.start(); // Recording is now started
这是问题所在:
recorder.setOutputFile(PATH_NAME);
.
我想做的是不要在
PATH_NAME
,但是进入一个内存缓冲区,它必须使我能够在数据流上迭代,逐字节chuck(即每1024字节),然后我将自己保存到一个文件中。
我之所以要这样做,是为了能够将一定数量的字节块并行保存到第二个文件中。这样,当我按下应用程序中的“备忘录”标记按钮时,它将开始将我对麦克风所说的内容存储到一个单独的文件中,大约10秒钟,同时仍将完整的音频记录到主文件中。这样,我就可以创建一个rss提要(或电子邮件)的所有备忘录从骑自行车,而不是必须加载整个1h+文件和跳过标记的部分。
MediaRecorder API提供以下重写:
void setOutputFile(FileDescriptor fd)
void setOutputFile(String path)
void setOutputFile(File file)