編集:参照の最後に「recRef」「.3gp」を追加しました。エミュレーターを使用すると、0KB の .3gp ファイルとしてアップロードされ、外部デバイスは「application/octet-stream」ファイルをアップロードします (重量0KB)。
アプリにアクティビティを記録しましたが、firebase ストレージに正しくアップロードできません。Google が公開した画像アップロードの例に基づいてアップロード プロセスを構築しようとしましたが、空のファイル (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 要素です。metadata は 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);
前もって感謝します!