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