您的位置:首页 > 其它

MediaPlayer使用之一 音频播放

2012-03-26 11:23 260 查看
1,xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />

<Button
android:id="@+id/btnStart"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Start Playing Audio" />

<Button
android:id="@+id/btnPause"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Pause Player" />

<Button
android:id="@+id/btnRestart"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Restart Player" />

<Button
android:id="@+id/btnStop"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Stop Player" />

</LinearLayout>


2,代码

package com.mike.activity;

import java.io.File;
import java.io.IOException;

import android.app.Activity;
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MediaPlayerDemoActivity extends Activity implements
OnClickListener {
private Button btnStart;
private Button btnPause;
private Button btnRestart;
private Button btnStop;

public static final String AUDIO_PATH = "http://www.baidu.mp3/song1.mp3";// 网络音乐
// Environment.getExternalStorageDirectory() + "/Music/song1.mp3" ; //sdcard
// 音乐文件
// Environment.getExternalStorageDirectory() + "/Movies/vedio.mp4";
private MediaPlayer mMediaPlayer;
private int currentPosition;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

btnStart = (Button) findViewById(R.id.btnStart);
btnPause = (Button) findViewById(R.id.btnPause);
btnRestart = (Button) findViewById(R.id.btnRestart);
btnStop = (Button) findViewById(R.id.btnStop);

btnStart.setOnClickListener(this);
btnPause.setOnClickListener(this);
btnRestart.setOnClickListener(this);
btnStop.setOnClickListener(this);

}

public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btnStart:
playAudio(AUDIO_PATH);//
break;
case R.id.btnPause:
if (mMediaPlayer != null && mMediaPlayer.isPlaying()) {
currentPosition = mMediaPlayer.getCurrentPosition();
mMediaPlayer.pause();
}
break;
case R.id.btnRestart:
if (mMediaPlayer != null && !mMediaPlayer.isPlaying()) {
mMediaPlayer.seekTo(currentPosition);
mMediaPlayer.start();
}
break;
case R.id.btnStop:
if (mMediaPlayer != null) {
mMediaPlayer.stop();
currentPosition = 0;
}
break;
}

}

private void playAudio(String url) {// 播放url音乐文件

try {
killMediaPlayer();// 播放前,先kill原来的mediaPlayer
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(url);
mMediaPlayer.prepare();
mMediaPlayer.start();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

private void killMediaPlayer() {
// TODO Auto-generated method stub
if (null != mMediaPlayer) {
mMediaPlayer.release();
}
}

private void playLocalAudio() {// 播放本地音乐文件
mMediaPlayer = MediaPlayer.create(this, R.raw.song1);
mMediaPlayer.start();// 在此情况下,不需要调用prepare()方法
}

private void playLocalAudio_UsingDescriptor() {//先打开文件,再将文件给mediaPlayer
try {
AssetFileDescriptor fileDesc = getResources().openRawResourceFd(
R.raw.song1);

if (null != fileDesc) {
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(fileDesc.getFileDescriptor(),
fileDesc.getStartOffset(), fileDesc.getLength());

fileDesc.close();
mMediaPlayer.prepare();
mMediaPlayer.start();
}
} catch (IllegalArgumentException 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();
}

}

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
killMediaPlayer();//destroy中释放资源
}

}


本文出自 “小新专栏” 博客,请务必保留此出处http://mikewang.blog.51cto.com/3826268/817153
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: