Android之多媒体使用——MediaPlayer播放音频

来源:互联网 发布:交易软件登录不了 编辑:程序博客网 时间:2024/05/18 01:03
MediaPlayer类
1.jpg
静态构造方法
2.jpg
常用方法
未命名.jpg
绑定事件监听器
未命名.jpg
播放音频
1、播放应用的资源文件(res/raw/)

通过我们上面介绍的几个静态构造函数创建MediaPlayer对象
    MediaPlayer  mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,                  R.raw.a1);


2、播放应用的原始资源文件(assets)1)        通过Context.getAssets()方法获得AssetManager对象
2)        通过AssetManager对象的openFd(String name)方法打开指定的原生资源文件夹,返回一个AssetFileDescriptor对象
3)        通过AssetFileDescriptor的getFileDescriptor()得到一个FileDescriptor对象
4)        通过public void setDataSource (FileDescriptor fd, long offset, long length)来创建MediaPlayer对象
5)        调用MediaPlayer.prepare()方法准备音频
6)        调用MediaPlayer的start()、pause()、stop()等方法控制
    AssetFileDescriptor fileDescriptor = assetManager                     .openFd("a2.mp3");                mediaPlayer = new MediaPlayer();               mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),                     fileDescriptor.getStartOffset(),                     fileDescriptor.getLength());                    mediaPlayer.prepare();<p>                         mediaPlayer.start();</p>


3、播放外部存储上的音频资源文件(sdcard)
1)        创建MediaPlayer对象,通过MediaPlayer对象的setDataSource(String path)方法装载预定的音频文件
2)        调用MediaPlayer对象的prepare()方法准备音频
3)        调用MediaPlayer的start()、pause()、stop()等方法控制
  1. mediaPlayer = new MediaPlayer();           mediaPlayer.setDataSource("/mnt/sdcard/a3.mp3");           mediaPlayer.prepare();           mediaPlayer.start();



4、播放网络上的音频文件
1)        根据网络上的地址创建Uri对象
2)        通过public void setDataSource (Context context, Uri uri)设置音频来源装载音频文件
3)        调用MediaPlayer对象的prepare()方法准备音频
4)        调用MediaPlayer的start()、pause()、stop()等方法控制
    mediaPlayer = new MediaPlayer();               // 通过Uri解析一个网络地址               Uri uri = Uri                     .parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694");               mediaPlayer.setDataSource(MediaPlayerDemoActivity.this, uri);               mediaPlayer.prepare();    mediaPlayer.start();
当然也可以通过我们的另一种静态构造方法直接创建一个MediaPlayer对象
  1.   
    Uri uri = Uri                 .parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694");   mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,                 uri);           mediaPlayer.start();



实现效果:
未命名.jpg
贴上源代码:
    package com.jiahui.media;    import java.io.IOException;    public class MediaPlayerDemoActivity extends Activity implements                    OnClickListener {            private Button btnAppStart, btnAssetsStart, btnSdcardStart,                            btnNetworkStart;            public void onCreate(Bundle savedInstanceState) {                    super.onCreate(savedInstanceState);                    setContentView(R.layout.main);                    btnAppStart = (Button) this.findViewById(R.id.btnAppStart);                    btnAssetsStart = (Button) this.findViewById(R.id.btnAssetsStart);                    btnSdcardStart = (Button) this.findViewById(R.id.btnSdcardStart);                    btnNetworkStart = (Button) this.findViewById(R.id.btnNetworkStart);                    btnAppStart.setOnClickListener(this);                    btnAssetsStart.setOnClickListener(this);                    btnSdcardStart.setOnClickListener(this);                    btnNetworkStart.setOnClickListener(this);            }            @Override            public void onClick(View v) {                    MediaPlayer mediaPlayer = null;                    switch (v.getId()) {                    case R.id.btnAppStart:                            System.out.println("---播放应用的资源文件----");                            // 使用raw下的资源文件创建MediaPlayer对象                            mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,                                            R.raw.a1);                            mediaPlayer.start();                            break;                    case R.id.btnAssetsStart:                            System.out.println("---播放assest的资源文件----");                            AssetManager assetManager = this.getAssets();                            try {                                    AssetFileDescriptor fileDescriptor = assetManager                                                    .openFd("a2.mp3");                                    mediaPlayer = new MediaPlayer();                                    mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),                                                    fileDescriptor.getStartOffset(),                                                    fileDescriptor.getLength());                                    mediaPlayer.prepare();                                    mediaPlayer.start();                            } catch (IOException e) {                                    // TODO Auto-generated catch block                                    e.printStackTrace();                            }                            break;                    case R.id.btnSdcardStart:                            System.out.println("---播放SDcard上的文件---");                            try {                                    mediaPlayer = new MediaPlayer();                                    mediaPlayer.setDataSource("/mnt/sdcard/a3.mp3");                                    mediaPlayer.prepare();                                    mediaPlayer.start();                            } catch (Exception e) {                            }                            break;                    case R.id.btnNetworkStart:                            System.out.println("播放网络上的音频");                            // http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?                            // xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694                            try {                                    // mediaPlayer = new MediaPlayer();                                    // 通过Uri解析一个网络地址                                    Uri uri = Uri                                                    .parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694");                                    mediaPlayer.setDataSource(MediaPlayerDemoActivity.this, uri);                                    // mediaPlayer.prepare();                                    // 也可以直接通过这种方式装载网络上的音频文件                                    mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,                                                    uri);                                    mediaPlayer.start();                            } catch (Exception e) {                                    // TODO: handle exception                            }                            break;                    default:                            break;                    }            }    }


源代码下载:http://download.csdn.net/detail/jiahui524/3847987
http://blog.csdn.net/jiahui524
原创粉丝点击