2011-12-13 123 views
9

我想开发如下,但我没有找到很好的例子:如何在不从网址下载的情况下播放mp3?

我想玩,而不必下载一个MP3编码的URL。 除非用户停止播放,否则mp3应该在后台播放。 我想我会做多任务处理。

是否有示例文档或任何建议请。 谢谢。

+2

非常宽泛的问题。如果mp3长3分钟,但需要4分钟下载,会发生什么? – vidstige

+0

我不想下载MP3,我需要从网址播放。 – realuser

回答

18

看看这两个教程,在这些的.mp3文件正在播放通过网络链接,

Example of streaming mp3 mediafile from URL with Android MediaPlayer class

Play Mp3 file from a Url

此外,如果你想在后台播放MP3档案,我想你必须使用服务和AIDL它,

看看基本的Android音乐播放器演示MusicDroid - Audio Player Part II它描述了如何使用服务和AIDl为您的音频播放器。

谢谢..

+1

谢谢用户,他们是很好的例子。 – realuser

+0

欢迎好友.. :-) – user370305

+1

感谢您的演示! – Robert

1

编辑:

哦,这是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元素,所以可能不适用于那里的每一个浏览器。不过,我认为它可能适用于任何浏览器,但您应该开发丰富的多媒体体验。

4

可以使用 的MediaPlayer。创建(上下文,uri); 通过从您想要播放的歌曲

7

简单的方法来做到这一点::

MediaPlayer mp = new MediaPlayer(); 
mp.setDataSource(PATH_TO_FILE); 
mp.prepare(); 
mp.start(); 
1
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工作..有没有必要下载吧..

0
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)

+0

请发布一些解释,解释您在此处所做的事情。只是因为这个问题很模糊并不意味着你应该也是。 –

+0

@MadPhysicist我编辑了我的答案,它适用于我。 – veeson

+0

你的代码很好。我的评论是指你没有任何解释。 –

相关问题