Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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_File_Audio_Uri_Android Internal Storage - Fatal编程技术网

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

如何在android中将音频文件存储到内部存储器,android,file,audio,uri,android-internal-storage,Android,File,Audio,Uri,Android Internal Storage,我一直在谷歌上搜索很多解决方案,但它们都不起作用。我还不太熟悉Uri,路径被传递到函数和存储文件中的输入/输出流 我的项目允许用户从外部存储器附加音频文件,并获取其Uri 从按钮设置单击 acs.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser( lol, "Open Audio (mp3) file"), RQS_OP

我一直在谷歌上搜索很多解决方案,但它们都不起作用。我还不太熟悉Uri,路径被传递到函数和存储文件中的输入/输出流

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

从按钮设置单击

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

(这是来自onActivityResult函数)

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

你能帮我把音频文件存储在内存中的代码吗? 它是否也要经历从文件到字节数组再到文件(带内部存储位置)的过程


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

您可以将其复制到应用程序文件目录:
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);
}

我尝试使用该代码,但它在扩展名上返回null:/
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);
}