中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

播放音频引擎服务端产生的音频数据

场景介绍

通过调用音频引擎提供的API,用户可以播放音频引擎服务端发送的音频数据。

前提条件

NA

开发流程

  1. 用户通过通信模块,正确接收到音频引擎服务端发送的音频数据。
  2. 用户调用音频引擎客户端提供的API,播放音频。
  3. 用户注册客户端音频数据保存hook函数,音频引擎客户端会把接收到的音频数据通过hook函数进行保存。
  4. 用户可以调用音频引擎客户端提供的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");   
        }   
    }   
}