如何在不从网址下载的情况下播放mp3?
我想开发如下,但我没有找到很好的例子:如何在不从网址下载的情况下播放mp3?
我想玩,而不必下载一个MP3编码的URL。 除非用户停止播放,否则mp3应该在后台播放。 我想我会做多任务处理。
是否有示例文档或任何建议请。 谢谢。
看看这两个教程,在这些的.mp3文件正在播放通过网络链接,
Example of streaming mp3 mediafile from URL with Android MediaPlayer class
此外,如果你想在后台播放MP3档案,我想你必须使用服务和AIDL它,
看看基本的Android音乐播放器演示MusicDroid - Audio Player Part II它描述了如何使用服务和AIDl为您的音频播放器。
谢谢..
编辑:
哦,这是Android的具体,不(仅仅)一个网站。我建议你看看这两种解决方案,以及其他人提到的MediaPlayer
解决方案之一。如果你有MediaPlayer
去,我建议你接受他们的答案:)
有是如何做到这一点的W3Schools的例子很多:
http://www.w3schools.com/html/html_sounds.asp
您可以:
- 嵌入媒体播放器,如the Yahoo web player
- 通过播放HTML中的音频元素
- 使用
<embed>
元素 - 使用
<object>
元素
下面是他们形容为 “最好” 的解决方案:
<audio controls="controls" height="50px" width="100px">
<source src="song.mp3" type="audio/mpeg" />
<source src="song.ogg" type="audio/ogg" />
<embed height="50px" width="100px" src="song.mp3" />
</audio>
注意,这是一个HTML 5元素,所以可能不适用于那里的每一个浏览器。不过,我认为它可能适用于任何浏览器,但您应该开发丰富的多媒体体验。
可以使用 的MediaPlayer。创建(上下文,uri); 通过从您想要播放的歌曲
简单的方法来做到这一点::
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(PATH_TO_FILE);
mp.prepare();
mp.start();
if (!isPlaying)
{
isPlaying = true;
mp = new MediaPlayer();
try {
mp.reset(); // new one
mp.setDataSource(AudioPlayer.this, myUri);
//mp.prepareAsync();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.prepare(); // don't use prepareAsync for mp3 playback
mp.start();
// String songTitle = songsList.get(songIndex).get("songTitle");
// songTitleLabel.setText(songTitle);
songProgressBar.setProgress(0);
songProgressBar.setMax(100);
// Updating progress bar
updateProgressBar();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
else
{
isPlaying = false;
mp.release();// stop Playing
//mp = null;
}
我用它在我的MediaPlayer它是上下文(本)和URI工作..有没有必要下载吧..
public class PlayAudioManager {
private static MediaPlayer mediaPlayer;
public static void playAudio(final Context context, final String url) throws Exception {
if (mediaPlayer == null) {
mediaPlayer = MediaPlayer.create(context, Uri.parse(url));
}
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
killMediaPlayer();
}
});
mediaPlayer.start();
}
private static void killMediaPlayer() {
if (mediaPlayer != null) {
try {
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
在你的活动,例如,只需要调用 PlayAudioManager.playAudio(context, http://dict.youdao.com/dictvoice?audio=good&type=1)
请发布一些解释,解释您在此处所做的事情。只是因为这个问题很模糊并不意味着你应该也是。 –
@MadPhysicist我编辑了我的答案,它适用于我。 – veeson
你的代码很好。我的评论是指你没有任何解释。 –
非常宽泛的问题。如果mp3长3分钟,但需要4分钟下载,会发生什么? – vidstige
我不想下载MP3,我需要从网址播放。 – realuser