Joh*_*n J 5 android android-mediaplayer
我试图解决的问题是在一个需要播放音频文件的活动中.大多数文件将由用户创建(并保存到外部存储器中),因此使用以下代码播放(基于Google的示例代码):
MediaPlayer mPlayer = new MediaPlayer();
mPlayer.setDataSource(filename);
mPlayer.prepare();
mPlayer.start();
Run Code Online (Sandbox Code Playgroud)
但是,一些音频文件将包含在应用程序中,通常使用以下代码播放:
MediaPlayer mPlayer = MediaPlayer.create(getBaseContext(), R.raw.filename);
mPlayer.prepare();
mPlayer.start();
Run Code Online (Sandbox Code Playgroud)
问题是我希望能够像播放用户创建的文件一样播放raw文件夹中的音频文件,因为我不一定知道需要哪些文件.我试过在raw文件夹中获取音频文件的URI并使用以下代码播放它:
Uri uri = Uri.parse("android/resource://com.my.package/" + R.raw.filename);
MediaPlayer mPlayer = new MediaPlayer();
mPlayer.setDataSource(uri.toString());
mPlayer.prepare();
mPlayer.start();
Run Code Online (Sandbox Code Playgroud)
但没有任何反应.没有错误消息,没有播放音频.
我概述了我认为最简单的解决方案,但如果它完成任务,我愿意走另一条路.非常感谢任何帮助.
小智 5
I've managed to get it working, here is the code I used.
mMediaPlayer = new MediaPlayer();
Uri mediaPath = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.filename);
try {
mMediaPlayer.setDataSource(getApplicationContext(), mediaPath);
mMediaPlayer.prepare();
mMediaPlayer.start();
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
I see two problems I see with your code. The first is that "android/resource" needs to become "android.resource"
The second is that setDataSource(String) won't work in this case due to the fact that you need context to use raw files as otherwise it tries to open the file incorrectly. (See the top answer in MediaPlayer.setDataSource(String) not working with local files)
| 归档时间: |
|
| 查看次数: |
3593 次 |
| 最近记录: |