7

我正在使用几个媒体播放器对象来循环一些轨道,我想知道这是使用 MediaPlayer.create(resId) 与使用 setDataSource(FileDescriptor) 等手动编程不同状态之间的区别。我还是新手到android所以我不知道。

4

1 回答 1

4

.create()MediaPlayer类的静态方法,当你想调用时,你必须通过like来.create()调用它,而是类中的方法,它将通过like的实例调用ClassName.methodName()MediaPlayer.create()

setDataResource()MediaPlayerMediaPlayer

MediaPlayer mp;
mp.setDataResource("your sdCard File Path...");



现在,如果您使用MediaPlayer.create(),您的raw文件夹中应该有音频(mp3)文件res。如果您没有raw文件夹,请创建一个(通常我们必须raw在我们的项目中手动创建文件夹)并以类似的方法传递该resIdmp3 文件的.create()

MediaPlayer mp = MediaPlayer.create(R.raw.mp3FileName);

第二个是setDataResource()方法用于你想通过你的播放音频文件SDCard但你需要确保你给 setDataSource() 的路径是完全正确的。最好的方法不是硬编码对“/sdcard/”的引用,而是使用

android.os.Environment.getExternalStorageDirectory()
MediaPlayer mediaPlayer = new MediaPlayer();
File path = android.os.Environment.getExternalStorageDirectory();
mediaPlayer.setDataSource(path + "/fileName.mp3");


通过这种方式,您可以获得正确的路径并通过 SDCard 播放您的 mp3。希望这个解释能帮助你理解。有关更多信息,请参阅Android 开发者网站的 MediaPlayer

于 2013-12-12T08:24:35.253 回答