MediaPlayer具有非常强大的功能,对音视频的播放均提供了支持,为了保证播放期间系统的正常工作,需要设置"android.permission.WAKE_LOCK"权限。

在MediaPlayer中,根据数据源为元数据、音频文件、音频流的不同情况,有着相应的处理过程。基本的过程如下:

1)播放元数据

如果元数据位于Android工程的“res/raw”文件夹下。播放元数据的过程为:     MediaPlayer mp=MediaPlayer.create(context, R.raw.sound_file_1);     mp.start();

2)播放音频文件

如果音频文件的路径为PATH_TO_FILE,播放音频文件的过程为:     MediaPlayer mp=new MediaPlayer();     mp.setDataSource(PATH_TO_FILE); //设置数据源     mp.prepare();     mp.start();

3)播放音频流

如果音频文件的URL地址为URL_ADRESS,播放音频流的过程为:     MediaPlayer mp=new MediaPlayer();     mp.setDataSource(URL_ADRESS); //设置数据源     mp.prepare();     mp.start();

下面是Android中的一个实例,介绍了Android的MediaPlayer播放器音频文件的播放、暂停、回复、停止等操作的处理流程。需要注意的是,为了获得更好的用户体验,在暂停和恢复播放时,必须对静音模式和独放模式进行处理。

代码 静音模式和独放模式的处理

public class AudioManagerStub extends Activity                   {                      private final int MP3_TO_PLAY=R.raw.testmp3;                private MediaPlayer mMediaPlayer;                private AudioManager mAudioManager;                private static CTSResult mCTSResult;            …            @Override                protected void onCreate(Bundle savedInstanceState)                    {                            super.onCreate(savedInstanceState);                   //获取音频服务                   mAudioManager=(AudioManager) getSystemService(Context.AUDIO_SERVICE);                            mMediaPlayer=MediaPlayer.create (this, MP3_TO_PLAY); //设置音频源                   mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置流类型                   mMediaPlayer.setLooping(false); //设置是否循环播放                   mMediaPlayer.start(); //开始播放                }                     @Override                protected void onPause()                    {                          super.onPause();                          try                            {                             for (int i=0; i < AudioSystem.getNumStreamTypes(); i++)                                    {                                                 mAudioManager.setStreamMute(i, false); //取消其他音频应用的静音                                 mAudioManager.setStreamSolo(i, false);  //设置为非独放模式                            }                            }                          catch (Exception e)                            {                                mCTSResult.setResult(CTSResult.RESULT_FAIL);                                finish();                        }                   }                @Override                protected void onResume()                  {                    super.onResume();                    try                      {                        for (int i=0; i< AudioSystem.getNumStreamTypes(); i++)                          {                              mAudioManager.setStreamMute(i, true); //设置其他音频应用静音                          mAudioManager.setStreamSolo(i, true); //设置为独放模式                      }                          }                        catch (Exception e)                          {                            mCTSResult.setResult(CTSResult.RESULT_FAIL);                            finish();                            return;                          }                        Intent intent=new Intent();                        intent.setClass(this, AudioManagerStubHelper.class);                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                        startActivityForResult(intent, 1);                  }                @Override                protected void onActivityResult (int requestCode, int resultCode, Intent data)                   {                    super.onActivityResult(requestCode, resultCode, data);                    mMediaPlayer.stop(); //停止播放                mMediaPlayer.release(); //释放资源                mCTSResult.setResult(CTSResult.RESULT_OK);                    finish();                  }             }

解读Android MediaPlayer 详细使用方法的更多相关文章

  1. android WebView详细使用方法(转)

    1.最全面的Android Webview详解 2.最全面总结 Android WebView与 JS 的交互方式 3.你不知道的 Android WebView 使用漏洞 如果想保证登录状态,就插入 ...

  2. Android MediaPlayer 常用方法介绍

    Android MediaPlayer 常用方法介绍 方法:create(Context context, Uri uri) 解释:静态方法,通过Uri创建一个多媒体播放器. 方法:create(Co ...

  3. android MediaPlayer API大全已经方法详解(转载)

    通过这张图,我们可以知道一个MediaPlayer对象有以下的状态: 1)当一个MediaPlayer对象被刚刚用new操作符创建或是调用了reset()方法后,它就处于Idle状态.当调用了rele ...

  4. android MediaPlayer的一些使用方法简历

