为啥我无法在 android 中播放 mp3 文件?

Posted

技术标签:

【中文标题】为啥我无法在 android 中播放 mp3 文件?【英文标题】:Why i am not able to play mp3 file in android?为什么我无法在 android 中播放 mp3 文件? 【发布时间】:2011-11-13 05:24:22 【问题描述】:

我已经实现了这段代码来播放 res/drawable/testing123.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

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

【问题讨论】:

是否有任何错误或您只是没有听到任何声音? 我没有听到任何声音。 . . 听起来是权限问题.. 【参考方案1】:

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

访问它

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

然后你可以使用

mPlayer.setDataSource(context, uri);

设置数据源。

【讨论】:

好吧,让我试试。它可以在 Activity 调用中播放吗? 好吧,如果您将其设置为在创建活动时开始播放,它应该开始播放。我真的只是指出您错误地访问了文件:p 为什么我仍然无法播放歌曲? 好的。我忘记换包裹了。现在我已经对其进行了更改,并且效果很好。【参考方案2】:
MediaPlayer player = new MediaPlayer.create(context, URI);
player.start();

这就够了,只要确保你的URI是正确的。

【讨论】:

【参考方案3】:
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; 

【讨论】:

忘记告诉将 setDataSource 中的歌曲名称更改为适当的文件名【参考方案4】:

您的问题是文件权限。

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

我推荐 644 (rw,r,r),你可以使用以下命令:

Runtime.getRuntime().exec("chmod 644 " + PATH_TO_YOUR_FILE);

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

【讨论】:

以上是关于为啥我无法在 android 中播放 mp3 文件?的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin for android:无法从外部文件夹播放 mp3

Ionic 媒体插件无法在 iOS 上播放本地存储的 mp3 文件

android - 如何在我的音乐播放器中从文件管理器播放 mp3 文件?

从 byte[] android 转换后 Mp3 文件不播放

无法使用 AVAudioPlayer 播放存储在文档目录中的本地 mp3 文件

html5播放音乐为啥苹果手机为啥不能播放