在Android上录制和播放声音而不存储临时文件

时间:2012-12-07 12:45:40

标签: android audio media-player soundpool

在我的应用程序中,我想录制一段2秒长的声音并将其播放回用户。到目前为止,我发现的所有示例都要求播放的音频数据来自文件或URL。

MediaPlayer和SoundPool类都只接受文件,文件描述符,资源ID或URL作为输入,而不仅仅是字节数组。

由于人们只能将文件写入SD卡而不是内部存储器(这样吗?),应用程序需要安装和写入SD卡。但是如果没有SD卡,我的应用程序也可以正常工作。

有没有办法实现这个目标? 感谢

2 个答案:

答案 0 :(得分:3)

是的,应用程序可以写入内部存储(安装它的位置)。每个已安装的应用程序都提供了一个Data文件夹来写入其内部文件。还提供了缓存存储。

Context的这些方法可以为您提供以下目录:

  • getCacheDir():返回文件系统上特定于应用程序的缓存目录的绝对路径(注意:如果存储空间不足,系统可能会删除缓存

    < / LI>
  • getDir(String name, int mode):检索,创建一个新目录,如果需要,应用程序可以在其中放置自己的自定义数据文件。

还有一种外部存储方法:getExternalCacheDir()但不可靠,因为外部存储可能并不总是存在。

此外,如果您只需要在App的内部数据目录中编写文件,则有一种非常简单的方法:

openFileOutput (String name, int mode)

答案 1 :(得分:0)

你可以使用 'getApplicationContext()。getFilesDir()。getAbsolutePath()' 获取安装应用程序的目录的路径。 一个限制是,'getFilesDir()'为您提供了文件系统上目录的路径,其中存储了使用openFileOutput(String,int)创建的文件。