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 blocke.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 blockLog.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

更多相关文章

  1. Android初体验-D2
  2. Android(安卓)调用 startActivityForResult(intent,requestCode)
  3. 解读Android之Service(3)AIDL
  4. Android中由文件名获取文件Id的两种方法
  5. android中对目录下的文件按时间排序
  6. android 沉浸式(透明)状态栏实现
  7. Android7.0适配心得
  8. Android开发基础01——Android(安卓)SDK
  9. 另外两种android沉浸式状态栏实现思路

随机推荐

  1. 总结函数的返回值,参数 2. 实例演绎你对
  2. 教你 Shiro 整合 SpringBoot,避开各种坑
  3. 小米深度学习平台架构与实现
  4. PHP:字符串系统函数,ASCII字符集转换,url
  5. 通过QQ浏览器内核看browser性能优化
  6. 创业公司中的Java高效应用
  7. Java 生态圈与微服务
  8. 面向前端开发者的V8性能优化
  9. 教你 Shiro + SpringBoot 整合 JWT
  10. 手淘互动动效的探索