日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Android使用指南

更新時(shí)間:

本文將介紹如何將AICallKit SDK集成到您的Android應(yīng)用中。

環(huán)境要求

  • Android Studio 插件版本4.1.3

  • Gradle 7.0.2

  • Android Studio自帶JDK11

集成SDK

  1. 在項(xiàng)目級(jí)build.gradle項(xiàng)目文件中添加阿里云Maven倉(cāng)庫(kù)。

    allprojects {
        repositories {
            google()
            jcenter()
            maven { url 'https://maven.aliyun.com/repository/google' }
            maven { url 'https://maven.aliyun.com/repository/public' }
        }
    }
  2. 在相應(yīng)build.gradle項(xiàng)目文件下,加入引入ARTCAICallKit依賴項(xiàng)。

    dependencies {
        implementation 'com.aliyun.aio:AliVCSDK_ARTC:x.x.x'                  //修改x.x.x為你工程適配的版本
        implementation 'com.aliyun.auikits.android:ARTCAICallKit:1.5.0'
    }
    說(shuō)明

    ARTC SDK版本請(qǐng)到官網(wǎng)獲取最新適配版本號(hào)。

SDK使用示例

ARTCAICallEngine mARTCAICallEngine = null;

// 創(chuàng)建engine實(shí)例
void initEngine(Context context, String userId) {
    // 初始化
    // context -> Android Context
    // userId -> 進(jìn)入rtc頻道的用戶id
    mARTCAICallEngine = new ARTCAICallDepositEngineImpl(context, userId);   
}

// 設(shè)置回調(diào)
void initCallback() {
    mARTCAICallEngine.setEngineCallback(mCallEngineCallbackWrapper); 
}

// 啟動(dòng)智能體后,開始通話
void call() {
    // 設(shè)置engine的啟動(dòng)參數(shù)
    ARTCAICallEngine.ARTCAICallConfig artcaiCallConfig = new ARTCAICallEngine.ARTCAICallConfig();
    // 如果有臨時(shí)的智能體ID,可以配置
    artcaiCallConfig.aiAgentId = aiAgentId;
    mARTCAICallEngine.init(artcaiCallConfig);
    
    // 指定智能體的類型:純語(yǔ)音、數(shù)字人、視覺理解
    ARTCAICallEngine.ARTCAICallAgentType aiAgentType = VoiceAgent;
    mARTCAICallEngine.setAiAgentType(aiAgentType);

    // 如果是數(shù)字人類型,則需要配置數(shù)字人顯示的視圖容器
    if (aiAgentType == AvatarAgent) {
        ViewGroup avatarlayer;
        mARTCAICallEngine.setAvatarAgentView(
            avatarlayer,
            new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                                       ViewGroup.LayoutParams.MATCH_PARENT)
        );
    }
    // 如果是視覺理解類型,則需要配置本地視頻預(yù)覽顯示的視圖容器
    else if (aiAgentType == VisionAgent) {
        ViewGroup previewLayer;
        mARTCAICallEngine.setVisionPreviewView(previewLayer,
            new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                                         ViewGroup.LayoutParams.MATCH_PARENT)
        );
    }

    // 進(jìn)入頻道
    String aIAgentInstanceId = “XXX”;
    String rtcAuthToken = "XXX";
    String aIAgentUserId = "XXX";
    String channelId = "XXX";
    mARTCAICallEngine.call(rtcAuthToken, aIAgentInstanceId, 
                           aIAgentUserId, channelId);
}

// 結(jié)束通話
void handup() {
    mARTCAICallEngine.handup();
}

// 其他功能調(diào)用示例,請(qǐng)參考API說(shuō)明

