如何在android中将音频文件存储到内部存储器
我一直在谷歌上搜索很多解决方案,但它们都不起作用。我还不太熟悉Uri,路径被传递到函数和存储文件中的输入/输出流 我的项目允许用户从外部存储器附加音频文件,并获取其Uri 从按钮设置单击如何在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
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);
}