为什么我无法在Android中播放mp3文件?

时间:2011-09-08 17:57:34

标签: android android-layout android-emulator android-widget android-ndk

我已实现此代码以播放res / drawable / testing123.mp3文件中可用的Sound文件。 代码是:

 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

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

4 个答案:

答案 0 :(得分:1)

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

访问它

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

然后你可以使用

mPlayer.setDataSource(context, uri);

设置数据源。

答案 1 :(得分:1)

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

这应该足够了,只需确保您的URI正确无误。

答案 2 :(得分: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; }
}

答案 3 :(得分:1)

您的问题是文件权限。

默认情况下,当写入FileOutputStream时,最终会得到rw - ,---,---类型的权限(600)。 MediaPlayer将无法播放该文件,除非您将“读取权限”赋予“其他人”:至少rw - ,---,r--(604)。

我推荐644(rw,r,r),您可以使用以下命令执行此操作:

Runtime.getRuntime()。exec(“chmod 644”+ PATH_TO_YOUR_FILE);

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