如何将音频文件存储到android的内部存储中

时间:2018-10-24 18:19:31

标签: android file audio uri android-internal-storage

我一直在搜索很多解决方案,但是它们没有用。我还不太熟悉Uri,路径在存储文件时传入/传出功能和Inputstreams。

我的项目允许用户从外部存储附加音频文件并获取其Uri

通过按钮setOnclick

acs.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(
                    lol, "Open Audio (mp3) file"), RQS_OPEN_AUDIO_MP3);

(来自onActivityResult函数)

if (resultCode == RESULT_OK) {
        if (requestCode == RQS_OPEN_AUDIO_FX) {
            audioFxUri = data.getData();
        }
}

之后我要做的是将音频存储到其内部存储中。

您能提供有关将音频文件存储在内部存储器中的代码的帮助吗? 它是否也经历了从文件到字节数组然后从字节数组到文件(具有内部存储位置)的过程?

我只是根据到目前为止所看到的内容。希望您的代码能帮助我。

1 个答案:

答案 0 :(得分:0)

您可以将其复制到应用程序文件dir:getApplicationContext().getFilesDir().getAbsolutePath()

public Uri copyFile(Uri uri){

    if (uri == null) {
        return null;
    }

    String extension = MimeTypeMap.getSingleton().getExtensionFromMimeType(getApplicationContext().getContentResolver().getType(uri));

    String fileName = "some_name" + "." + extension;

    File tempFile = new File(getApplicationContext().getFilesDir().getAbsolutePath(), fileName);

    try {

        boolean fileCreated = tempFile.createNewFile();

        if(!fileCreated){
            Log.e(LOG_TAG,"error creating file");
        }

        InputStream inputStream = getApplicationContext().getContentResolver().openInputStream(uri);

        if(inputStream != null){
            IOUtils.copy(inputStream, new FileOutputStream(tempFile));
        }
    } catch (IOException | NullPointerException ex) {
        Log.d(LOG_TAG, "Exception caught: " + ex.getMessage());
    }

    return Uri.fromFile(tempFile);
}