解读Android MediaPlayer 详细使用方法

 
 

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();                  }             }

时间: 2024-11-03 05:33:12

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

深入Android MediaPlayer的使用方法详解

1)如何获得MediaPlayer实例: 可以使用直接new的方式: MediaPlayer mp = new MediaPlayer(); 也可以使用create的方式,如: MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了 2) 如何设置要播放的文件: MediaPlayer要播放的文件主要包括3个来源: a. 用户在应用中事先自带的resource资源 例如:MediaPlayer.c

转载:android Handler详细使用方法实例

本文主要介绍Android中Handler的简单使用方法,Handler跟多线程,消息队列联系很紧密,在平常的实际程序开发中比较常见.本文分为4个简单的例子来学校handler 开发环境为android4.1. Handler使用例1这个例子是最简单的介绍handler使用的,是将handler绑定到它所建立的线程中.本次实验完成的功能是:单击Start按钮,程序会开始启动线程,并且线程程序完成后延时1s会继续启动该线程,每次线程的run函数中完成对界面输出nUpdateThread...文字,

android Handler详细使用方法

Handler使用例1 这个例子是最简单的介绍handler使用的,是将handler绑定到它所建立的线程中. <span style="font-size:14px;">package com.example.handler1; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.Menu; import android.

android WebView详细使用方法(转)

1.最全面的Android Webview详解 2.最全面总结 Android WebView与 JS 的交互方式 3.你不知道的 Android WebView 使用漏洞

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

作者 : 韩曙亮 转载请著名出处 :  http://blog.csdn.net/shulianghan/article/details/38487967 一. MediaPlayer 状态机 介绍 Android MediaPlayer 状态即图例 : 1. Idle (闲置) 状态 和 End (结束) 状态 MediaPlayer 对象声明周期 : 从 Idle 到 End 状态就是 MediaPlayer 整个生命周期; -- 生命周期開始 : 进入 Idle (闲置) 状态; -- 生

android MediaPlayer的一些使用方法简历

这里提供一些MediaPlayer的简单方法,方便以后熟练的使用它! 1)如何获得MediaPlayer实例: 可以使用直接new的方式: MediaPlayer mp = new MediaPlayer(); 也可以使用create的方式,如: MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了 2) 如何设置要播放的文件: MediaPlayer要播放的文件主要包括3个来源: a. 用户在

Android -- MediaPlayer内部实现简析

Android -- MediaPlayer内部实现简析 在之前的博客中,已经介绍了使用MediaPlayer时要注意的内容.现在,这里就通过一个MediaPlayer代码实例,来进一步分析MediaPlayer内部是如何运作.实现的:当然这里的分析只截止到底层调用播放器之前,因为播放器这块实在是没搞懂. 我们使用的例子来源于之前MediaPlayer Playback译文中的官方实例: String url = "http://........"; // your URL here

解读Android之Fragment

本文翻译自android官方文档,结合自己测试,整理如下. 概述 Fragment在activity中表示一个行为或者UI的一部分.我们可以在一个activity中使用多个fragments或者在多个activities复用一个fragment.我们可以把fragment作为activity模块化的一部分,fragment有自己的生命周期,UI布局.我们可以在activity运行时动态添加或删除fragment. fragment必须要嵌入到activity中,fragment的生命周期受到宿主

解读Android之任务和Back栈

本文翻译自android官方文档,结合自己测试,整理如下. 概述 一个应用程序通常包括多个activities,每个activity需要指定特定的功能,有时候需要启动其它activity.如一个邮件应用中可能有一个用于显示内容列表的activity,当用户选择某个邮件内容时,则会打开一个新的activity,该activity用于显示邮件具体内容. 一个Activity甚至可以去启动设备上其它应用程序的Activity.例如,如果我们的程序想要发送一封邮件,我们可以通过定义一个带有send动作以