MediaPlayer

简介: MediaPlayer

1.MediaPlayer

使用MediaPlayer

媒体框架最重要的组件之一是MediaPlayer类。这个类的对象可以使用最少的设置获取、解码和播放音频和视频。它支持几种不同的媒体来源,如:

  • 本地资源
  • 内部uri,例如您可能从contentProvider获得的uri
  • 外部url(流) 有关Android支持的媒体格式列表,请参阅支持的媒体格式页面。

下面是如何播放本地音频资源(保存在您的应用程序的res/raw/目录中):

MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);

mediaPlayer.start(); // no need to call prepare(); create() does that for you

在本例中,“raw”资源是系统不尝试以任何特定方式解析的文件。然而,这个资源的内容不应该是原始音频。它应该是一个以支持的格式之一适当编码和格式化的媒体文件。

下面是您如何从系统中本地可用的URI(例如,您通过内容解析器获得的URI)进行播放:

Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();

通过HTTP流媒体从远程URL播放如下:

String url = "http://........"; // your URL here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(url);
mediaPlayer.prepare(); // might take long! (for buffering, etc)
mediaPlayer.start();


注意:如果要通过一个URL来传输流媒体在线文件,该文件必须能够逐步下载。注意:在使用setDataSource()时,您必须捕获或传递IllegalArgumentException和IOException,因为您引用的文件可能不存在。

代码位于:/frameworks/base/media/java/android/media/MediaPlayer.java

静态代码块如下:最先执行

static {
        System.loadLibrary("media_jni");
        native_init();
    }

初始化

MediaPlayer(Java)对象有自己的本地方法, 其位于frameworks/base/media/jni/android_media_MediaPlayer.cpp中, 这些方法均以android_media_MediaPlayer_开头, 因此"native_init"对应android_media_MediaPlayer_native_init().

MediaPlayer在构造时会做两件事情:

在加载libmedia_jni.so并执行native_init(), 这个步骤只获取MediaPlayer类相关的一些信息, 并不会初始化 C++ 对象

其native方法native_setup()接下来被调用, 这个步骤负责实例化一个MediaPlayer(C++)类, 并生成一个集成自MediaPlayerListener的JNIMediaPlayerListener用于监听来自播放器的消息. 新创建的MediaPlayer(C++)对象将被保存在MediaPlayer(Java)的mNativeContext中用于后续的下行调用.

MediaPlayer的初始化比较简单, 只有设置数据源之后才能开始 解封装 / 解码 / 渲染 等的工作.


目录
相关文章
|
4月前
|
Android开发
Android 利用MediaPlayer实现音乐播放
本文提供了一个简单的Android MediaPlayer音乐播放示例,包括创建PlayerActivity、配置AndroidManifest.xml和activity_player.xml布局,以及实现播放和暂停功能的代码。
33 0
Android 利用MediaPlayer实现音乐播放
|
6月前
|
API Android开发 UED
56. 【Android教程】媒体播放器:MediaPlayer
56. 【Android教程】媒体播放器:MediaPlayer
138 0
|
7月前
|
安全 Java Android开发
MediaPlayer
MediaPlayer
56 0
使用SoundPool播放音频文件,使用简单
使用SoundPool播放音频文件,使用简单
118 0
|
Android开发
Android 使用MediaPlayer和SurfaceView播放视频
Android 使用MediaPlayer和SurfaceView播放视频
205 0
|
编解码 Shell API
MediaPlayer音频与视频的播放介绍
Android多媒体中的——MediaPlayer,我们可以通过这个API来播放音频和视频该类是Androd多媒体框架中的一个重要组件,通过该类,我们可以以最小的步骤来获取,解码和播放音视频。 它支持三种不同的媒体来源: 本地资源 内部的URI,比如你可以通过ContentResolver来获取 外部URL(流)对于Android所支持的的媒体格式列表 1.相关方法详解 1)获得MediaPlayer实例: 可以直接new或者调用create方法创建: MediaPlayer mp = new MediaPlayer(); MediaPlayer mp = MediaPlaye
163 0
|
XML Android开发 数据格式
Android MediaPlayer音频播放器详解
Android MediaPlayer音频播放器详解
591 0
Android MediaPlayer音频播放器详解
|
Android开发
Android TextureView & MediaPlayer implements video media player
Android TextureView & MediaPlayer implements video media player code: import android.
1173 0
|
Android开发 数据格式 XML
使用VideoView做个实用的视频播放器
目录 最终效果图 前言 布局文件 VideoView的使用 横竖屏切换 文件选择 手势调节音量 最后 最终效果图 最终效果图 前言 这里用VideoView写一个播放器, 可以横竖屏, 可以选文件, 可以暂停, 可以快进后退, 可以进度条拖动, 可以触屏调节音量.
1342 0