2014-04-24 88 views
1

我想了解有關android媒體播放器的信息。我設計了一個媒體播放器,它會採取網址和播放歌曲,當我選擇播放按鈕時,當我在我的平板電腦測試它不工作,如果我選擇按鈕它不會播放或給出錯誤既沒有崩潰正在發生。Android:無法播放來自給定URL的mp3文件

我有一個問題記住,驗證是否需要像例子,而研究只見android.drm等,因爲我的URL鏈接到服務器

誰能幫我在這

我已經發布了我甚至使用過logcat的細節。 logcat的會告訴GPU,所以我在我的平板電腦進行測試,以及仍然我不能聽在logcat的

public class MainActivity extends Activity 
{ 
static final String AUDIO_PATH = "url"; 
private MediaPlayer mediaPlayer; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
} 

public void doClick(View view) { 
    switch(view.getId()) { 
    case R.id.play: 
     try { 
      playAudio(AUDIO_PATH); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     break; 

    case R.id.stop: 
     if(mediaPlayer != null) { 
      mediaPlayer.stop(); 

     } 
     break; 
    } 
} 

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

    mediaPlayer = new MediaPlayer(); 
    mediaPlayer.setDataSource(url); 
    mediaPlayer.prepare(); 
    mediaPlayer.start(); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    killMediaPlayer(); 
} 

private void killMediaPlayer() { 
    if(mediaPlayer!=null) { 
     try { 
      mediaPlayer.release(); 
     } 
     catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 
}} 

的main.xml文件如下圖所示

<EditText 
    android:id="@+id/EditTextSongURL" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.54" 
    android:ems="10" 
    android:inputType="textMultiLine" > 

    <requestFocus /> 
</EditText> 

<ImageButton 
    android:id="@+id/ButtonTestPlayPause1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/play" /> 

<SeekBar 
    android:id="@+id/SeekBarTestPlay" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

mp3文件沒有錯誤的如不包括GPU enter image description here

+0

你是從SD卡還是從網絡鏈接玩? –

+0

將你的mp3文件路徑放在日誌中,你得到了什麼路徑?你的mp3文件的路徑是否正確? –

+0

@DhwanikGandhi from url鏈接http:///localhost/Android/music/jingle.mp3 –

回答

1
MediaPlayer mediaPlayer = new MediaPlayer(); 

mp.setDataSource(context, Uri.parse("http://www.domian.com/ola.mp3")); 
mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mp.prepare(); 

mp.setOnPreparedListener(new OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mp) { 

      mp.start(); 
     } 
    }); 
    mediaPlayer.setOnErrorListener(new OnErrorListener() { 
     @Override 
     public boolean onError(MediaPlayer mp, int what, int extra) { 
      // Display error 
      return false; 
     } 
    }); 
+0

我試過這段代碼亞爾我猜這不會玩,但我會嘗試一次@jms –

+0

這個工作很好,非常感謝你,但我應該如何實現播放按鈕可以告訴@jms –

1

試試這個:

  MediaPlayer mp=new MediaPlayer(); 

      try { 
       mp.setDataSource(url); 
      } catch (IllegalArgumentException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (SecurityException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IllegalStateException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      try { 
       mp.prepare(); 
      } catch (IllegalStateException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

       mp.start(); 
       mp.setLooping(true); 


      }