Android菜鸟日记
22音乐- MediaPlayer
关于音乐:
指的是mp3,mid,wav等音频文件。
MediaPlayer
介绍:android系统中用于控制音频和视频的类。
MediaPlayer状态图如下:
当创建MediaPlayer对象时:
进入空闲态[ldle]
调用setDataSource(音频文件路径);路径为”/sdcard/xxx”
进入initialized[初始化状态]
调用prepare()
进入prepared状态 【重点:如若要start()则必须要进入prepared状态】
其他看上表吧。
特别注意:
MID文件和其他文件有不同。
MID文件如果stop后不能直接prepare()回到prepared状态。[会报io异常]。
所以:
MID文件stop后,调用reset(),回到空闲态[ldle];
然后再重新setDataSource;再prepare,进入prepared态。
之后再调用star。
代码
MeidaPlayerActivityActivity
package com.lurencun.test;
import java.io.IOException;
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MeidaPlayerActivityActivity extends Activity {
private Button bt1 = null;
private Button bt2 = null;
private Button bt3 = null;
private Button bt4 = null;
private Button bt5 = null;
private Boolean playing = false;
private MediaPlayer mp = new MediaPlayer();
private AudioManager am = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bt1 = (Button) this.findViewById(R.id.bt1);
bt2 = (Button) this.findViewById(R.id.bt2);
bt3 = (Button) this.findViewById(R.id.bt3);
bt4 = (Button) this.findViewById(R.id.bt4);
bt5 = (Button) this.findViewById(R.id.bt5);
try {
am = (AudioManager) this.getSystemService(this.AUDIO_SERVICE);
mp.setDataSource("/sdcard/1.mp3");
mp.prepare();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void funClick(View v) {
int temp = v.getId();
switch (temp) {
case R.id.bt1:
Log.v("myTag", "" + mp.isPlaying());
if (mp.isPlaying()) {
Toast.makeText(this, "正在播放", Toast.LENGTH_SHORT).show();
} else {
mp.start();
playing = true;
Toast.makeText(this, "开始播放", Toast.LENGTH_SHORT).show();
}
break;
case R.id.bt2:
if (mp.isPlaying()) {
mp.pause();
this.funTosat("暂停播放");
playing = false;
} else {
this.funTosat("暂停中");
}
break;
case R.id.bt3:
mp.stop();
try {
mp.prepare();
mp.seekTo(0);
Log.v("myTag", "111111111111111111111");
} catch (Exception e) {
// TODO Auto-generated catch block
Log.v("myTag", e.toString());
e.printStackTrace();
}
this.funTosat("已停止");
playing = false;
break;
case R.id.bt4:
am.adjustVolume(AudioManager.ADJUST_RAISE, 0);
// 校准音量
// 参数一是调节方式[加减] 参数二是 调节幅度[0,1,……]
break;
case R.id.bt5:
am.adjustVolume(AudioManager.ADJUST_LOWER, 0);
break;
}
}
public void funTosat(String Text) {
Toast.makeText(this, Text, Toast.LENGTH_SHORT).show();
}
}
2011-10-12
poolo