阿里云首页 物联网视频服务

操作步骤

本文介绍在Android应用端实现语音对讲功能的操作步骤。

说明

本文中的代码仅为示例,具体代码请在Android SDK中查看。

前提条件

  • 已创建产品和设备,具体操作,请参见设备接入

  • 已获取Android应用端SDK,具体操作,请参见获取SDK

操作步骤

下面为您介绍完成一次语音对讲的操作步骤。操作步骤中接口的详细信息,请参见接口说明

  1. 创建语音对讲实例,并设置对讲模式和音频参数。

    liveIntercomV2 = new LiveIntercomV2(context, "", LiveIntercomV2.LiveIntercomMode.DoubleTalk, AudioParams.AUDIOPARAM_MONO_8K_G711A);
  2. 注册监听器,并处理语音对讲回调。

    请在对应的事件回调中处理,包括对讲开始、录音开始、录音结束以及录音数据回调。录音数据回调可用于UI展示,如音量计算。

    //设置语音对讲错误回调 
    liveIntercomV2.setLiveIntercomV2Listener(new LiveIntercomV2Listener() {
                @Override
                public void onTalkReady() {
                    showToast("可以开始说话了");
                }
                @Override
                public void onError(LiveIntercomException error) {
                    showToast("code:" + error.getCode() + " msg:" + error.getMessage());
                }
                @Override
                public void onRecordStart() {
                    //直播播放器设置为静音
                    player.setVolume(0f);
                    showToast("录音机已启动");
                }
                @Override
                public void onRecordEnd() {
                    //直播播放器恢复音量
                    player.setVolume(1f);
                    showToast("录音机结束");
                }
                @Override
                public void onRecordBufferReceived(byte[] buffer, int offset, int size) {
                    //音频数据,可用于计算和绘制波形图
                    Log.d(TAG, "onBufferReceived:" + size);
                }
            });
  3. 设置声音采集的增益值。

    增益值包括无、低、中、高、强五种水平,默认值为高,请您根据设备效果来调整。

    liveIntercomV2.setGainLevel(LiveIntercomV2.GAIN_LEVEL_NONE); //设置增益值为无
  4. 开始对讲与停止对讲。

    1. 开始对讲:请求音频焦点,并设置为通话模式,同时将对端播放声音强制路由至扬声器,若已连接蓝牙耳机或者线控耳机则路由至耳机上。

    2. 停止对讲:释放音频焦点,并设置为常规模式,同时取消强制音频播放路由至扬声器或耳机。对讲过程中默认开启手机回声消除。

      //开始对讲请求,请求参数由QueryVoiceIntercom接口返回
      LiveIntercomRequest liveIntercomRequest = new LiveIntercomRequest();
      liveIntercomRequest.setIv(android.util.Base64.decode(obj.getJSONObject("Data").getJSONObject("CryptoKey").getString("Iv"), NO_PADDING));
      liveIntercomRequest.setKey(android.util.Base64.decode(obj.getJSONObject("Data").getJSONObject("CryptoKey").getString("Key"), NO_PADDING));
      liveIntercomRequest.setUrl(obj.getJSONObject("Data").getString("Url"));
      liveIntercomV2.startWithExternalRequest(liveIntercomRequest);
      
      //主动停止
      liveIntercomV2.stop();
      说明

      QueryVoiceIntercom接口详细信息,请参考QueryVoiceIntercom