// 回調(diào)處理(僅示例不分核心的回調(diào)操作)
ARTCAICallEngine.IARTCAICallEngineCallback mCallEngineCallbackWrapper = new ARTCAICallEngine.IARTCAICallEngineCallback() {
    @Override
    public void onErrorOccurs(ARTCAICallEngine.AICallErrorCode errorCode) {
        // 發(fā)生了錯(cuò)誤,結(jié)束通話
        mARTCAICallEngine.handup();
    }

    @Override
    public void onCallBegin() {
        // 通話開始(入會(huì))
    }

    @Override
    public void onCallEnd() {
        // 通話結(jié)束(離會(huì))
    }

    @Override
    public void onAICallEngineRobotStateChanged(ARTCAICallEngine.ARTCAICallRobotState oldRobotState, ARTCAICallEngine.ARTCAICallRobotState newRobotState) {
        // 機(jī)器人狀態(tài)同步
    }

    @Override
    public void onUserSpeaking(boolean isSpeaking) {
        // 用戶說(shuō)話回調(diào)
    }

    @Override
    public void onUserAsrSubtitleNotify(String text, boolean isSentenceEnd, int sentenceId) {
        // 同步ASR識(shí)別用戶的話
    }

    @Override
    public void onAIAgentSubtitleNotify(String text, boolean end, int userAsrSentenceId) {
        // 同步智能體回應(yīng)的話
    }

    @Override
    public void onNetworkStatusChanged(String uid, ARTCAICallEngine.ARTCAICallNetworkQuality quality) {
        // 網(wǎng)絡(luò)狀態(tài)回調(diào)
    }

    @Override
    public void onVoiceVolumeChanged(String uid, int volume) {
        // 音量變化
    }

    @Override
    public void onVoiceIdChanged(String voiceId) {
        // 當(dāng)前通話的音色發(fā)生了改變
    }

    @Override
    public void onVoiceInterrupted(boolean enable) {
        // 當(dāng)前通話的語(yǔ)音打斷設(shè)置改變
    }

    @Override
    public void onAgentVideoAvailable(boolean available) {
        // 智能體視頻是否可用(推流)
    }

    @Override
    public void onAgentAudioAvailable(boolean available) {
        // 智能體音頻是否可用(推流)
    }
    
    @Override
    public void onAgentAvatarFirstFrameDrawn() {
        // 數(shù)字人首視頻幀渲染
    }

    @Override
    public void onUserOnLine(String uid) {
        // 用戶上線回調(diào)
    }

};

API說(shuō)明

API概覽

類/協(xié)議

API

說(shuō)明

ARTCAICallEngine

引擎接口定義

init

初始化

setAICallAgentType

設(shè)置智能體類型

call

創(chuàng)建&開始通話

handup

掛斷

switchMicrophone

切換麥克風(fēng)狀態(tài)

interruptSpeaking

打斷機(jī)器人說(shuō)話

enableVoiceInterrupt

開啟/關(guān)閉智能打斷

enableSpeaker

開啟/關(guān)閉揚(yáng)聲器

enablePushToTalk

開啟/關(guān)閉對(duì)講機(jī)模式

isPushToTalkEnable

對(duì)講機(jī)模式是否開啟

startPushToTalk

對(duì)講機(jī)模式:開始講話

finishPushToTalk

對(duì)講機(jī)模式:結(jié)束講話

cancelPushToTalk

對(duì)講機(jī)模式:取消這次通話

switchRobotVoice

切換音色

getRobotVoiceId

獲取正在使用的音色

setEngineCallback

注冊(cè)回調(diào)

isMicrophoneOn

是否關(guān)閉麥克風(fēng)

isSpeakerOn

揚(yáng)聲器是否開啟

isVoiceInterruptEnable

智能打斷是否開啟

setAvatarAgentView

設(shè)置數(shù)字人視圖載體

setVisionPreviewView

設(shè)置本地視頻預(yù)覽視圖載體

muteLocalCamera

關(guān)閉/取消關(guān)閉攝像頭

isLocalCameraMute

攝像頭是否關(guān)閉

switchCamera

切換前后攝像頭

getRtcEngine

獲取RTC引擎實(shí)例

getIARTCAICallService

獲取官方協(xié)議實(shí)現(xiàn)

IARTCAICallEngineCallback

引擎回調(diào)事件

onErrorOccurs

發(fā)生了錯(cuò)誤

onCallBegin

通話開始

onCallEnd

通話結(jié)束

onAICallEngineRobotStateChanged

機(jī)器人狀態(tài)同步

onUserSpeaking

用戶說(shuō)話回調(diào)

onUserAsrSubtitleNotify

同步ASR識(shí)別用戶的話

onAIAgentSubtitleNotify

同步智能體回應(yīng)的話

onNetworkStatusChanged

網(wǎng)絡(luò)狀態(tài)回調(diào)

onVoiceVolumeChanged

音量變化

onVoiceIdChanged

onVoiceIdChanged

