音乐不是在Android中播放

时间:2012-12-21 15:21:15

标签: android sharedpreferences android-contentprovider

我正在创建一个应用程序,我将文件存储在带有名称的原始文件夹中 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的

2 个答案:

答案 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)));