从API version 11开始支持低功耗音频播放。
低功耗音频播放是一种通过软硬件协同设计实现的音频渲染方案。其核心机制是增大音频渲染器的内部缓冲区,使系统能够一次性填充大量音频数据,从而允许主处理器长时间休眠,减少频繁处理音频数据的功耗,显著降低系统级功耗负载。
当前支持扬声器、有线耳机和部分蓝牙耳机实现低功耗功能。
低功耗音频渲染器与普通音频渲染器接口无差异,但需关注应用数据周期与播放进度。音频渲染器使用请参考使用AudioRenderer开发音频播放功能(ArkTS)和推荐使用OHAudio开发音频播放功能(C/C++)。
数据周期示意图

在数据周期内,快速请求数据写满缓存时,进入休眠状态。当缓存数据消费完后,会触发下一个周期。
播放进度示意图

在数据周期内,快速请求数据写满缓存时,播放进度按实际播放量计算。当缓存数据消费完(即播放进度到达写入数据量)后,会触发下一个周期。
流类型使用STREAM_USAGE_MUSIC、STREAM_USAGE_AUDIOBOOK、AUDIOSTREAM_USAGE_MUSIC或AUDIOSTREAM_USAGE_AUDIOBOOK,系统默认为低功耗渲染器。
低功耗渲染器缓冲区:亮屏场景下,最大1000ms;熄屏场景下,最大10000ms。缓冲区数据消费完时会唤醒主处理器,触发应用传送数据,传送数据的周期与缓冲区大小保持一致。
低功耗渲染器和低时延渲染器不支持并发,采用先到先得原则,即先启动的生效,后启动的降级为普通渲染器。具体示例如下:
应用数据写完不代表已经播完,需调用获取音频时间戳接口getAudioTimestampInfo或OH_AudioRenderer_GetAudioTimestampInfo(),判断实际播放进度。