如何在应用程序的原始文件夹中保存录制的音频文件

时间:2012-02-17 11:27:19

标签: android

我正在创建一个应用程序,我必须在其中录制语音并将其保存,然后再播放相同的内容。我想将录制的音频保存在应用程序的原始文件夹中。我应该如何给出raw文件夹的目录路径来保存我的音频文件。

2 个答案:

答案 0 :(得分:2)

构建应用后,您无法重新编写资源。使用放在资源中的文件可以做的最好的事情是将它们读入内存,修改它们,然后将结果保存到SD卡或其他一些提供的存储区域。当你的应用程序卸载时,你的应用程序创建的文件也会被删除,所以需要担心。

要保存到SD卡,请尝试以下操作:

您需要获得许可:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

然后你可以发送数据和文件名:

public void saveFileToCard(byte[] data,String filename) {
   File file = new File(Environment.getExternalStorageDirectory(), filename);
   FileOutputStream fos;
   try {
      fos = new FileOutputStream(file);
      fos.write(data);
      fos.flush();
      fos.close();
   } catch (FileNotFoundException e) {
    // handle exception
   } catch (IOException e) {
    // handle exception
   }
}

这个或它的变体应该对你有所帮助。

答案 1 :(得分:2)

抱歉,你不能。

由于Android .apk file is read-only,您无法在包层次结构中写入任何文件(例如res,raw,asset)。

最好将其存储在应用程序包(内部存储)或外部存储中。

<强>更新

这将在应用程序的内部存储中创建一个文件。

//content is base64 string you can use directly use FileInputstream's byte
byte[] pdfAsBytes = Base64.decode(content, 0);
//filePath just filename of your audio file this will create a file in /data/data/<package_name>/files
FileOutputStream fos = openFileOutput(filePath, Context.Context.MODE_PRIVATE);
fos.write(pdfAsBytes);
fos.close();