播放音频引擎服务端产生的音频数据
场景介绍
通过调用音频引擎提供的API,用户可以播放音频引擎服务端发送的音频数据。
前提条件
NA
开发流程
- 用户通过通信模块,正确接收到音频引擎服务端发送的音频数据。
- 用户调用音频引擎客户端提供的API,播放音频。
- 用户注册客户端音频数据保存hook函数,音频引擎客户端会把接收到的音频数据通过hook函数进行保存。
- 用户可以调用音频引擎客户端提供的API,开启/关闭音频播放。
编码实例
具体场景
依据开发流程,通过调用音频引擎客户端的API,播放服务端发送的音频数据,并将音频数据进行保存。
代码样例
import android.util.Log; import com.huawei.cloudgame.audioplay.AUDIOSAVEHOOK; import com.huawei.cloudgame.audioplay.AudioTrackPlayer; public class DataPipe implements AUDIOSAVEHOOK { private static DataPipe instance = new DataPipe(); private DataPipe() { } public static DataPipe getInstance() { return instance; } public void audioSaveData(byte[] data, int length) { // 音频保存接口的具体实现,由用户自己实现 } public static void registerAudioSaveHook() { int ret = AudioTrackPlayer.getInstance().registerAudioSaveHook(DataPipe.getInstance()); if (ret != AudioTrackPlayer.VMI_SUCCESS) { Log.e("AudioClient", "register audio save hook fail. ret=%d", ret); } } } public class Test { public static void main(String[] args) { DataPipe.registerAudioSaveHook(); byte[] data = getRecvData() // 示意函数:获取音频引擎服务端发送的音频数据函数。 int ret = AudioTrackPlayer.getInstance().onRecvAudioPacket(data, data.length); if (ret != AudioTrackPlayer.VMI_SUCCESS) { Log.e("AudioClient", "audio client play audio fail"); } ret = AudioTrackPlayer.startAudio(); if (ret != AudioTrackPlayer.VMI_SUCCESS) { Log.e("AudioClient", "audio client start fail"); } ret = AudioTrackPlayer.stopAudio(); if (ret != AudioTrackPlayer.VMI_SUCCESS) { Log.e("AudioClient", "audio client stop fail"); } } }
父主题: 音频引擎客户端