2010-11-17 157 views
0



我需要从服务器URL下载mp3文件,然后播放该mp3文件。
基本上主要动机是为了播放远程MP3文件,现在有我两个选择,要么我流该文件并播放到媒体播放器,

Android:从网址下载mp3

还是我先下载它,然后播放。我仍然在尝试第一个,但只有一个成功,所以只考虑第二个选择。

所以,如果可以提供任何帮助,这将是伟大的我.......
感谢

回答

1
MediaPlayer mp=new MediaPlayer(); 
mp.setDataSource(url_to_mp3); 
mp.prepareAsync(); 
mp.start();  

最好使用prepareAsync()而不是prepare()

+0

感谢您的回应,但我得到这个错误:11-17 20:06 :36.536:错误/ MediaPlayer(310):启动状态4调用 11-17 20:06:36.566:错误/ MediaPlayer(310):错误(-38,0) 11-17 20:06:37.086:错误/ MediaPlayer(310):错误(-38,0) – viv 2010-11-17 14:37:29

+0

你能提供你想要播放mp3的网址吗? – Piyush 2010-11-18 04:39:57

+0

ooooooo感谢user472882,我得到它的工作,网址被打破了,我使用的URL形式的教程,但后来我检查它,它被打破....谢谢............ .. – viv 2010-11-18 05:37:57

1

这是很容易发挥流

MediaPlayer mp=new MediaPlayer(); 
mp.setDataSource(url_to_mp3); 
mp.prepare(); 
mp.start(); 
+0

嘿费奥多尔,感谢您的响应,但我得到以下错误:11-17 20:06:36.536:ERROR/MediaPlayer的(310):开始称为在状态4 11-17 20:06: 36.566:错误/ MediaPlayer(310):错误(-38,0) 11-17 20:06:37.086:错误/ MediaPlayer(310):错误(-38,0) – viv 2010-11-17 14:38:34

+0

感谢Fedor,我明白了,url被打破了,我希望我能接受两个答案,但我已经投了票,谢谢............ – viv 2010-11-18 05:38:49

3
public class Mp3player extends Activity { 

    private Button buttonPlayStop; 
    private MediaPlayer mediaPlayer; 
    private SeekBar seekBar; 

    private final Handler handler = new Handler(); 
    static final String AUDIO_PATH = 
       "http://sound18.mp3slash.net/indian/abcd/[Songs.PK]%20ABCD%20-%2002%20-%20Bezubaan.mp3"; 
    // Here i override onCreate method. 
    // 
    // setContentView() method set the layout that you will see then 
    // the application will starts 
    // 
    // initViews() method i create to init views components. 
    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.main); 
     initViews(); 

    } 

    // This method set the setOnClickListener and method for it (buttonClick()) 
    private void initViews() { 
     buttonPlayStop = (Button) findViewById(R.id.ButtonPlayStop); 
     buttonPlayStop.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       buttonClick(); 

      } 
     }); 

     try { 
      playAudio(AUDIO_PATH); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


     seekBar = (SeekBar) findViewById(R.id.SeekBar01); 
     seekBar.setMax(mediaPlayer.getDuration()); 
     seekBar.setOnTouchListener(new OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       seekChange(v); 
       return false; 
      } 
     }); 

    } 
    private void playAudio(String url) throws Exception 
    { 
     killMediaPlayer(); 

     mediaPlayer = new MediaPlayer(); 
     mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     mediaPlayer.setDataSource(url); 
     mediaPlayer.prepare(); 
    // mediaPlayer.start(); 
    } 
    private void killMediaPlayer() { 
      if(mediaPlayer!=null) { 
       try { 
        mediaPlayer.release(); 
       } 
       catch(Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    public void startPlayProgressUpdater() { 
     seekBar.setProgress(mediaPlayer.getCurrentPosition()); 

     if (mediaPlayer.isPlaying()) { 
      Runnable notification = new Runnable() { 
       public void run() { 
        startPlayProgressUpdater(); 
       } 
      }; 
      handler.postDelayed(notification, 1000); 
     } else { 
      mediaPlayer.pause(); 
      buttonPlayStop.setText(getString(R.string.play_str)); 
      seekBar.setProgress(0); 
     } 
    } 

    // This is event handler thumb moving event 
    private void seekChange(View v) { 
     if (mediaPlayer.isPlaying()) { 
      SeekBar sb = (SeekBar) v; 
      mediaPlayer.seekTo(sb.getProgress()); 
     } 
    } 

    // This is event handler for buttonClick event 
    private void buttonClick() { 
     if (buttonPlayStop.getText() == getString(R.string.play_str)) { 
      buttonPlayStop.setText(getString(R.string.pause_str)); 
      try { 
       mediaPlayer.start(); 
       startPlayProgressUpdater(); 
      } catch (IllegalStateException e) { 
       mediaPlayer.pause(); 
      } 
     } else { 
      buttonPlayStop.setText(getString(R.string.play_str)); 
      mediaPlayer.pause(); 
     } 
    } 
}