android播放网络音乐
来源:互联网 发布:怎样开淘宝店卖视频 编辑:程序博客网 时间:2024/06/09 18:53
package little.music;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;import android.app.Activity;import android.media.AudioManager;import android.media.MediaPlayer;import android.net.Uri;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;public class MusicActivity extends Activity {private Button m_playBtn, m_pauseBtn, m_restBtn, m_stopBtn;private MediaPlayer m_player;private boolean m_bIsReleased = false;private boolean m_bIsPaused = false;private boolean m_bIsStreaming = true; private String m_strFileURL = "http://www.cnjxol.com/ebook/01/DCB99531-B3FD-4E83-B8DB-22752A52CD9A.mp3";private String m_strTempFilePath = ""; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); m_playBtn = (Button) findViewById(R.id.playBtn); m_pauseBtn = (Button) findViewById(R.id.pauseBtn); m_restBtn = (Button) findViewById(R.id.resetBtn); m_stopBtn = (Button) findViewById(R.id.stopBtn); m_playBtn.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { Play(m_strFileURL); LogI("MediaPlayer start playing"); } }); m_pauseBtn.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { if (m_player != null) { if (!m_bIsReleased) { if (!m_bIsPaused) { m_player.pause(); m_bIsPaused = true; } else { m_player.start(); m_bIsPaused = false; } } } } }); m_restBtn.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { if (m_player != null) { if (!m_bIsReleased) { m_player.seekTo(0); LogI("MediaPlayer reset"); } } } }); m_stopBtn.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { if (m_player != null) { if (!m_bIsReleased) { m_player.seekTo(0); m_player.pause(); LogI("MediaPlayer stop"); } } } }); } private void Play(final String strURL) { if (m_player != null) { m_player.start(); return; } m_player = new MediaPlayer(); m_player.setAudioStreamType(AudioManager.STREAM_MUSIC); // 监听错误事件 m_player.setOnErrorListener(new MediaPlayer.OnErrorListener() { public boolean onError(MediaPlayer mp, int what, int extra) { LogI("Error on Listener, what: " + what + "extra: " + extra); return false; } }); // 监听缓冲事件 m_player.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() { public void onBufferingUpdate(MediaPlayer mp, int percent) { LogI("MediaPlayer Update buffer: " + Integer.toString(percent) + "%"); } }); // 监听播放完毕事件 m_player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { public void onCompletion(MediaPlayer mp) { LogI("MediaPlayer Listener Completed"); } }); // 监听准备事件 m_player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { public void onPrepared(MediaPlayer mp) { LogI("MediaPlayer Prepared Listener"); } }); Runnable r = new Runnable() { public void run() { try { if (m_bIsStreaming) { m_player.setDataSource(MusicActivity.this, Uri.parse(m_strFileURL)); } else { SetDataSource(strURL); } m_player.prepare(); LogI("Duration: " + m_player.getDuration()); m_player.start(); m_bIsReleased = false; } catch (Exception e) { LogE(e.getMessage(), e); } } }; new Thread(r).start(); } private void SetDataSource(String strURL) throws Exception { if (!m_bIsReleased) { URL url = new URL(strURL); URLConnection conn = url.openConnection(); InputStream in = conn.getInputStream(); if (in == null) throw new RuntimeException("stream is null"); File file = File.createTempFile("player_mp3_cache", ".mp3", MusicActivity.this.getCacheDir()); if (!file.exists()) file.createNewFile(); m_strTempFilePath = file.getAbsolutePath(); FileOutputStream fos = new FileOutputStream(file); byte buffer[] = new byte[128]; do { int nNumRead = in.read(buffer); if (nNumRead <= 0) break; fos.write(buffer); } while (true); m_player.setDataSource(m_strTempFilePath); in.close(); fos.close(); } } private void DeleteFile(String strPath) { File file = new File(strPath); if (file.exists()) file.delete(); } private void LogI(String str) { Log.i("Play_Web_Mp3", str); } private void LogE(String str, Throwable tr) { Log.e("Play_Web_Mp3", str, tr); } protected void onPause() { // 删除临时文件 DeleteFile(m_strTempFilePath); super.onPause(); }}