Android(OPhone) 学习笔记 - 媒体播放器

来源:互联网 发布:时间管理 软件 韩国 编辑:程序博客网 时间:2024/06/05 15:07

本文主要介绍在Ophone平台下的媒体应用,通过讲解android.media.MediaPlayer库中的部分方法,来实现一个媒体播放器。在实现过程中,顺便介绍一些UI方面的知识。

一、界面设计

媒体播放器必须有play、stop、pause三个按钮,在这个例子中,我们使用图标按钮imagebutton来制作。首先要找若干个图标,我们可以到搜索引擎上的图片搜索上输入“play stop pause”,即可得到一堆制作漂亮的播放器图标,将其放入res/drawable文件夹。以播放按钮为例,main.xml中编写如下:

<ImageButton android:id="@+id/play"
android:src="@drawable/play"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:paddingRight="4px"
android:enabled="false"
/>

效果如图:


我们再学习做一个菜单中的图标。首先准备一个退出图标,命名为eject,也放在drawable目录下,在代码中编写:


实现效果如图:


二、媒体播放原理介绍

本例中需要额外增加以下库
import android.media.MediaPlayer;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;
import android.widget.Toast;

在OPhone系统中,自带的铃声放在/system/media/audio/目录下,可以通过adb shell查看选择。

最简单的播放实现可以是以下代码:

MediaPlayer mp = new MediaPlayer();
mp.setDataSource(Audio_PATH);
mp.prepare();
mp.start();

解释如下:

1.新建一个MediaPlayer 实例

2.调用setDataSource()方法设置播放文件的路径,该路径既可以是本地文件如/sdcard/test.mp3,也可以是网络流媒体数据如 http://www.monternet.com/test/test.mp3

3.调用prepare()方法,使底层openCore初始化数据。同时mediaplayer还提供另外一个接口prepareasync(), 你可以异步监听当前数据是否准备好播放。对于流媒体来说,最好使用异步方法,无需等待阻塞。对于文件媒体,可以使用prepare。

4.一旦prepare()完成,便可以调用start()方法开始播放,

如果想暂停播放,可以调用pause()方法,如果想停止播放,可以调用stop()方法。

播放器的状态图如下:

三、代码编写

该段代码初始化了mp,设置了两个listener,可以通过对比状态转换图来理解。

下面是按钮的初始化和按钮响应定义,为了保证状态可以正常切换,我们需要对按钮的使能做出定义。

最后,是mp的初始化函数setup(),实现了按钮的状态设置,播放音乐路径,和异步准备的功能。


至此,一个实现音乐播放功能的程序已经基本形成,我们会在后面介绍其他关于媒体的知识。