我正在创建一个应用程序,我将文件存储在带有名称的原始文件夹中 alarm_tone.mp3
我将其保存在一个
中 SharedPreferences shared=getSharedPreferences(PREFS_NAME,0);
SharedPreferences.Editor editor=shared.edit();
editor.putString("music_uri", "android.resource://" + "org.riteshmapsapplicationdemo/" + R.raw.alarm_tone);
editor.commit();
在其他活动中我正在使用代码段播放此音调
player=new MediaPlayer();
try {
player.setDataSource(pref.getString("music_uri", null));
player.prepare();
player.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
它正在显示
Media.prepare()失败了
java.io.IOException的
答案 0 :(得分:1)
将您的代码更改为:
SharedPreferences shared=getSharedPreferences(PREFS_NAME,0);
SharedPreferences.Editor editor=shared.edit();
editor.putString("music_uri", "android.resource://" +
this.getPackageName() + "/raw/alarm_tone");
editor.commit();
更改播放代码段
player=new MediaPlayer();
try {
SharedPreferences pref=getSharedPreferences(PREFS_NAME,0);
String struri=pref.getString("music_uri", null);
if(struri !=null){
Uri mUri = Uri.parse(struri);
player.setDataSource(mUri);
player.prepare();
player.start();
}
//your code here...
答案 1 :(得分:0)
你应该解析Uri:
player.setDataSource(Uri.parse(pref.getString("music_uri", null)));