编辑:我在参考末尾添加了“recRef”“.3gp”,现在当我使用模拟器时,它上传为 0KB 的 .3gp 文件,外部设备仍上传“应用程序/八位字节流”文件(重量0KB)。
我对我的应用程序进行了记录活动,但我无法将其正确上传到 Firebase 存储。我尝试根据谷歌发布的图像上传示例构建一个上传过程,它上传一个空文件(0KB,输入“application/octet-stream”)。录制过程运行良好,我制作了一个播放按钮来检查它,所以我知道这只是一个问题,我不知道如何将其正确上传到云端。
欢迎大家使用我的 git 弹出记录活动:https ://github.com/tidharon/Popup-Record-Window-App
这是我的上传代码:
recRef = storage.getReference(lastAct + " Records").child(lastTitle);
metadata = new StorageMetadata.Builder().setCustomMetadata(lastID, outputFile).build();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] daata = baos.toByteArray();
uploadTask = (UploadTask) recRef.putBytes(daata, metadata).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
recURL = recRef.toString();
getIntent().putExtra("recURL", recURL);
}
});
recRef 是一个 StorageReference 元素。元数据是一个 StorageMetadate 元素。lastID 是连接到记录的文本文档的 ID。outputFile 是存储记录的目录
这是录制过程的准备工作:
outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + ("/" + lastAct + " | " + lastID + " | " + date + ".3gp");
myAudioRecorder = new MediaRecorder();
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myAudioRecorder.setOutputFile(outputFile);
提前致谢!