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。
代码
MeidaPlayerActivityActivitypackage 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
?