onVoiceInterrupted

當(dāng)前通話的語(yǔ)音打斷設(shè)置改變

onAgentVideoAvailable

智能體視頻是否可用(推流)

onAgentAudioAvailable

智能體音頻是否可用(推流)

onAgentAvatarFirstFrameDrawn

數(shù)字人首視頻幀渲染

onUserOnLine

用戶上線回調(diào)

onAgentWillLeave

當(dāng)前智能體即將離開(結(jié)束當(dāng)前通話)

onHumanTakeoverWillStart

當(dāng)真人即將接管當(dāng)前智能體

onHumanTakeoverConnected

當(dāng)真人接管已經(jīng)接通

onReceivedAgentCustomMessage

智能體自定義消息

IARTCAICallService類

generateAIAgentShareCall

請(qǐng)求啟動(dòng)分享的智能體通話

ARTCAIAgentUtil類

parseAiAgentShareInfo

解析分享智能體的信息

parseAiAgentInfo

解析智能體啟動(dòng)的響應(yīng)信息

ARTCAICallEngine詳情

init

初始化

/**
 * 初始化
 * @param config 初始化配置
 */
public abstract void init(ARTCAICallConfig config);

setAICallAgentType

設(shè)置智能體類型

/**
 * 設(shè)置智能體類型
 * @param aiAgentType
 */
public abstract void setAICallAgentType(ARTCAICallAgentType aiAgentType);

call

創(chuàng)建&開始通話

/**
 * 創(chuàng)建&開始通話
 */
public abstract void call(String rtcToken, String aiAgentInstanceId, String aiAgentUserId, String channelId);

handup

掛斷

/**
 * 掛斷
 */
public abstract void handup();

switchMicrophone

切換麥克風(fēng)狀態(tài)

/**
 * 切換麥克風(fēng)狀態(tài)
 * @param on
 */
public abstract void switchMicrophone(boolean on);

interruptSpeaking

打斷機(jī)器人說(shuō)話

/**
 * 打斷機(jī)器人說(shuō)話
 */
public abstract boolean interruptSpeaking();

enableVoiceInterrupt

開啟/關(guān)閉智能打斷

/**
 * 開啟/關(guān)閉智能打斷
 */
public abstract boolean enableVoiceInterrupt(boolean enable);

enableSpeaker

開啟/關(guān)閉揚(yáng)聲器

/**
 * 開啟/關(guān)閉揚(yáng)聲器
 */
public abstract boolean enableSpeaker(boolean enable);

enablePushToTalk

開啟/關(guān)閉對(duì)講機(jī)模式

/**
 * 開啟/關(guān)閉對(duì)講機(jī)模式,對(duì)講機(jī)模式下,只有在finishPushToTalk被調(diào)用后,智能體才會(huì)播報(bào)結(jié)果
 * @param enable
 * @return
 */
public abstract boolean enablePushToTalk(boolean enable);

isPushToTalkEnable

對(duì)講機(jī)模式是否開啟

/**
 * 對(duì)講機(jī)模式是否開啟
 * @return
 */
public abstract boolean isPushToTalkEnable();

startPushToTalk

對(duì)講機(jī)模式:開始講話

/**
 * 對(duì)講機(jī)模式:開始講話
 * @return
 */
public abstract boolean startPushToTalk();

finishPushToTalk

對(duì)講機(jī)模式:結(jié)束講話

/**
 * 對(duì)講機(jī)模式:結(jié)束講話
 * @return
 */
public abstract boolean finishPushToTalk();

cancelPushToTalk

對(duì)講機(jī)模式:取消這次通話

/**
 * 對(duì)講機(jī)模式:取消這次通話
 * @return
 */
public abstract boolean cancelPushToTalk();

switchRobotVoice

切換音色

/**
 * 切換音色
 */
public abstract boolean switchRobotVoice(String voiceId);

getRobotVoiceId

獲取正在使用的音色

/**
 * 獲取正在使用的音色
 * @return
 */
public abstract String getRobotVoiceId();

setEngineCallback

注冊(cè)回調(diào)

/**
 * 注冊(cè)回調(diào)
 * @param engineCallback
 */
public abstract void setEngineCallback(IARTCAICallEngineCallback engineCallback);

isMicrophoneOn

是否關(guān)閉麥克風(fēng)

