zoukankan      html  css  js  c++  java
  • 对象方法Android之多媒体使用——MediaPlayer播放音频

    每日一贴,今天的内容关键字为对象方法

        MediaPlayer类
    对象和方法
    静态构造方法
    对象和方法
    常用方法
    对象和方法
    绑定事件监听器
    对象和方法
    播放音频
    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();
      



    实现效果:
    对象和方法
    贴上源代码:

        每日一道理
    听,是谁的琴声,如此凄凉,低调的音,缓慢的节奏,仿佛正诉说着什么。音低调得略微有些抖动,听起来似乎心也有些抖动,我感觉到一种压抑的沉闷气息,是否已凝结在这空气中……
        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

    文章结束给大家分享下程序员的一些笑话语录: 程序员打油诗   
      写字楼里写字间,写字间里程序员;
      程序人员写程序,又拿程序换酒钱。
      酒醒只在网上坐,酒醉还来网下眠;
      酒醉酒醒日复日,网上网下年复年。
      但愿老死电脑间,不愿鞠躬老板前;
      奔驰宝马贵者趣,公交自行程序员。
      别人笑我忒疯癫,我笑自己命太贱;
      不见满街漂亮妹,哪个归得程序员。

  • 相关阅读:
    redis发布订阅
    redis学习笔记(面试题)
    redis安全 (error) NOAUTH Authentication required
    HDU3001 Travelling —— 状压DP(三进制)
    POJ3616 Milking Time —— DP
    POJ3186 Treats for the Cows —— DP
    HDU1074 Doing Homework —— 状压DP
    POJ1661 Help Jimmy —— DP
    HDU1260 Tickets —— DP
    HDU1176 免费馅饼 —— DP
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3078425.html
Copyright © 2011-2022 走看看