0

我已经实现了这个代码来播放res/drawable/testing123.mp3文件中可用的声音文件。 的代码是:为什么我无法在android中播放mp3文件?

public void playSound() 
    { 
     boolean mStartPlaying = true; 
     if (mStartPlaying==true) 
     { 
//   String word = wordValue.getText().toString(); 
      String file = Environment.getExternalStorageDirectory().getAbsolutePath(); 
      String sound = file+"/testing123.mp3"; 
      //System.out.println("Before Allocation file is: "+file); 
      //rePlay.setText("Stop"); 
      mPlayer = new MediaPlayer(); 
      try 
      { 
       mPlayer.setDataSource(sound); 
       mPlayer.prepare(); 
       mPlayer.start(); 
      } 
      catch (IOException e) 
      { 
       Log.e(LOG_TAG, "prepare() failed"); 
      } 
     } 
     else 
     { 
      // stopPlaying(); 
      //rePlay.setText("Replay"); 
      mPlayer.release(); 
      mPlayer = null; 
     } 
     mStartPlaying = !mStartPlaying; 
    } 

,但我不能够发挥它。 声音文件在res/drawable/testing123.mp3

那么请帮助我,为什么我无法播放该文件? 谢谢。

+0

是否有任何错误或者您是否听不到任何声音? –

+0

我没有听到任何声音。 。 。 –

+0

听起来像一个权限问题.. – Gnufabio

回答

1

在我的应用程序中,我把音频文件放在/ res/raw文件夹中。比如我有用于通知的MP3文件名为“notify.mp3”在我的原始文件夹中,我可以通过

Uri uri = Uri.parse("android.resource://com.darrenmowat.boothr/" + R.raw.notify);

访问它,那么你可以使用

mPlayer.setDataSource(context, uri);

设置数据源。

+0

好吧让我试试。它是否可以在活动呼叫中播放? –

+0

那么,如果您在创建活动时将其设置为开始播放,则应该开始播放。我真的只是指出你错误地访问了这个文件:p – DarrenMowat

+0

是的。你是对的。 –

1
MediaPlayer player = new MediaPlayer.create(context, URI); 
player.start(); 

这应该足够了,只要确保您的URI是正确的。

1
in my case it works.i add external storage permission.dont know whether it is needed.you first have to copy the music file to sdCard.and check ur mplayer is initiated or not. 

public void playSound() 
    { 
     MediaPlayer mPlayer; 
     mPlayer=new MediaPlayer(); 
     boolean mStartPlaying = true; 
     if (mStartPlaying==true) 
     { 


       String file = Environment.getExternalStorageDirectory().getAbsolutePath(); 


       try { 

        mPlayer.setDataSource(file+"/30.mp3"); mPlayer.prepare(); mPlayer.start(); 
        ; 
        } 
       catch (Exception e) 
        {e.printStackTrace(); } } 
     else { 
    mStartPlaying = !mStartPlaying; } 
} 
+0

忘记将setDataSource中的更改歌曲名称告知相应的文件名 – tasnim

1

你的问题是文件权限。

默认情况下,在写入FileOutputStream时,最终使用rw - ,---,---权限类型(600)。 MediaPlayer将无法播放该文件,除非您将“读取权限”设置为“others”:至少rw - ,---,r--(604)。

我推荐644(RW,R,R),你可以使用以下命令这样做:

调用Runtime.getRuntime()EXEC( “搭配chmod 644” + PATH_TO_YOUR_FILE);

然后,您应该可以播放保存的媒体文件