/**
 * 是否關(guān)閉麥克風(fēng)
 * @return
 */
public abstract boolean isMicrophoneOn();

isSpeakerOn

揚(yáng)聲器是否開啟

/**
 * 揚(yáng)聲器是否開啟
 * @return
 */
public abstract boolean isSpeakerOn();

isVoiceInterruptEnable

智能打斷是否開啟

/**
 * 智能打斷是否開啟
 * @return
 */
public abstract boolean isVoiceInterruptEnable();

setAvatarAgentView

設(shè)置數(shù)字人視圖載體

/**
 * 設(shè)置數(shù)字人視圖載體
 * @param viewGroup
 * @param avatarLayoutParams
 */
public abstract void setAvatarAgentView(ViewGroup viewGroup, ViewGroup.LayoutParams avatarLayoutParams);

setVisionPreviewView

設(shè)置本地視頻預(yù)覽視圖載體

/**
 * 設(shè)置本地視頻預(yù)覽視圖載體
 * @param viewGroup
 * @param visionLayoutParams
 */
public abstract void setVisionPreviewView(ViewGroup viewGroup, ViewGroup.LayoutParams visionLayoutParams);

muteLocalCamera

關(guān)閉/取消關(guān)閉攝像頭

/**
 * 關(guān)閉/取消關(guān)閉攝像頭
 */
public abstract boolean muteLocalCamera(boolean mute);

isLocalCameraMute

攝像頭是否關(guān)閉

/**
 * 攝像頭是否關(guān)閉
 * @return
 */
public abstract boolean isLocalCameraMute();

switchCamera

切換前后攝像頭

/**
 * 切換前后攝像頭
 */
public abstract boolean switchCamera();

getRtcEngine

獲取RTC引擎實(shí)例

/**
 * 獲取rtc引擎實(shí)例
 * @return
 */
public abstract AliRtcEngine getRtcEngine();

getIARTCAICallService

獲取官方協(xié)議實(shí)現(xiàn)

/**
 * 獲取官方協(xié)議實(shí)現(xiàn)
 * @return
 */
public abstract IARTCAICallService getIARTCAICallService();

IARTCAICallEngineCallback詳情

onErrorOccurs

發(fā)生了錯(cuò)誤

/**
 * 發(fā)生了錯(cuò)誤
 * @param errorCode 錯(cuò)誤碼
 */
void onErrorOccurs(AICallErrorCode errorCode);

onCallBegin

通話開始(入會(huì))

/**
 * 通話開始(入會(huì))
 */
void onCallBegin();

onCallEnd

通話結(jié)束(離會(huì))

/**
 * 通話結(jié)束(離會(huì))
 */
void onCallEnd();

onAICallEngineRobotStateChanged

機(jī)器人狀態(tài)同步

/**
 * 機(jī)器人狀態(tài)同步
 * @param oldRobotState
 * @param newRobotState
 */
void onAICallEngineRobotStateChanged(ARTCAICallRobotState oldRobotState, ARTCAICallRobotState newRobotState);

onUserSpeaking

用戶說(shuō)話回調(diào)

/**
 * 用戶說(shuō)話回調(diào)
 * @param isSpeaking 是否在說(shuō)話
 */
void onUserSpeaking(boolean isSpeaking);

onUserAsrSubtitleNotify

同步ASR識(shí)別用戶的話

/**
 * 同步ASR識(shí)別用戶的話
 * @param text ASR識(shí)別出的具體文本
 * @param isSentenceEnd 當(dāng)前文本是否為這句話的最終結(jié)果
 * @param sentenceId 當(dāng)前文本屬于的句子ID
 */
void onUserAsrSubtitleNotify(String text, boolean isSentenceEnd, int sentenceId);

onAIAgentSubtitleNotify

同步智能體回應(yīng)的話

/**
 * 同步智能體回應(yīng)的話
 * @param text 智能體的話
 * @param end 當(dāng)前回復(fù)是否結(jié)束
 * @param userAsrSentenceId 表示回應(yīng)對(duì)應(yīng)sentenceId語(yǔ)音輸入的llm內(nèi)容
 */
void onAIAgentSubtitleNotify(String text, boolean end, int userAsrSentenceId);

onNetworkStatusChanged

網(wǎng)絡(luò)狀態(tài)回調(diào)

