本文主要介绍在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(),实现了按钮的状态设置,播放音乐路径,和异步准备的功能。
至此,一个实现音乐播放功能的程序已经基本形成,我们会在后面介绍其他关于媒体的知识。