封装音频播放器
<p>音频播放是绘本APP的基本功能。由于具体的实现方式在各平台上会有差异,因此需要开发人员根据具体的平台实现声音播放的功能。有些平台底层的实现采用的是C语言,需要将它封装成C++的class。</p>
<h3>一、封装原则</h3>
<p>底层音频功能的封装不需要过于严格的接口标准,但一些基本的原则必须遵守。</p>
<ol>
<li>具有状态的概念
至少需要Idle和Playing状态</li>
<li>支持多实例、多线程运行
这是为了支持多轨播放功能</li>
<li>有初始化、重置的操作
重置(reset)操作要保证在任何状态下调用都可以正确恢复到Idle状态</li>
<li>有播放、停止操作
多个实例可同时调用播放功能,以实现多轨播放</li>
<li>音频播放完成时要调用回调函数
回调函数是由上层结构注册的,这是为了实现信息自底向上地传递</li>
<li>之后在实现<em><a href="https://www.showdoc.cc/223276982497880?page_id=1274208846155040">音频播放器</a>接口</em>时要保证那些接口都能够利用封装好的class完成</li>
</ol>
<h3>二、调用流程</h3>
<p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/3e47f3e9409df734ee2b4a892a98265b?showdoc=.jpg" alt="调用流程" title="调用流程" /></p>
<p>必须在任何地方都可调用重置功能。</p>
<h3>测试例程</h3>
<ul>
<li>单轨
<ul>
<li>单个实例</li>
<li>连续播放多个音频</li>
<li>音频可以被打断</li>
<li>音频播放完成后会调用回调函数</li>
</ul></li>
<li>多轨
<ul>
<li>多个实例,多个线程</li>
<li>同时播放多个音频</li>
<li>不同实例可独立进行操作,互不干扰</li>
<li>音频可以被打断</li>
<li>每个实例在播放完成后都会调用回调函数</li>
</ul></li>
</ul>
<p><strong>要保证所有接口能正常调用并且功能正常</strong></p>