如何将录制的音频保存到内部存储器 android

How to save recorded audio into internal storage android

我多次尝试将录制的音频保存到内部存储器,但出现异常

Caused by: java.io.FileNotFoundException: /data/user/0/sepahtan.sepahtan/files/sound/1653658919164.3gp: open failed: ENOENT (No such file or directory)

private fun getFileName(): String {
    val path = requireContext().filesDir.path
    val file = File(path,"sound")

    try {
        file.mkdirs()
    }catch (e:Exception){}

    return "$file/${System.currentTimeMillis()}.3gp"
}

这个函数给我路径,我把它放到了

mediaPlayer.setDataSource(getFileName())

我已经研究了关于这个标题的所有问题

你需要的功能其实是这样的:

fun saveRecordedAudio(inputStream: InputStream) {
    val outputStream: OutputStream = FileOutputStream(getFileName())

    val buffer = ByteArray(1024)
    var read: Int
    var total: Long = 0
    while (inputStream.read(buffer).also { read = it } != -1) {
        outputStream.write(buffer, 0, read)
        total += read.toLong()
    }
    
    inputStream.close()
    outputStream.close()
}

mediaPlayer.setDataSource(getFileName())之前,实际上你需要使用上面的函数获取你录制文件的inputStream并保存到内部存储中。

您可以使用 Android SDK 包中的 AudioRecord API 录制音频。

请注意,对于不同的 Android 版本,保存到存储可能是一个挑战。