2012-12-21 2 views
0

я создаю приложение я сохранить файл в нестандартной папке с именем 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

откуда 'pref' пришел? В первом отключенном вы назвали объект SharedPreferences 'shared', вы уверены, что получаете правильные SharedPreferences при создании экземпляра' pref'? Можете ли вы опубликовать код, где вы это делаете? – FoamyGuy

ответ

0

Вы должны разобрать Uri:

player.setDataSource(Uri.parse(pref.getString("music_uri", null))); 
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... 
Смежные вопросы