ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android音视频开发(2)常用的系统播放器MediaPlayer

2021-10-21 11:02:33  阅读:206  来源: 互联网

标签:状态 调用 函数 MediaPlayer 音视频 Idle Android


1.状态图及生命周期

MediaPlayer是一个多媒体播放类,通过它控制音视频流或本地音视频资源的播放过程。

它分为很多状态,如下图所示:

图中的单箭头弧代表同步函数调用,双箭头弧代表异步函数调用。

1.1 Idle状态、End状态以及生命周期

 Idle就绪态:MediaPlayer创建实例或调用reset函数后,播放器被创建所处的状态。

End结束态:调用release函数后,编程End状态。

生命周期:Idle就绪态到End结束态的整个过程。

1.2 Error状态

Error状态:触发回调机制,调用程序出错时,根据回调函数将状态触发到Error状态,一旦不适用MediaPlayer,就需要调用release函数,以便释放。

                   为了重新使用MediaPlayer,调用reset函数,会恢复到Idle状态,所以要设置错误监听,可从播放器内部返回的信息找到错误原因。

1.3 Initialized状态

Initialized状态:初始化状态,当调用setDataSource函数时,将Idle状态变为Initialized状态。若在非Idle状态调用会抛异常,当重载时也需要抛出2个异常。

1.4 Prepared状态

Prepare状态:分为2种方式。同步方式--本地音视频文件。异步方式--网络数据,需要缓冲数据。

1.5 Started状态

Started状态:在播放控制开始之前,必须调用start函数并成功返回,状态由Prepared变为Started状态。当处于Started状态时,若事先注册过setOnBufferingUpdateListener,内部会回调,主要保持跟踪音视频流的buffering status。

1.6 Paused状态

Paused状态:为暂停状态,调用MediaPlayer.pause函数时,状态由started变为Paused状态。这个状态是瞬间的。

1.7 Stopped状态

Stopped状态:调用stop函数时,都将进入Stopped状态,无论处于何种状态。一旦Stopped,playback不能开始,直到重新调用prepare或prepareAsync函数,且处于Prepared状态才开始。

1.8 PlaybackCompleted状态

PlaybackCompleted状态:当前播放的位置可通过getCurrentPosition函数获取,setLooping为true,表示循环播放。依然处于started状态。

今天就先了解这些基本的音视频开发的流程。接下来的会进行代码编写学习分析,更加深入的理解整个过程。我们下个博客见。

标签:状态,调用,函数,MediaPlayer,音视频,Idle,Android
来源: https://blog.csdn.net/liwenjie0/article/details/120875878

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有