实现音频互动

前提条件

请确保 SDK 已集成,快速集成SDK

API调用流程

实现方法

配置App权限

在开启 Activity 时, SDK需要获取Android 设备的摄像头和麦克风等使用权限。

private static final String[] REQUEST_PERMISSIONS = new String[]{
        Manifest.permission.WRITE_EXTERNAL_STORAGE,
        Manifest.permission.READ_EXTERNAL_STORAGE,
        Manifest.permission.INTERNET,
        Manifest.permission.ACCESS_NETWORK_STATE,
        Manifest.permission.RECORD_AUDIO,
        Manifest.permission.MODIFY_AUDIO_SETTINGS,
        Manifest.permission.BLUETOOTH,
        Manifest.permission.BLUETOOTH_ADMIN
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_video_chat_view);


    if (checkSelfPermission(REQUESTED_PERMISSIONS[0], PERMISSION_REQ_ID) &&
        checkSelfPermission(REQUESTED_PERMISSIONS[1], PERMISSION_REQ_ID) &&
        checkSelfPermission(REQUESTED_PERMISSIONS[2], PERMISSION_REQ_ID)) {
      
      // 获取权限后,初始化 SDK,并加入频道。
    }
}

private boolean checkSelfPermission(String permission, int requestCode) {
    if (ContextCompat.checkSelfPermission(this, permission) !=
            PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, REQUESTED_PERMISSIONS, requestCode);
        return false;
    }

    return true;
}

创建引擎

调用 createEngine 创建并初始化 ThunderEngine 对象。

public static synchronized ThunderEngine createEngine(ThunderEngineConfig config)
public class ThunderEngineConfig {
  public Context context = null;              // Android Application 的上下文
  public String appId = "";                   // 为应用程序签发的 AppId
  public long sceneId = 0;                    // 开发者自定义场景 Id,用以细分业务场景;如果不需要,可以填 0
  public int areaType = 0;                    // 指定区域,默认为中国大陆,详见 ThunderRtcConstant.AreaType
  public int serverDomain = 0;                // 预留参数
  public ThunderEventHandler handler = null;  // 事件回调缺省抽象类

  public ThunderEngineConfig() {
  }
}

根据场景设置 handler 属性来注册 ThunderEventHandler 类事件回调,以监听相关事件和错误码。常用事件回调如下:

设置音频参数和应用场景

调用 setAudioConfig设置音频参数和应用场景。

ThunderEngine.setAudioConfig(int profile, int commutMode, int scenarioMode);

加入房间

调用 joinRoom 并设置 Token,加入房间,收到 onJoinRoomSuccess 表示加入房间成功。

ThunderEngine.joinRoom(byte[] token, String roomName, String uid);

开播本地音频

调用 stopLocalAudioStream 开播,开始推送本地音频流。远端将收到onRemoteAudioStopped 回调事件。

ThunderEngine.stopLocalAudioStream(false);

停播本地音频

调用 stopLocalAudioStream 停播,停止推送本地音频流。远端将收到onRemoteAudioStopped 回调事件。

ThunderEngine.stopLocalAudioStream(true);

离开房间

当需要结束通话、关闭 App 或 切换 App 至后台时,可以调用 leaveRoom 接口离开当前房间。

当调用 joinRoom 方法后,必须调用 leaveRoom 结束通话,否则无法开始下一次通话。

int ret = mThunderEngine.leaveRoom();

文档是否有解决您的问题?

有帮助 没帮助
提交成功,非常感谢您的反馈!

反馈

TOP