我正在使用多个媒体播放器对象循环播放某些轨道,我想知道使用 MediaPlayer.create(resId) 与使用 setDataSource(FileDescriptor) 等手动编程不同状态之间的区别。我'我还是 android 的新手,所以我不知道。
最佳答案
.create()
是MediaPlayer
类的静态方法,无论什么时候你想调用.create()
都必须调用它通过 ClassName.methodName()
类似于 MediaPlayer.create()
而 setDataResource()
是 MediaPlayer
类它将通过 MediaPlayer
的实例调用,如
MediaPlayer mp;
mp.setDataResource("your sdCard File Path...");
现在,如果您使用 MediaPlayer.create()
,您应该在 res
下的 raw
文件夹中拥有音频 (mp3) 文件。如果你没有 raw
文件夹创建一个(通常我们必须在我们的项目中手动创建 raw
文件夹)并传递 resId
.create()
方法中的 mp3 文件,如
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
关于android - MediaPlayer.create 和 setDataSource 实现之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20537290/