【发布时间】:2017-02-08 10:46:15
【问题描述】:
我正在开发一个应用程序,在该应用程序中我有一个按钮,名为“选择声音”。当用户单击此按钮时,应要求他/她从文件管理器/内存中选择任何音频文件。
所以,我知道为此,我必须使用Intent.Action_GetData。我也在做同样的事情:
//code start
Intent intent = new Intent();
intent.setType("audio/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent,1);
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
if(requestCode == 1){
if(resultCode == RESULT_OK){
//the selected audio.
Uri uri = data.getData();
int SoundID=soundPool.Load(uri.toString(), 1);
//SoundPool is already constructed and is working perfectly for the resource files
PlaySound(SoundID);
//PlaySound method is already defined
}
}
super.onActivityResult(requestCode, resultCode, data);
}
//end of code
但它不工作
现在,在OnActivityResult 中,我不知道如何加载用户选择的文件的正确 URI,因为在 Android 4.4 之前,它返回不同的 URI,在 Android 4.4 之后,它在 @987654326 上返回不同的 URI @。现在,我该怎么办?
另外,我知道要播放音频文件,我必须使用SoundPool,我也有代码,事实上它对资源/原始/音频文件工作正常,但是如何从此URI 加载/播放SoundPool 中的文件?
【问题讨论】:
-
你能把代码贴出来吗,你在
OnActivityResult做了什么?你是怎么得到URI的? -
@Prathamesh Toradmal 编写了代码
标签: android audio android-intent uri action