All Products
Search
Document Center

Intelligent Media Services:Integrate into Android apps

Last Updated:Dec 09, 2025

This topic describes how to integrate an AI agent for messaging conversations into your Android application using the AICallKit SDK.

Environment requirements

  • Android Studio plug-in: V4.1.3 or later

  • Gradle: V7.0.2 or later

  • Java Development Kit (JDK): Android Studio that comes with JDK 11

Integrate the SDK

  1. Add the Alibaba Cloud Maven repositories to your project-level build.gradle file.

    allprojects {
        repositories {
            google()
            jcenter()
            maven { url 'https://maven.aliyun.com/repository/google' }
            maven { url 'https://maven.aliyun.com/repository/public' }
        }
    }
  2. Add the ARTCAICallKit dependencies to the corresponding module-level build.gradle file.

    dependencies {
        implementation 'com.aliyun.aio:AliVCSDK_ARTC:x.x.x'                  // Specify a version compatible with your project.
        implementation 'com.aliyun.auikits.android:ARTCAICallKit:x.x.x'
        implementation 'com.aliyun.sdk.android:AliVCInteractionMessage:x.x.x'
    }
    Note
    • The minimum compatible version of the ARTC SDK is V7.1.0. Latest version: 7.8.1.

    • Latest version of AICallKit SDK: 2.9.0.

    • Latest version of AliVCInteractionMessage: 1.8.0.

SDK usage example

ARTCAIChatEngine mChatEngine = null;

// Create an engine instance.
void initEngine(Context context) {
// Initialize the engine instance.
// context -> Android Context
mChatEngine = new ARTCAIChatEngineImpl(context);  
}

// Set callbacks.
void initCallback() {
    mChatEngine.setEngineCallback(mAIChatEngineCallback); 
}

// Start a conversation. 
String mUserId = "XXX"; // The ID of the user who joins the conversation. We recommend using the user ID in your business system. 
String mAgentId = "XXX"; // The ID of the AI agent created in the console.
String mSessionId = "XXX";// The ID of the conversation session. If empty, the session ID defaults to a concatenation of userId and agentId. 
String mAgentRegion = "XXX";// The region where the AI agent is deployed.
mChatEngine.startChat(
    new ARTCAIChatEngine.ARTCAIChatUserInfo(mUserId, ""),
    new ARTCAIChatEngine.ARTCAIChatAgentInfo(mAgentId, mAgentRegion), mSessionId);



// Send a text message.
mChatEngine.sendMessage(new ARTCAIChatEngine.ARTCAIChatSendMessageRequest(requestId, ARTCAIChatEngine.ARTCAIChatMessageType.Text, message.text), new ARTCAIChatEngine.IARTCAIChatMessageCallback() {
    @Override
    public void onSuccess(ARTCAIChatEngine.ARTCAIChatMessage data) {
        // Handle successful message sending. 
    }
    @Override
    public void onFailure(ARTCAIChatEngine.ARTCAIChatMessage data, ARTCAIChatEngine.ARTCAIChatError error) {
        // Handle failed message sending.
    }
});

// Start capturing voice input when the user pushes the button to talk. 
mChatEngine.startPushVoiceMessage(new ARTCAIChatEngine.ARTCAIChatSendMessageRequest(requestId, ARTCAIChatEngine.ARTCAIChatMessageType.Voice, ""));

// End the capturing of voice input.
mChatEngine.finishPushVoiceMessage(new ARTCAIChatEngine.IARTCAIChatMessageCallback() {
    @Override
    public void onSuccess(ARTCAIChatEngine.ARTCAIChatMessage data) {
        // Handle successful voice message sending.
    }
});

// Read out the text message. 
mChatEngine.startPlayMessage(message, voiceId, new ARTCAIChatEngine.IARTCAIChatMessageCallback() {
    @Override
    public void onSuccess(ARTCAIChatEngine.ARTCAIChatMessage data) {
        Logger.i("startPlayMessage success");

    }
    @Override
    public void onFailure(ARTCAIChatEngine.ARTCAIChatMessage data, ARTCAIChatEngine.ARTCAIChatError error) {
        Logger.e("startPlayMessage failed  error.errorCode: " + error.errorCode + ", error.errorMsg" + error.errorMsg);

    }
});

// Handle callback events. This example shows only some core callback events. 
ARTCAIChatEngine.IARTCAIChatEngineCallback mAIChatEngineCallback = new ARTCAIChatEngine.IARTCAIChatEngineCallback(){

    @Override
    public void onRequestAuthToken(String userId, ARTCAIChatEngine.IARTCAIChatAuthTokenCallback callback) {
        // Required. Call generateMessageChatToken via the app server or business server to get the token.
        // AICall SDK uses the token for authentication.
        ARTCAIChatEngine.ARTCAIChatAuthToken auth = new ARTCAIChatEngine.ARTCAIChatAuthToken(jsonObject);// jsonObject is obtained from the business server.
        callback.onSuccess(auth);
    }

    @Override
    public void onErrorOccurs(ARTCAIChatEngine.ARTCAIChatError error, String requestId) {
        //  Callback for errors.
    }

    @Override
    public void onEngineStateChange(ARTCAIChatEngine.ARTCAIChatEngineState oldState, ARTCAIChatEngine.ARTCAIChatEngineState newState) {
        // Callback for engine status.
    }



    @Override
    public void onReceivedMessage(ARTCAIChatEngine.ARTCAIChatMessage message) {
        // Callback for received messages.
    }

    @Override
    public void onUserMessageUpdated(ARTCAIChatEngine.ARTCAIChatMessage message) {
        // Callback for updated messages.
    }

    @Override
    public void onAgentResponseStateChange(ARTCAIChatEngine.ARTCAIChatAgentState agentState, String requestId) {
        // Callback for agent status changes. 
    }

    @Override
        public void onMessagePlayStateChange(ARTCAIChatEngine.ARTCAIChatMessage message, ARTCAIChatEngine.ARTCAIChatMessagePlayState state) {
            // Callback for message readout status.
        }
    };