    这里提供一些MediaPlayer的简单方法,方便以后熟练的使用它! 1)如何获得MediaPlayer实例: 可以使用直接new的方式: MediaPlayer mp = new MediaPlay ...

  5. 【Android 多媒体开发】 MediaPlayer 状态机 接口 方法 解析

    作者 : 韩曙亮 转载请著名出处 :  http://blog.csdn.net/shulianghan/article/details/38487967 一. MediaPlayer 状态机 介绍 ...

  6. Android MediaPlayer接口及状态迁移

    [时间:2016-09] [状态:Open] [关键词:android,mediaplayer,播放接口,播放状态图] 引言 本文内容相对简单,作为后续处理的起点,简要整理了Android Media ...

  7. Android MediaPlayer的生命周期

    MediaPlayer的状态转换图也表征了它的生命周期,如下: 这张状态转换图清晰的描述了MediaPlayer的各个状态,也列举了主要的方法的调用时序,每种方法只能在一些特定的状态下使用,如果使用时 ...

  8. PhoneGap 在 Android 上的插件开发方法介绍

    移动应用开发已经成为软件开发的一个重要方向,但是移动开发面临的一个重要问题就是跨平台的问题.PhoneGap 作为一个多平台的软件开发框架,提供了一次编写多个平台的运行.目前已经支持多达 6 个移动平 ...

  9. (转)Android之常用功能方法大集合

    这些,都是Andorid中比较常用的方法和功能,在网上搜集整理一下记录之,以备不时之需.由于经过多次转载,源文作者不确凿,在此申明,敬请见谅.不得不赞,非常实用. 1.判断sd卡是否存在 boolea ...

随机推荐

  1. IT++数学、信号、通讯类库,Blitz++数学,Armadillo 线性代数,Dlib网络,线程,图形,数学,图像,数据挖掘/机器学习,XML等等

    https://en.wikipedia.org/wiki/Blitz%2B%2B https://en.wikipedia.org/wiki/IT%2B%2B https://en.wikipedi ...

  2. C#抓取远程Web网页信息的代码

    来自:http://www.jb51.net/article/9499.htm 通过程序自动的读取其它网站网页显示的信息,类似于爬虫程序.比方说我们有一个系统,要提取BaiDu网站上歌曲搜索排名.分析 ...

  3. SYN1618型 高精度天文时间同步系统

       SYN1618型 高精度天文时间同步系统 产品概述 SYN1618型 高精度天文时间同步系统是由西安同步电子科技有限公司精心设计.自行研发生产的一款高精度的时频频率标准设备,接收GPS.GLON ...

  4. 中转Webshell 绕过安全狗(一)

    前言 听说中国菜刀里有后门.抓包我是没有监测到异常数据包.为了以防万一,且更好使用中国菜刀硬杠安全狗.笔者收集了一下资料.无耻的copy大佬的源码,只是在大佬的基础上简单修改了一下,达到Webshel ...

  5. JavaWeb入门_模仿天猫整站Tmall_JavaEE实践项目

    Tmall_JavaEE 技术栈 Servlet + Jsp + Tomcat , 是Java Web入门非常好的练手项目 效果展示: 模仿天猫前台 模仿天猫后台 项目简介 关联项目 github - ...

  6. php对象在内存中创建于释放

    <?php /** * 1.对象的创建占用内存, * 对象内存释放,析构方法就是在对象释放前运行最后的一步.可以自动释放和手动释放 * 手动释放:通过unset($p);来释放对象,在这个时候会 ...

  7. HashMap原理(二) 扩容机制及存取原理

    我们在上一个章节<HashMap原理(一) 概念和底层架构>中讲解了HashMap的存储数据结构以及常用的概念及变量,包括capacity容量,threshold变量和loadFactor ...

  8. 谈谈NOSQL

    从MongoDB引到NOSQL 要讲MongoDB之前,首先要提到一个概念NOSQL(NoSQL = Not Only SQL ) 很大一部分数据是由关系型数据库管理系统(RDMBSs)来处理的,关系 ...

  9. Linux 运行jar包命令(Cent OS 7后台运行jar包)

    Linux 运行jar包命令如下: 方式一 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 java -jar shareniu. ...

  10. Python之Pandas库学习(三):数据处理

    1. 合并 可以将其理解为SQL中的JOIN操作,使用一个或多个键把多行数据结合在一起. 1.1. 简单合并 参数on表示合并依据的列,参数how表示用什么方式操作(默认是内连接). >> ...