【发布时间】:2010-06-03 19:47:32
【问题描述】:
我是 Android 开发新手,有一个疑问/问题。
我正在使用 MediaPlayer 类来重现一些声音/音乐。我正在玩原始资源 (res/raw),看起来很简单。
要播放原始资源,必须像这样初始化 MediaPlayer:
MediaPlayer mp = MediaPlayer.create(appContext, R.raw.song);
mp.start();
直到这里没有问题。播放声音,一切正常。当我想向我的应用程序添加更多选项时,我的问题出现了。特别是当我添加“停止”按钮/选项时。
基本上,我想做的是......当我按下“停止”时,音乐停止。当我按下“开始”时,歌曲/声音重新开始。 (非常基本!)
要停止媒体播放器,您只需致电stop()。但要再次播放声音,必须重置媒体播放器并做好准备。
mp.reset();
mp.setDataSource(params);
mp.prepare();
问题是setDataSource() 方法只接受文件路径、内容提供者 URI、流媒体 URL 路径或文件描述符作为参数。
所以,由于这个方法不接受资源标识符,我不知道如何设置数据源以便调用prepare()。另外我不明白为什么不能使用Resouce标识符来设置数据源,但是初始化MediaPlayer的时候可以使用资源标识符。
我想我错过了一些东西。我想知道我是否在混合概念,并且方法stop() 不必在“停止”按钮中调用。有什么帮助吗?
提前致谢!!!
【问题讨论】:
-
您要暂停 Mediaplayer 还是完全停止并重新播放?
-
完全停止并再次播放。要暂停...如果要继续播放,您必须调用方法 pause() 然后 start()。这很容易并且有效。问题是当您尝试完全停止并再次播放时(就像在任何音乐播放器中一样)
-
我有同样的“问题”。我目前所做的是每次开始歌曲时创建一个新的 MediaPlayer。我知道它用资源填充内存,但我也在以前使用的 MediaPlayer 上调用 mp.release()。我认为这解决了内存问题。我没有看到任何其他解决方案。
-
遇到了同样的问题,请问您解决了吗?
标签: android media-player