您可以阅读本文,了解1对1语音通话Android端的集成操作。

前提条件

开发前的环境要求如下表所示,详情请参见:使用限制

类别 说明
系统版本 支持Android 4.1及以上。
API版本 不低于16。
CPU架构 支持真机架构armeabi、armeabi-v7a、arm64-v8a (不支持模拟器x86架构)。

Demo运行指引

说明 Demo源码中已经集成AliRTC SDK(版本:1.17)。SDK集成方式通过Maven集成。
  1. 下载Demo
  2. 打开Android Studio,单击Open an existing Android Studio project并选择demo目录下的ApsaraVideoVoiceCall文件。如下图所示:
    打开Demo
  3. 选择一台已连接的真机设备。
    连接真机
  4. 单击build and run按钮编译。
    bulid and run

快速跑通Demo

在运行Demo前,先跑通server端的代码,然后将server地址粘贴到com/aliyun/rtc/voicecall/constant/Constant.java文件中的BASE_URL变量。

如:https://<域名>/1v1-audio。

域名

功能实现流程

  1. 项目结构说明。

    项目业务代码都封装在AlivcVoiceCall库里面,可以通过引用本地库的形式引用到项目中使用。

    项目名解释,如下所示:

    • AlivcVoiceCall:功能实现库。
    • AliyunVideoCommon:公共库。
    • app:Demo启动入口。
    • thirdparty-lib:第三方库的引用。
    目录

    UI中存放App页面,constant中存放常量数据,view中存放自定义view,network中存放网络请求。

    目录
  2. 功能实现流程。
    • 创建并加入房间。
      注意 AliRtcEngieEventListener回调在子线程中,如果您想操作UI界面需要切换到主线程。
            //创建AliRtcEngin实例。
            mEngine = AliRtcEngine.getInstance(getApplicationContext());
            //设置AliRtcAuthInfo用户信息,通过Server Api获取到用户信息和RTC服务器的Token信息,拿到信息后
            //设置给AliRtcAuthInfo就可以调用joinChannel加入频道进行通话。
            AliRtcAuthInfo userInfo = “从server端获取”;
            //调用joinChannel后在AliRtcEngieEventListener.onJoinChannelResult(int i)接受回调信息。
            if (i != 0) {
                //加入房间失败。
            } else {
                //加入房间成功。
            }
    • 用户推流。

      当用户加入房间成功时可以调用推流方法来发布自己的音频信息让对方订阅, 也可以在加入房间之前调用mEngine.setAutoPublish(true, true);来实现主动推流和订阅。

      //true表示允许发布音频流,false表示不允许。
      mEngine.configLocalAudioPublish(true);
      mEngine.publish();
    • 播放伴奏。

      startAudioAccompany方法只能播放一首歌,不支持多首同时播放 playAudioEffect可以播放之前预加载的音效。两个方法可以同时调用,可以一边推送播放背景音效,一个本地试听。

      //播放当前音效并推送。loopCycles=-1时代表循环播放。
      mEngine.startAudioAccompany(mSelectedBgmData.first.getPath(), false, false, -1);
      int i = mEngine.playAudioEffect(currBgm, file.getPath(), -1, false);
    • 暂停伴奏。
      mEngine.pauseAudioAccompany();
      mEngine.pauseAudioEffect(soundId);
    • 停止伴奏。
      mEngine.pauseAudioAccompany();
      mEngine.stopAudioEffect(currBgm);
    • 恢复播放伴奏。
      mEngine.resumeAudioAccompany();
      mEngine.resumeAudioEffect(currBgm);
    • 静音模式(停止发布本地音频流)。
      mEngine.muteLocalMic(false);
    • 取消静音模式(发布本地音频流)。
      mEngine.muteLocalMic(true);
    • 扬声器模式。
      mEngine.enableSpeakerphone(true);
    • 取消扬声器模式。
      mEngine.enableSpeakerphone(false);
    • 离开房间。
      mEngine.leaveChannel();