本示例“MediaPlayerAudio.java”主要功能是播放音乐文件,因读取音乐文件的来源不同,现设置一个文本框来显示其来源,如表1所示。
表1 MediaPlayerAudio.java文本框显示
文件来源 |
文本框显示 |
从源文件中播放 |
LOCAL_AUDIO-播放音乐中 |
从文件系统中播放 |
RESOURCES_AUDIO-播放音乐中 |
从网络中播放 |
STREAM_AUDIO-播放音乐中 |
MediaPlayerAudio.java代码如代码清单1所示。
代码清单1 MediaPlayerAudio.java
package cn.com.farsight.media;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
public class MediaPlayerAudio extends Activity {
private static final String TAG = "MediaPlayerDemo";
private MediaPlayer mMediaPlayer;
private static final String MEDIA = "media";
private static final int LOCAL_AUDIO = 1;
private static final int STREAM_AUDIO = 2;
private static final int RESOURCES_AUDIO = 3;
private static final int LOCAL_VIDEO = 4;
private static final int STREAM_VIDEO = 5;
private static final int RESOURCES_VIDEO = 6;
private String path;
private TextView mTextView;
//MediaPlayerAudio
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mediaplayer02);
mTextView = (TextView) findViewById(R.id.TextView01);
Bundle extras = getIntent().getExtras();
playAudio(extras.getInt(MEDIA));
}
//播放音乐
private void playAudio(Integer media) {
try {
switch (media) {
case LOCAL_AUDIO:
//设定音频文件路径
path = "/sdcard/song01.mp3";//测试用的音频文件
//path = "";
if (path == "") {
//警告User尚未建立音频文件
Toast.makeText(MediaPlayerAudio.this,"尚未建立音频文件",Toast.LENGTH_LONG).show();
}
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(path);
mMediaPlayer.prepare();
mMediaPlayer.start();
mTextView.setText("LOCAL_AUDIO-播放音乐中...");
break;
case STREAM_AUDIO:
//设定音频文件路径的URL
path = " //116.28.63.250/7705.mp3";
//path = "";
if (path == "") {
//警告User尚未建立音频文件的URL.
Toast.makeText(MediaPlayerAudio.this,"Please edit MediaPlayerDemo_Video Activity and set the path variable to your media file URL.",Toast.LENGTH_LONG).show();
}
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(path);
mMediaPlayer.prepare();
mMediaPlayer.start();
mTextView.setText("STREAM_AUDIO-播放音乐中...");
break;
case RESOURCES_AUDIO:
//本地音频文件要放在/res/raw目录内且提供resid给MediaPlayer.create()
mMediaPlayer = MediaPlayer.create(this, R.raw.song21);
mMediaPlayer.start();
mTextView.setText("RESOURCES_AUDIO-播放音乐中…");
break;
}
} catch (Exception e) {
Log.e(TAG, "error: " + e.getMessage(), e);
}
}
//关闭MediaPlayerAudio程序且释放MediaPlayer
@Override
protected void onDestroy() {
super.onDestroy();
if (mMediaPlayer != null) {
mMediaPlayer.release();
mMediaPlayer = null;
}
}
}