【发布时间】:2013-12-12 07:19:19
【问题描述】:
我正在使用多个媒体播放器对象来循环播放一些曲目,我想知道这是使用 MediaPlayer.create(resId) 与使用 setDataSource(FileDescriptor) 等手动编程不同状态之间的区别。我我对android还是新手,所以我不知道。
【问题讨论】:
标签: android methods media-player implementation difference
我正在使用多个媒体播放器对象来循环播放一些曲目,我想知道这是使用 MediaPlayer.create(resId) 与使用 setDataSource(FileDescriptor) 等手动编程不同状态之间的区别。我我对android还是新手,所以我不知道。
【问题讨论】:
标签: android methods media-player implementation difference
.create() 是 MediaPlayer 类的静态方法,每当你想调用 .create() 时,你必须通过 ClassName.methodName() 调用它,例如 MediaPlayer.create()
而 setDataResource() 是一个方法在 MediaPlayer 类中,它将通过 MediaPlayer 的实例调用,如
MediaPlayer mp;
mp.setDataResource("your sdCard File Path...");
现在,如果您使用MediaPlayer.create(),您的raw 文件夹中的res 下应该有音频(mp3)文件。如果您没有raw 文件夹,请创建一个(通常我们必须在我们的项目中手动创建raw 文件夹)并在.create() 方法中传递该mp3 文件的resId,如
MediaPlayer mp = MediaPlayer.create(R.raw.mp3FileName);
第二个是setDataResource() 方法用于您想通过SDCard 播放音频文件的地方,但您需要确保您提供给 setDataSource() 的路径完全正确。最好的方法是使用
android.os.Environment.getExternalStorageDirectory()
MediaPlayer mediaPlayer = new MediaPlayer();
File path = android.os.Environment.getExternalStorageDirectory();
mediaPlayer.setDataSource(path + "/fileName.mp3");
通过这种方式,您可以获得正确的路径并通过 SDCard 播放您的 mp3。
希望这个解释能帮助你理解。欲了解更多信息,请参阅MediaPlayer From Android Developer Site
【讨论】: