android - 如何从 MediaRecorder 获取输出记录并将其保存到 Firebase 存储中
问题描述
所以我正在构建一个应用程序,用户可以在其中使用媒体记录器录制音频,然后将其保存到 firebase 存储中,对于记录器,我使用来自https://github.com/3llomi/RecordView的外部库,这只是动画我正在使用媒体记录器的实际录制,所以我想做的是当用户停止录制时,它会从媒体录制器中保存录制文件并将其上传到 firebase
这些是我的录音方法
private void stopRecording() {
mediaRecorder.stop();
mediaRecorder.release();
mediaRecorder = null;
uploadAudio(); }
private void uploadAudio() {
//Here is where i want to get output file from the media recorder and save it into firebase
}
private void startRecording() {
String recordPath = SarimPage.this.getExternalFilesDir("/").getAbsolutePath();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_hh_mm_ss", Locale.getDefault());
Date now = new Date();
recordFile = "/Recording_" + formatter.format(now) + ".3gp";
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setOutputFile(recordPath + "/" + recordFile);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mediaRecorder.prepare();
} catch (IOException e) {
e.printStackTrace();
}
mediaRecorder.start();
}
这是我在外部录音库中的方法
RecordView recordView = findViewById(R.id.record_view);
recordButton = findViewById(R.id.record_button);
recordButton.setRecordView(recordView);
recordView.setOnRecordListener(new OnRecordListener() {
@Override
public void onStart() {
if (checkPermissions()) {
startRecording();
messageInput.setVisibility(View.INVISIBLE);
}
}
@Override
public void onCancel() {
}
@Override
public void onFinish(long recordTime) {
stopRecording();
messageInput.setVisibility(View.VISIBLE);
}
@Override
public void onLessThanSecond() {
messageInput.setVisibility(View.VISIBLE);
Toast.makeText(SarimPage.this, "Sorry Your Recording Was Too short, Please Try Again", Toast.LENGTH_SHORT).show();
}
});
recordView.setOnBasketAnimationEndListener(new OnBasketAnimationEnd() {
@Override
public void onAnimationEnd() {
messageInput.setVisibility(View.VISIBLE);
}
});
解决方案
推荐阅读
- java - 仅在调用特定方法后才创建 bean
- html - 为什么我的导航栏链接顺序错误?
- c# - ASP.net 模型验证不正确
- ssl-certificate - 即使在将证书导入密钥库和 tomcat 之后也变得“不安全”
- python - 成功导入 sys 模块但未定义 sys (ATOM IDE)
- python-3.x - 如何在字典理解期间从字典中获取值作为整数
- swiftui - 如果仅触发一个,则 Swiftui 中的 SimultaneousGesture 旋转和缩放不起作用
- javascript - Nodejs(Google Chrome)中的事件循环使用什么逻辑流模型
- java - 使用 Spring Cloud Gateway 过滤器重试带有修改标头的 REST 调用?
- android - 在 Mobile 中查找已安装的应用程序域