MediaPlayer简介

2023-02-10  本文已影响0人  慎独静思

MediaPlayer可以用来播放应用的资源文件,文件系统中的文件或网络文件。
MediaPlayer不是线程安全的,它的创建和实例获取应该在同一个线程。如果需要注册callbacks,需要所在线程有一个Looper。

状态图


状态图

播放状态被作为状态机管理,单箭头的线代表同步调用,双箭头的线代表异步调用。

  1. MediaPlayer对象通过new被创建或调用reset方法之后,处于idle状态,release方法调用之后,它处于end状态。
  1. 因为多种原因,播放控制可能会失败,比如不支持的音视频格式,质量不佳的音视频,分辨率太高,流媒体超时等等。在这种情况下报错和恢复是一种比较有效的措施。有时,因为编码错误也会导致播放器报错,比如在无效状态下触发控制操作。基于这种情况,我们可以通过 setOnErrorListener注册OnErrorListener。
  1. 调用setDataSource方法会把MediaPlayer对象从idle状态转换到 Initialized状态。
  1. MediaPlayer对象会在进入started之前,首先进入prepared状态。
  1. 调用start方法来开始播放视频,开始播放视频之后,MediaPlayer处于started状态,我们可以调用isPlaying()方法来判断视频是否播放。
  1. 播放可以被暂停和停止,我们通过调用pause方法暂停一个视频,使MediaPlayer处于paused状态。播放和暂停之前的转换在播放引擎中是异步执行的,在状态更新之前调用 isPlaying可能需要花费一些时间,对于流式内容可能需要几秒钟。
  1. 调用stop方法停止播放,stop可以使started,paused,prepared或 PlaybackCompleted的MediaPlayer进入stopped状态。
  1. 可以通过调用seekTo调整播放进度。
  1. 播放完成

当播放网络内容时,需要申请 Manifest.permission.INTERNET权限。

参考:
https://developer.android.google.cn/reference/android/media/MediaPlayer

上一篇 下一篇

猜你喜欢

热点阅读