简单的媒体播放器从文件路径播放 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 文件?