简单的媒体播放器从文件路径播放 mp3?

Posted

技术标签:

【中文标题】简单的媒体播放器从文件路径播放 mp3?【英文标题】:Simple mediaplayer play mp3 from file path? 【发布时间】:2013-05-18 21:02:03 【问题描述】:

我有一个非常简单的播放背景的媒体播放器。它从 apk 调用文件,但我希望它从任何目录播放,如音乐或 sdcard。

这是我的代码:

private MediaPlayer mpintro;

.
.

mpintro = MediaPlayer.create(this, R.raw.intro);
        mpintro.setLooping(true);
        mpintro.start();

【问题讨论】:

@Johnsimit 使用默认异常 e. 它的工作原理是这样的:`mpintro = MediaPlayer.create(this, Uri.parse(Environment.getExternalStorageDirectory().getPath()+ "/Music/intro.mp3")); mpintro.setLooping(true); mpintro.start();` 它不能作为字符串文件路径正常工作... @Johnsimit 我已经在localhost/android/music/vande.mp3 中部署了我所有的 mp3 文件,我像你所说的那样使用 Uri.parse(Environment.getExternalStorageDirectory().getPath()+ "//localhost/Android/Music/ vande.mp3")); mpintro.setLooping(true); mpintro.start();` 但它不工作 【参考方案1】:

它是这样工作的:

mpintro = MediaPlayer.create(this, Uri.parse(Environment.getExternalStorageDirectory().getPath()+ "/Music/intro.mp3"));
mpintro.setLooping(true);
        mpintro.start();

它不能作为字符串文件路径正常工作...

【讨论】:

【参考方案2】:
String filePath = Environment.getExternalStorageDirectory()+"/yourfolderNAme/yopurfile.mp3";
mediaPlayer = new  MediaPlayer();
mediaPlayer.setDataSource(filePath);
mediaPlayer.prepare();   
mediaPlayer.start()

这个从原始文件夹播放。

int resID = myContext.getResources().getIdentifier(playSoundName,"raw",myContext.getPackageName());

            MediaPlayer mediaPlayer = MediaPlayer.create(myContext,resID);
            mediaPlayer.prepare();
            mediaPlayer.start();

mycontext=application.this. 使用。

【讨论】:

它说 用 try/catch 环绕,当我使用文件路径时.. 需要吗? @John simit 每次你正确使用 try catch 块的任何代码时,这是一个好习惯和良好的编程技术。 catch (IllegalArgumentException e) // TODO Auto-generated catch block e.printStackTrace(); catch (SecurityException 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(); 它给了我完整的 catch 代码,使用 Exception e 是否足够,或者我应该使用给我的建议吗? @Johnsimit 简单异常。仅使用默认异常。如果有帮助,请点击正确的标记。好的,再见【参考方案3】:

这里是设置MediaPlayer 来播放 SD 卡的代码:

String PATH_TO_FILE = "/sdcard/music.mp3";    
mediaPlayer = new  MediaPlayer();
mediaPlayer.setDataSource(PATH_TO_FILE);
mediaPlayer.prepare();   
mediaPlayer.start()

您可以查看完整示例here。如果您有任何问题,请告诉我。

【讨论】:

【参考方案4】:

使用下面对我有用的代码。

MediaPlayer mp = new MediaPlayer();
mp.setDataSource("/mnt/sdcard/yourdirectory/youraudiofile.mp3");
mp.prepare();
mp.start();

【讨论】:

Environment.getExternalStorageDirectory() 我怎么能这样使用?有时不同的设备可能会导致文件路径宽度出现问题? @MD 如果您使用这种类型的路径,那么有时 sdcard 名称会不同。有些设备也有 10 GB 外加 Internet 内存,因此它用作外部存储器。所以此路径无法工作。 @Zala Janaksinh ,这只是一个例子。我试着告诉他,它是如何工作的。我没有实现她的逻辑和她的代码。 @MdAbdulGafur 不要私信我只是建议。抱歉 另一个安卓示例:mp.setDataSource("/storage/emulated/0/Music/");【参考方案5】:

我使用这个类来播放音频。如果您的音频位置是原始 文件夹。

调用播放方法:

new AudioPlayer().play(mContext, getResources().getIdentifier(alphabetItemList.get(mPosition)
                        .getDetail().get(0).getAudio(),"raw", getPackageName()));

AudioPlayer.java 类:

public class AudioPlayer 

    private MediaPlayer mMediaPlayer;

    public void stop() 
        if (mMediaPlayer != null) 
            mMediaPlayer.release();
            mMediaPlayer = null;
        
    
    // mothod for raw folder (R.raw.fileName)
    public void play(Context context, int rid)
        stop();

        mMediaPlayer = MediaPlayer.create(context, rid);
        mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) 
                stop();
            
        );

        mMediaPlayer.start();
    

    // mothod for other folder 
    public void play(Context context, String name) 
        stop();

        //mMediaPlayer = MediaPlayer.create(c, rid);
        mMediaPlayer = MediaPlayer.create(context, Uri.parse("android.resource://"+ context.getPackageName()+"/your_file/"+name+".mp3"));
        mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) 
                stop();
            
        );

        mMediaPlayer.start();
    


【讨论】:

【参考方案6】:

2020 年 - 11 月

这对我有用:

final File file = new File(getFilesDir(), "test.wav");//OR path to existing file
mediaPlayer = MediaPlayer.create(getApplicationContext(), Uri.fromFile(file));
mediaPlayer.start();

【讨论】:

【参考方案7】:

在 Kotlin 中:

1) 该文件位于 resource 文件夹中:

var nowLesson =resources.getIdentifier("test.mp3", "raw", packageName)
             
mediaPlayer = MediaPlayer.create(applicationContext, nowLesson)
    
mediaPlayer.start()

2)文件位于Path(文件路径)

val file = File(
        this.getDir("Music", MODE_PRIVATE),
        "/t.mp3"
    )
mediaPlayer = MediaPlayer.create(this,Uri.fromFile(file ))
                mediaPlayer.start()

【讨论】:

以上是关于简单的媒体播放器从文件路径播放 mp3?的主要内容,如果未能解决你的问题,请参考以下文章

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

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

使用MediaCodec+OpenSL编写简单的音频播放器

使用MediaCodec+OpenSL编写简单的音频播放器

使用MediaCodec+OpenSL编写简单的音频播放器

简单的 MP3 播放器,通知不工作