> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-docs-agent-in-group-react-v6.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Setup

> Setup — CometChat documentation.

### Get your Application Keys

[Signup for CometChat](https://app.cometchat.com) and then:

1. Create a new app
2. Head over to the **API Keys** section and note the **Auth Key**, **App ID** & **Region**

<Note>
  Minimum Requirement

  * Android API Level 21
  * Androidx Compatibility
</Note>

### Add the CometChat Dependency

### Gradle

First, add the repository URL to the **project level**`build.gradle` file in the `repositories` block under the `allprojects` section:

```java theme={null}
allprojects {
  repositories {
    maven {
      url "https:__dl.cloudsmith.io_public_cometchat_cometchat-pro-android_maven_"
    }
  }
}
```

Then, add CometChat to the **app level**`build.gradle` file in the `dependencies` section.

```java theme={null}
dependencies {
  implementation 'com.cometchat:pro-android-chat-sdk:2.4.2'
}
```

<Note>
  v2.4+ onwards, Voice & Video Calling functionality has been moved to a separate library. In case you plan to use the calling feature, please add the Calling dependency `implementation 'com.cometchat:pro-android-calls-sdk:2.1.1'` in the dependencies section of the app-level `build.gradle` file.
</Note>

Finally, add the below lines `android` section of the **app level** gradle file.

```java theme={null}
android {
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
```

## Initialize CometChat

The `init()` method initializes the settings required for CometChat.

The `init()` method takes the below parameters:

1. `context` - Application Context of the Android app.
2. `appId` - You CometChat App ID
3. `appSettings` - An object of the `AppSettings` class can be created using the `AppSettingsBuilder` class.

The `AppSettings` class allows you to configure two settings:

1. Region - The region where the app was created
2. [Presence Subscription](/sdk/android/2.0/user-presence)

We suggest you call the `init()` method on app startup.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    private String appID = "APP_ID"; // Replace with your App ID
    private String region = "REGION"; // Replace with your App Region ("eu" or "us")

    AppSettings appSettings=new AppSettings.AppSettingsBuilder().subscribePresenceForAllUsers().setRegion(region).build();

    CometChat.init(this, appID,appSettings, new CometChat.CallbackListener<String>() {
      @Override
      public void onSuccess(String successMessage) {
        Log.d(TAG, "Initialization completed successfully");
      }

      @Override
      public void onError(CometChatException e) {
        Log.d(TAG, "Initialization failed with exception: " + e.getMessage());
      }
    });
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val appID:String="APP_ID"  // Replace with your App ID
    val region:String="REGION"  // Replace with your App Region ("eu" or "us")
       
    AppSettings appSetting = AppSettings.AppSettingsBuilder().setRegion(region).subscribePresenceForAllUsers().build();   

    CometChat.init(this,appID,appSetting, object : CometChat.CallbackListener<String>() {
     override fun onSuccess(p0: String?) {
        Log.d(TAG, "Initialization completed successfully")
      }

      override fun onError(p0: CometChatException?) {
        Log.d(TAG, "Initialization failed with exception: " + p0?.message)
      }
     })
    ```
  </Tab>
</Tabs>

| Parameter    | Description                          |
| ------------ | ------------------------------------ |
| `this`       | Android context for your application |
| `appID`      | CometChat App ID                     |
| `appSetting` | An object of the AppSettings class.  |
