2017-07-16 27 views
0

我有一個數組列表,其中包含所有設備的鈴聲。我也有另一個數組列表,有相應的鈴聲標題。我已經在微調中顯示了標題。如何在用戶從微調器中選擇特定選項時播放鈴聲?如何使用它的URI播放設備的鈴聲

回答

1

試試這個代碼:從一個URL

播放MP3文件,而無需下載文件reference

public class Test extends Activity 
{ 
    static final String AUDIO_PATH = 
     "http://yourHost/play.mp3"; 
    private MediaPlayer mediaPlayer; 
    private int playbackPosition=0; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    public void doClick(View view) { 
     switch(view.getId()) { 
     case R.id.startPlayerBtn: 
      try { 
       playAudio(AUDIO_PATH); 
       playLocalAudio(); 
       playLocalAudio_UsingDescriptor(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      break; 
     case R.id.pausePlayerBtn: 
      if(mediaPlayer != null && mediaPlayer.isPlaying()) { 
       playbackPosition = mediaPlayer.getCurrentPosition(); 
       mediaPlayer.pause(); 
      } 
      break; 
     case R.id.restartPlayerBtn: 
      if(mediaPlayer != null && !mediaPlayer.isPlaying()) { 
       mediaPlayer.seekTo(playbackPosition); 
       mediaPlayer.start(); 
      } 
      break; 
     case R.id.stopPlayerBtn: 
      if(mediaPlayer != null) { 
       mediaPlayer.stop(); 
       playbackPosition = 0; 
      } 
      break; 
     } 
    } 

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

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

    private void playLocalAudio() throws Exception 
    { 
     mediaPlayer = MediaPlayer.create(this, R.raw.music_file); 
     mediaPlayer.start(); 
    } 

    private void playLocalAudio_UsingDescriptor() throws Exception { 

     AssetFileDescriptor fileDesc = getResources().openRawResourceFd(
      R.raw.music_file); 
     if (fileDesc != null) { 

      mediaPlayer = new MediaPlayer(); 
      mediaPlayer.setDataSource(fileDesc.getFileDescriptor(), fileDesc 
        .getStartOffset(), fileDesc.getLength()); 

      fileDesc.close(); 

      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(); 
      } 
     } 
    } 
}