2010-11-17 2 views
0



Мне нужно скачать mp3-файл с URL-адреса сервера, а затем воспроизвести этот mp3-файл.
В основном главный мотив играть удаленный файл mp3, теперь есть два варианта для меня, либо я поток этот файл и воспроизвести его на медиаплеере,

Android: скачать mp3 с URL

или я сначала загрузить его, а затем воспроизвести его. Я все еще пытаюсь сделать первый, но с одним успехом, поэтому просто размышляю над второй альтернативой.

Так что, если может быть предоставлена ​​любая помощь будет здорово для меня .......
Благодаря

ответ

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

Лучше использовать prepareAsync(), чем prepare().

+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

+0

вы можете указать URL-адрес, из которого вы хотите играть в mp3. – Piyush

+0

ooooooo Спасибо user472882, я получил его работу, url был сломан, я использовал url форму учебника, но затем я проверил его, он был сломан .... Спасибо ............ .. – viv

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: ERROR/MediaPlayer (310): ошибка (-38, 0) 11-17 20: 06: 37.086: ERROR/MediaPlayer (310): ошибка (-38,0) – viv

+0

Спасибо Федор, я понял, был сломан, я хотел бы принять два ответа, но я проголосовал за это, спасибо ............ – viv

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(); 
     } 
    } 
} 
Смежные вопросы