android 多媒体平台开发,在Android平台下开发多媒体软件MediaPlayer

在前文中我们介绍了在Ubuntu下建立Eclipse的Android开发环境,我们现在将介绍一下在Android平台下如何开发多媒体软件MediaPlayer。MediaPlayer可以用来播放视频和音频、流媒体。MediaPlayer的生命周期如下图:

bfbd6196383bc6a4799b8b23d94fd54d.gif

从MediaPlayer的生命周期图,可以看出使用MediaPlayer不是很复杂。

最简单的流程:初始化->resrt()->setDataSource()->prepare()->start()->……只要简单的几步,就可以播放音频文件了。

来看看一个播放音频的例子吧,看代码和注释吧……

1: private Handler handler = new Handler() {2:

3: public void handleMessage(Message msg) {

4: //更新进度条

5: progressBar.setProgress(progressState);

6: };

7: };

8:

9: /**

10: * 播放

11: *

12: * @param filePath

13: * 文件路径

14: */

15: private void playMusic(String filePath) {

16: try {

17: progressState = 0;

18: progressBar.setProgress(0);

19: // 重置

20: mediaPlayer.reset();

21: // 设置数据源

22: mediaPlayer.setDataSource(filePath);

23: // 准备播放

24: mediaPlayer.prepare();

25: // 获取播放时长

26: length = mediaPlayer.getDuration();

27: progressBar.setMax(length / 1000);

28: // 播放

29: mediaPlayer.start();

30: new Thread(new ProcessBarRefresh()).start();

31: // 设置播放完毕监听

32: mediaPlayer.setOnCompletionListener(new OnCompletionListener() {

33: @Override

34: public void onCompletion(MediaPlayer mp) {

35: nextMusic();

36: }

37: });

38:

39: } catch (Exception e) {

40: displayToast(e.getMessage());

41: }

42: }

43:

44: /**

45: * 更新进度条

46: * @author 张汉国

47: */

48: class ProcessBarRefresh implements Runnable{

49:

50: @Override

51: public void run() {

52: while(isPlaying){

53: progressState = mediaPlayer.getCurrentPosition()/1000;

54: handler.sendMessage(handler.obtainMessage());

55: }

56: }

57:

58: }

f63c8f4765476120e3829e858f61fbe6.png

cb3a994dcda920157ae282b44f04e127.png

以上只是一个简单的实例,要开发一个播放器除了UI需要下功夫外,还得注意不少细节东西。

Android中音乐播放是一个后台进程,以上代码当调用 onStop()->onCreate() 的时候会重复加载播放列表,造成列表重复。这就需要用到 onSaveIntanceState(),这样子在onCreate()里面初始化播放列表的时候先判断 Bundle 是否为空,是否能拿到播放列表,如果拿不到在重新初始化。

再者Android自身也提供一个MediaStore这样一个Provider的属性对象供我们开发利用。

【编辑推荐】

【责任编辑:落叶情思 TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值