【问题标题】:How to save recorded sound in the Room database?如何将录制的声音保存在 Room 数据库中?
【发布时间】:2019-06-14 11:20:43
【问题描述】:

我正在尝试制作录音机应用程序,我想在这个小项目中使用 Room 数据库来制作录制的声音列表。但是如何将录制的声音保存在该数据库中? 有没有人有一些想法,例如?

【问题讨论】:

  • 不要为此使用 Room。将记录保存在您的应用程序容器中,并在您的数据库中保存对容器中文件的引用(例如:文件名)。另外,请问问自己为什么要使用 Room
  • 文件容器?我认为这里的房间会是一个不错的选择。
  • The Room persistence library provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite. 在 SQLite 数据库中存储文件在移动开发中并不常见。像往常一样存储文件。
  • @Zun 我的问题。我的应用程序是一个完全离线的应用程序。我可以使用 .db 文件将数据从一台设备备份和恢复到另一台设备。如果我要在应用程序上放一些录音,我如何备份数据库文件以及存储在内存中的音频文件?当我点击备份按钮时,如何将所有文件备份到一个文件?这样我就可以使用相同的文件进行恢复。而且我不想单独备份db文件和录音,分别恢复每个文件。

标签: android android-room


【解决方案1】:

使用 MediaRecorder 进行录音。

String filePath = Environment.getExternalStorageDirectory() + File.separator + "myRecording.3gpp"; // set path where you want to save your recording
File file = new File(filePath); 
MediaRecorder myAudioRecorder = new MediaRecorder();
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myAudioRecorder.setOutputFile(file);

开始录制

 myAudioRecorder.prepare();
 myAudioRecorder.start();

停止录制

myAudioRecorder.stop();
myAudioRecorder.release();
myAudioRecorder = null;

现在在录制保存 filePath 到您的房间数据库表之后。此外,您还需要添加写入存储权限。

【讨论】:

  • 我的问题给你。我的应用程序是一个完全离线的应用程序。我可以使用 .db 文件将数据从一台设备备份和恢复到另一台设备。如果我要在应用程序上放一些录音,我如何备份数据库文件以及存储在内存中的音频文件?当我点击备份按钮时,如何将所有文件备份到一个文件?这样我就可以使用相同的文件进行恢复。而且我不想单独备份db文件和录音,分别恢复每个文件。
  • 他不是这么问的。
猜你喜欢
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多