0

私はアプリを作成しています。ファイルを未加工のフォルダーに保存し、alarm_tone.mp3 という名前を付けます。

私はそれを1つに保存しています

 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 に失敗したことを示しています

4

2 に答える 2

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...
于 2012-12-21T15:33:33.293 に答える
0

Uri を解析する必要があります。

player.setDataSource(Uri.parse(pref.getString("music_uri", null)));
于 2012-12-21T15:30:31.180 に答える