> For the complete documentation index, see [llms.txt](https://docs.taptalk.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.taptalk.io/meettalk-sdk-documentation/meettalk-android/get-started.md).

# Get Started

## Quick Start

MeetTalk Android SDK provides all of the features available in the PowerTalk SDK, with the addition of voice and video call feature. This page presents a brief overview of the SDK’s structure and abilities, then lets you go through the preliminary steps of implementing the SDK in your own app.

## Configure and Initialize TapTalk.io Android SDK

The first step to configure MeetTalk SDK will be the same as configuring PowerTalk SDK, if you have completed this step, you can [skip to Step 2](#step-2-install-meettalk-sdk).

#### **Step 1: Create a new application from your dashboard**

**1.** Login to [TapTalk.io Dashboard](https://taptalk.io/), then choose **Development** -> **Apps**

![](/files/-MHKvQJYwokZj2SvRd6U)

**2**. Click **New App** Button, input **App Name** and choose **Platform**, and then click **Create New App** Button.

![](/files/-MHKxC_cD1-kv3lPxiSk)

**3.** A pop-up dialog will be shown with provided **App Key ID** & **App Key Secret**

![](/files/-MHKxQLyhxLOunGM05hx)

{% hint style="warning" %}
**Note:** Please remember to save your **App Key ID** & your **App Key Secret** because it will only be shown once and will be used in TapTalk.io initialization
{% endhint %}

#### Step 2: Install **MeetTalk** SDK

To start, open your Android project and add the following repositories to your **top-level** build.gradle file.Project build.gradle

{% code title="build.gradle (project)" %}

```javascript
allprojects {
   repositories {
      ...
      maven { url "https://jitpack.io" }
      maven { url "https://s3.amazonaws.com/repo.commonsware.com" }
      maven { url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases" }
   }
}
```

{% endcode %}

Please also note that the minimum SDK version to install MeetTalk SDK is **23**.

Then add the following dependency to your **app-level** build.gradle:

{% code title="build.gradle (:app)" %}

```javascript
android {
    ...
    defaultConfig {
        ...
        minSdkVersion 23
    }
}

dependencies {
    implementation 'com.github.taptalk-io:meettalk-android:1.2.8'
}
```

{% endcode %}

{% hint style="info" %}
You can check a more updated version release notes of the SDK [here](https://github.com/taptalk-io/meettalk-android/releases).
{% endhint %}

{% hint style="warning" %}
**Note:** In the app build.gradle file, make sure that your project is using supported Java 8 language features like below
{% endhint %}

{% code title="build.gradle (:app)" %}

```javascript
android {
    
    ...

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
```

{% endcode %}

#### Step 3: Initialize MeetTalk in your Application class

In order to use MeetTalk, you must first initialize an instance by passing the `APP_ID`, `APP_SECRET`, `APP_ICON`, `APP_BASE_URL`, and `IMPLEMENTATION_TYPE` assigned to your application to the `init` method as a parameter. Generally, initialization is implemented in the **Application** class in your project.

{% hint style="warning" %}
**Note:** To get **BASE\_URL** you can follow our documentation on [how to get Base URL](/powertalk-chat-sdk-documentation/powertalk-server-api/base-url.md) on TapTalk.io
{% endhint %}

{% tabs %}
{% tab title="Java" %}

```java
MeetTalk.init(
  CONTEXT, 
  APP_KEY_ID, 
  APP_KEY_SECRET,            
  APP_ICON, 
  APP_NAME, 
  APP_BASE_URL,            
  IMPLEMENTATION_TYPE, 
  meetTalkListener);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
MeetTalk.init(
  CONTEXT, 
  APP_KEY_ID, 
  APP_KEY_SECRET,            
  APP_ICON, 
  APP_NAME, 
  APP_BASE_URL,            
  IMPLEMENTATION_TYPE, 
  meetTalkListener)
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**CONTEXT**: (Context) application context\
**APP\_KEY\_ID**: (String) application key ID\
**APP\_KEY\_SECRET**: (String) application key Secret\
**APP\_ICON**: (int) drawable resource ID\
**APP\_NAME**: (String) your application name\
**APP\_BASE\_URL**: (String) base API URL\
**IMPLEMENTATION\_TYPE**: (enum) found in TapTalkImplentationType, more detailed information below\
**meetTalkListener**: (MeetTalkListener) an interface to detect PowerTalk and MeetTalk Android SDK's delegates and callbacks
{% endhint %}

{% hint style="info" %}
**IMPLEMENTATION\_TYPE**\
TapTalkImplementationType consists of 3 types which are:\
\&#xNAN;**`TapTalkImplementationTypeUI`**: used for implementation with only TapUI\
\&#xNAN;**`TapTalkImplementationTypeCore`**: used for implementation with only TapCore\
\&#xNAN;**`TapTalkImplementationTypeCombine`**: used for implementation with both of TapCore and TapUI combined
{% endhint %}

{% hint style="warning" %}
**Note**: `MeetTalk.init()` will also initialize a TapTalk instance, so If you have previously used PowerTalk in your application and initializing TapTalk instance with `TapTalk.init()`, **replace `TapTalk.init()` with `MeetTalk.init()`** and put **MeetTalkListener** in the parameter instead of **TapListener**
{% endhint %}

#### Step 4: Authenticate to TapTalk.io

In order to use the abilities of the Android SDK in your client app, a TapTalk instance must be initiated in each client app through user authentication with TapTalk.io server. An authenticated user account allows the instance to communicate and interact with the server. To authenticate your user with the server, follow the instructions in [Authentication page](/powertalk-chat-sdk-documentation/powertalk-android/authentication.md).

### Setup FileProvider in your application

To enable file transfer through chat messages, you need to define FileProvider in your application's **AndroidManifest.xml** file, under the `<application>` tag.

{% code title="AndroidManifest.xml" %}

```markup
<application
    android:name=".YourApplication"
    ...>

    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="${applicationId}.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths" />
    </provider>

</application>
```

{% endcode %}

If your project already has defined paths, make sure the following paths exist in your paths xml file:

{% code title="your\_file\_paths.xml" %}

```markup
<paths>
    <files-path name="YourFilesPath" path="." />
    <external-path name="YourExternalPath" path="." />
    <cache-path name="YourCachePath" path="."/>
    <external-files-path name="YourExternalFilesPath" path="."/>
    <external-cache-path name="YourExternalCachePath" path="."/>
</paths>
```

{% endcode %}

### Initialize Google Places API Key (Optional)

To enable location search result preview while sending location message, a Google Places API Key is required. To obtain the API key for your application, you can check [the documentation](https://developers.google.com/places/web-service/get-api-key) provided by Google. To initialize, insert your obtained key using the `initializeGooglePlacesApiKey()` method.

{% tabs %}
{% tab title="Java" %}

```java
TapTalk.initializeGooglePlacesApiKey(GOOGLE_PLACES_API_KEY);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
TapTalk.initializeGooglePlacesApiKey(GOOGLE_PLACES_API_KEY)
```

{% endtab %}
{% endtabs %}

Your key also needs to be defined in your application's **AndroidManifest.xml** file, under the `<application>` tag.

{% code title="AndroidManifest.xml" %}

```markup
<application
    android:name=".YourApplication"
    ...>

    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="GOOGLE_PLACES_API_KEY" />

</application>
```

{% endcode %}

{% hint style="info" %}
**Parameters**\
**GOOGLE\_PLACES\_API\_KEY**: (String) Google Places API Key
{% endhint %}

### Enable Cleartext Traffic

To enable some features, such as sending link preview in messages, please enable `usesCleartextTraffic` in **AndroidManifest.xml** file.

{% code title="AndroidManifest.xml" %}

```markup
<application
    android:name=".YourApplication"
    ...
    android:usesCleartextTraffic="true">

    ...

</application>
```

{% endcode %}

### Initiate New Call

Initiating a call in MeetTalk requires data from **TAPRoomModel**. which will then be used to construct a conference data for the call. To initiate a call, use the `initiateNewConferenceCall` method from **MeetTalk** class.

You may also customize the outgoing call using the provided parameters.

{% tabs %}
{% tab title="Java" %}

```java
// Initiate a voice call (participants will enter call with video muted)
MeetTalk.initiateNewConferenceCall(ACTIVITY, ROOM);

// Initiate a call with custom audio/video state
MeetTalk.initiateNewConferenceCall(ACTIVITY, ROOM, START_WITH_AUDIO_MUTED, START_WITH_VIDEO_MUTED);

// Initiate a call with custom audio/video state and recipient display name
MeetTalk.initiateNewConferenceCall(ACTIVITY, ROOM, START_WITH_AUDIO_MUTED, START_WITH_VIDEO_MUTED, RECIPIENT_DISPLAY_NAME);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
// Initiate a voice call (participants will enter call with video muted)
MeetTalk.initiateNewConferenceCall(ACTIVITY, ROOM)

// Initiate a call with custom audio/video state
MeetTalk.initiateNewConferenceCall(ACTIVITY, ROOM, START_WITH_AUDIO_MUTED, START_WITH_VIDEO_MUTED)

// Initiate a call with custom audio/video state and recipient display name
MeetTalk.initiateNewConferenceCall(ACTIVITY, ROOM, START_WITH_AUDIO_MUTED, START_WITH_VIDEO_MUTED, RECIPIENT_DISPLAY_NAME)
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**ACTIVITY**: (Activity) The app's current foreground activity, which will be used to launch the call screen\
**ROOM**: (TAPRoomModel) the chat room where the call will be initiated\
**START\_WITH\_AUDIO\_MUTED**: (boolean) initial state of the participants' microphone\
**START\_WITH\_VIDEO\_MUTED**: (boolean) initial state of the participants' front camera\
**RECIPIENT\_DISPLAY\_NAME**: (String) custom display name/nickname for the recipient that will be displayed during the call
{% endhint %}

When this method is called in personal chat room, the active user will start and enter the call, and send a notification to the recipient, which will then receive an incoming call. The recipient will join the voice call once the incoming call is answered.

Participants will still be able to mute/unmute their microphone/camera during the call regardless of the **START\_WITH\_AUDIO\_MUTED** and **START\_WITH\_VIDEO\_MUTED** parameter.

{% hint style="warning" %}
**Note**: Initiating a call is currently only available in **personal** chat rooms.
{% endhint %}

### Request Enable Notifications to User

In order for the recipient's device to receive incoming call from another device, the active user is required to enable notifications from the app. MeetTalk provides a helper method to direct the user to the app's Notification Settings page to request the user to enable the app's notifications to receive calls.

{% tabs %}
{% tab title="Java" %}

```java
// Opens the app's general notification settings page
MeetTalk.openAppNotificationSettings(CONTEXT);

// Opens MeetTalk Incoming Call notification channel settings page
MeetTalk.openAppIncomingCallNotificationChannelSettings(CONTEXT);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
// Opens the app's general notification settings page
MeetTalk.openAppNotificationSettings(CONTEXT)

// Opens MeetTalk Incoming Call notification channel settings page
MeetTalk.openAppIncomingCallNotificationChannelSettings(CONTEXT)
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Parameters**\
**CONTEXT**: (Context) The app's context or current foreground activity required to open the notification settings page
{% endhint %}

{% hint style="info" %}
**Note**: You can check a more complete implementation guide in the [PowerTalk Android](/powertalk-chat-sdk-documentation/powertalk-android.md) section.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.taptalk.io/meettalk-sdk-documentation/meettalk-android/get-started.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
