当前位置: 代码迷 >> Android >> Android初学者日记 22音乐- MediaPlayer
  详细解决方案

Android初学者日记 22音乐- MediaPlayer

热度:197   发布时间:2016-05-01 19:07:08.0
Android菜鸟日记 22音乐- MediaPlayer

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

?

  相关解决方案