/**
 * 網(wǎng)絡(luò)狀態(tài)回調(diào)
 * @param uid 入會(huì)用戶id
 * @param quality 網(wǎng)絡(luò)狀態(tài)
 */
void onNetworkStatusChanged(String uid, ARTCAICallNetworkQuality quality);

onVoiceVolumeChanged

音量變化

/**
 * 音量變化
 * @param uid 用戶id
 * @param volume 音量[0-255]
 */
void onVoiceVolumeChanged(String uid, int volume);

onVoiceIdChanged

當(dāng)前通話的音色發(fā)生了改變

/**
 * 當(dāng)前通話的音色發(fā)生了改變
 */
void onVoiceIdChanged(String voiceId);

onVoiceInterrupted

當(dāng)前通話的語(yǔ)音打斷設(shè)置改變

/**
 * 當(dāng)前通話的語(yǔ)音打斷設(shè)置改變
 */
void onVoiceInterrupted(boolean enable);

onAgentVideoAvailable

智能體視頻是否可用(推流)

/**
 * 智能體視頻是否可用(推流)
 */
void onAgentVideoAvailable(boolean available);

onAgentAudioAvailable

智能體音頻是否可用(推流)

/**
 * 智能體音頻是否可用(推流)
 */
void onAgentAudioAvailable(boolean available);

onAgentAvatarFirstFrameDrawn

數(shù)字人首視頻幀渲染

/**
*  數(shù)字人首視頻幀渲染
*/
void onAgentAvatarFirstFrameDrawn();

onUserOnLine

用戶上線回調(diào)

/**
*  用戶上線回調(diào)
*/
void onUserOnLine(String uid);

onAgentWillLeave

當(dāng)前智能體即將離開(結(jié)束當(dāng)前通話)

/**
 * 當(dāng)前智能體即將離開(結(jié)束當(dāng)前通話)
 * @param reason 原因:2001(閑時(shí)退出)  0(其他)
 * @param message 描述原因
 */
void onAgentWillLeave(int reason, String message);

onHumanTakeoverWillStart

當(dāng)真人即將接管當(dāng)前智能體

public void onHumanTakeoverWillStart(String takeoverUid, int takeoverMode);

參數(shù)詳情:

參數(shù)

類型

含義

takeoverUid

String

真人uid

takeoverMode

Int

1:表示使用真人音色輸出;0:表示使用智能體音色輸出

onHumanTakeoverConnected

當(dāng)真人接管已經(jīng)接通

public void onHumanTakeoverConnected(String takeoverUid);

參數(shù)詳情:

參數(shù)

類型

含義

takeoverUid

String

真人uid

onReceivedAgentCustomMessage

智能體自定義消息

/**
 * 智能體自定義消息
 * @param data 自定義消息體,使用json字符串
 */
public void onReceivedAgentCustomMessage(String data);

IARTCAICallService詳情

generateAIAgentShareCall

請(qǐng)求啟動(dòng)分享的智能體通話

/**
 * 請(qǐng)求啟動(dòng)分享的智能體通話
 * @param userId 當(dāng)前登錄的用戶id
 * @param aiAgentId 智能體id
 * @param aiAgentType 智能體類型
 * @param artcaiCallConfig 智能體配置
 * @param callback 請(qǐng)求回調(diào)
 */
void generateAIAgentShareCall(String userId, String aiAgentId, ARTCAICallEngine.ARTCAICallAgentType aiAgentType, ARTCAICallEngine.ARTCAICallConfig artcaiCallConfig, IARTCAICallServiceCallback callback);

ARTCAIAgentUtil詳情

parseAiAgentShareInfo

解析分享智能體的信息

/**
 * 解析分享智能體的信息
 * @param shareInfoText
 * @return 分享智能體的結(jié)構(gòu)化配置
 */
public static ARTCAIAgentShareInfo parseAiAgentShareInfo(String shareInfoText);

parseAiAgentInfo

解析智能體啟動(dòng)的響應(yīng)信息

/**
 * 解析智能體啟動(dòng)的響應(yīng)信息
 * @param jsonObject 智能體啟動(dòng)的響應(yīng)信息
 * @return 智能體啟動(dòng)響應(yīng)的結(jié)構(gòu)化信息
 */
public static ARTCAIAgentInfo parseAiAgentInfo(JSONObject jsonObject);