【问题标题】:how to store an audio file to internal storage in android如何将音频文件存储到android的内部存储中
【发布时间】:2018-10-24 18:19:31
【问题描述】:

我一直在谷歌上搜索很多解决方案,但它们不起作用。我对 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();
        }
}

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

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

我只是根据我目前所见。希望你的代码对我有帮助。

【问题讨论】:

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


    【解决方案1】:

    您可以将其复制到应用程序文件目录: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 :/
    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 2023-03-10
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2011-10-10
    • 2022-11-10
    相关资源
    最近更新 更多