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

原创粉丝点击