2014-02-20 59 views
2

我試圖從網址播放音樂而無需下載,每一件事情都寫入唯一的問題是我使用下面的代碼來播放和暫停音樂,首先按下按鈕音樂開始播放播放並再次按下音樂暫停,但如果我再次按下該按鈕則什麼也沒有發生,它應該播放暫停播放的音樂,但它不會,問題是什麼?Android - 從網址播放音樂

buttonPlayPause = (ImageView) findViewById(R.id.play); 
    buttonPlayPause.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      if (isPlaying) { 
       buttonPlayPause.setImageResource(R.drawable.play); 
       mediaPlayer.pause(); 
       isPlaying = false; 
      } else { 
       buttonPlayPause.setImageResource(R.drawable.pause); 
       new Stream().execute(); 
      } 
     } 
    }); 

private class Stream extends AsyncTask<String, String, String> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     try { 
      mediaPlayer.setDataSource(url); 
      mediaPlayer.prepare(); 
      mediaFileLengthInMilliseconds = mediaPlayer.getDuration(); 
      mediaPlayer.start(); 
      animation.cancel(); 
      isPlaying = true; 
      primarySeekBarProgressUpdater(); 
     } catch (Exception e) { 
      return "Exception Caught"; 
     } 
     return url; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
    } 
} 
+0

只是旁註:爲什麼你要在你的onClick(View v)方法中檢查'v.getId()== R.id.play'?是不同的按鈕調用這種方法? – donfuxx

+0

你是對的,我修好了 – user3326853

+0

可能會導致你使用prepare()not prepareAsync() –

回答

0

在這裏我使用兩個按鈕, 1暫停和播放。對於stop.ok另一個按鈕允許代碼, 在你的按鈕

開關的情況下增加以下編碼, btnPlayBack是暫停和play.btnStop停止播放music.in在這裏,我創建了一個名爲全球的MediaPlayer的MediaPlayer實例,

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.button_stop_play: 
      if (mediaPlayer != null && buttonAction == 0) { 
       mediaPlayer.pause(); 
       buttonAction = 1; 
       btnPlayback.setText("Play"); 
      } 
      else { 
       try { 
        mediaPlayer.start(); 
        buttonAction = 0; 
        btnPlayback.setText("Pause"); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
      break; 
     case R.id.button_stop: 
      mediaPlayer.stop(); 
      mediaPlayer = null; 
      break; 
    } 
} 

爲Android背部按鍵,您也可以通過這裏加入這一行

停止播放音樂
@Override 
public void onBackPressed() { 
    mediaPlayer.stop(); 
}