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();
}
}
android播放网络音乐
最新推荐文章于 2022-04-13 01:49:06 发布