1e41f4b71Sopenharmony_ci# OpenSL ES
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci> **说明:**
4e41f4b71Sopenharmony_ci> OpenHarmony上的OpenSL ES接口,是早期SDK8版本开始提供,用于支持应用Native层音频开发的接口。但随着版本演进,接口定义的可扩展性不足,不再能满足音频系统的能力拓展,因此当前已不再推荐应用开发者继续使用此接口进行音频功能开发,
5e41f4b71Sopenharmony_ci> 请开发者[从OpenSL ES切换到OHAudio](../../media/audio/replace-opensles-by-ohaudio.md)。
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ci## 简介
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ciOpenSL ES(Open Sound Library for Embedded System)即嵌入式音频加速标准。为开发者提供了标准化、高性能以及低响应时间的音频功能开发的对象和接口。相对于开源免费的OpenSL ES,OpenHarmony基于[OpenSL ES](https://www.khronos.org/opensles/) 1.0.1 API规范实现了部分Native API,相关接口开放情况如表[支持的API](#支持的api)所示。
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci## 引入OpenSL ES能力
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci如果开发者需要使用OpenSL ES相关功能,首先请添加头文件:
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci```
16e41f4b71Sopenharmony_ci#include <SLES/OpenSLES.h>
17e41f4b71Sopenharmony_ci#include <SLES/OpenSLES_OpenHarmony.h>
18e41f4b71Sopenharmony_ci#include <SLES/OpenSLES_Platform.h>
19e41f4b71Sopenharmony_ci```
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci其次在CMakeLists.txt中添加以下链接动态库
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci```
24e41f4b71Sopenharmony_cilibOpenSLES.so
25e41f4b71Sopenharmony_ci```
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci## 支持的API
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci|对象                |对外接口               |接口调用详情                                                                           |是否支持   |说明                  |
30e41f4b71Sopenharmony_ci| ------------------ | -------------------- | -------------------------------------------------------------------------------------|----------| -------------------- |
31e41f4b71Sopenharmony_ci|SLEngineItf         |CreateAudioPlayer     |CreateAudioPlayer(SLEngineItf self, SLObjectItf *pPlayer, SLDataSource *pAudioSrc, SLDataSink *pAudioSnk, SLuint32 numInterfaces, const SLInterfaceID *pInterfaceIds, const SLboolean *pInterfaceRequired) |是        |创建音频播放机。        |
32e41f4b71Sopenharmony_ci|SLEngineItf         |CreateAudioRecorder   |reateAudioRecorder(SLEngineItf self, SLObjectItf *pRecorder, SLDataSource *pAudioSrc, SLDataSink *pAudioSnk, SLuint32 numInterfaces, const SLInterfaceID *pInterfaceIds, const SLboolean *pInterfaceRequired)|是        |创建音频录制器。        |
33e41f4b71Sopenharmony_ci|SLEngineItf         |CreateAudioOutputMix  |CreateOutputMix(SLEngineItf self, SLObjectItf *pMix, SLuint32 numInterfaces, const SLInterfaceID *pInterfaceIds, const SLboolean *pInterfaceRequired)|是        |创建混音器。            |
34e41f4b71Sopenharmony_ci|SLObjectItf         |Realize               |Realize(SLObjectItf self, SLboolean async)                                            |是        |创建音频播放机。        |
35e41f4b71Sopenharmony_ci|SLObjectItf         |getState              |GetState(SLObjectItf self, SLuint32 *pState)                                           |是        |获取状态。             |
36e41f4b71Sopenharmony_ci|SLObjectItf         |getInterface          |GetInterface(SLObjectItf self, const SLInterfaceID iid, void *pInterface)              |是        |获取接口。             |
37e41f4b71Sopenharmony_ci|SLObjectItf         |Destroy               |Destroy(SLObjectItf self)                                                             |是        |销毁对象。             |
38e41f4b71Sopenharmony_ci|SLOHBufferQueueItf  |Enqueue               |Enqueue(SLOHBufferQueueItf self, const void *pBuffer, SLuint32 size)                   |是        |将buffer加入实际队列中。|
39e41f4b71Sopenharmony_ci|SLOHBufferQueueItf  |clear                 |Clear(SLOHBufferQueueItf self)                                                        |是        |释放buffer队列         |
40e41f4b71Sopenharmony_ci|SLOHBufferQueueItf  |getState              |GetState(SLOHBufferQueueItf self, SLOHBufferQueueState *pState)                        |是        |获取BufferQueue状态。  |
41e41f4b71Sopenharmony_ci|SLOHBufferQueueItf  |getBuffer             |GetBuffer(SLOHBufferQueueItf self, SLuint8 **buffer, SLuint32 *size)                  |是        |获取buffer。           |
42e41f4b71Sopenharmony_ci|SLOHBufferQueueItf  |RegisterCallback      |RegisterCallback(SLOHBufferQueueItf self, SlOHBufferQueueCallback callback, void *pContext) |是  |注册回调函数。          |
43e41f4b71Sopenharmony_ci|SLPlayItf           |SetPlayState          |SetPlayState(SLPlayItf self, SLuint32 state)                                          |是        |设置播放状态。          |
44e41f4b71Sopenharmony_ci|SLPlayItf           |GetPlayState          |GetPlayState(SLPlayItf self, SLuint32 *pState)                                         |是        |获取播放状态。          |
45e41f4b71Sopenharmony_ci|SLRecordItf         |SetRecordState        |SetRecordState(SLRecordItf self, SLuint32 state)                                      |是        |设置录制状态。          |
46e41f4b71Sopenharmony_ci|SLRecordItf         |GetRecordState        |GetRecordState(SLRecordItf self, SLuint32 *pState)                                   |是        |获取录制状态。          |
47e41f4b71Sopenharmony_ci|SLVolumeItf         |SetVolumeLevel        |SetVolumeLevel(SLVolumeItf self, SLmillibel level)                                   |是        |设置音量。              |
48e41f4b71Sopenharmony_ci|SLVolumeItf         |GetVolumeLevel        |GetVolumeLevel(SLVolumeItf self, SLmillibel *pLevel)                                    |是        |获取音量。              |
49e41f4b71Sopenharmony_ci|SLVolumeItf         |GetMaxVolumeLevel     |GetMaxVolumeLevel(SLVolumeItf self, SLmillibel *pMaxLevel)                             |是        |获取最大音量。          |