Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android上录制和播放声音,无需存储临时文件_Android_Audio_Media Player_Soundpool - Fatal编程技术网

在Android上录制和播放声音,无需存储临时文件

在Android上录制和播放声音,无需存储临时文件,android,audio,media-player,soundpool,Android,Audio,Media Player,Soundpool,在我的应用程序中,我想录制一个2秒长的声音,并将其播放给用户。到目前为止,我发现的所有示例都要求播放的音频数据要么来自文件,要么来自URL MediaPlayer和SoundPool类都只接受文件、文件描述符、资源id或URL作为输入,而不仅仅是字节数组 由于只能将文件写入SD卡,而不能写入内部存储器(是这样吗?),应用程序将要求安装SD卡并可写入。但如果没有SD卡,我的应用程序也应该可以工作 有没有办法做到这一点? 谢谢是的,应用程序可以写入内部存储(安装位置)。每个已安装的应用程序都提供了一

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

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

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

有没有办法做到这一点?
谢谢

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

这些
Context
方法可以获得以下目录:

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

  • getDir(字符串名,int模式)
    :检索并在需要时创建一个新目录,应用程序可以在其中放置自己的自定义数据文件

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

此外,如果您只需要在应用程序的内部数据目录中写入文件,有一个非常简单的方法:

您可以使用 'getApplicationContext().getFilesDir().getAbsolutePath()' 获取安装应用程序的目录的路径。
一个限制是,“getFileDir()”提供文件系统上存储使用openFileOutput(字符串,int)创建的文件的目录的路径。

您的应用程序可以将文件写入自己的内部数据和缓存文件夹。大文件不建议使用内部存储,请注意,系统将在需要更多空间时删除缓存。谢谢!请你写下你的回复作为回答,这样我就可以接受了。很好,以防有人需要:为了播放我现在使用的文件mediaPlayer.setDataSource(openFileInput(“some_file”).getFD())