> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plaud.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Android Starter App

> Build a branded Android app that connects to Plaud devices in minutes using the Android starter app.

This guide walks through the process of building a native Android [Starter App](/plaud-embedded/starter-app-specs) that:

1. Connects to Plaud devices
2. Syncs recordings from Plaud device to mobile phone
3. Uploads recordings from your users' mobile phone to Plaud's file storage
4. Transcribes recordings with the [Transcription API](/plaud-embedded/transcription-api-overview)

<Frame>
  <img src="https://mintcdn.com/plaud/E1lTvtruOMzEP-O1/assets/starter-app.png?fit=max&auto=format&n=E1lTvtruOMzEP-O1&q=85&s=2f13d6a57c8f8d6ffd34fb9f37fb1ebf" alt="starter-app" width="1600" height="737" data-path="assets/starter-app.png" />
</Frame>

## Onboard to the Plaud Developer Platform

Sign in to the [Plaud Developer Portal](https://portal.plaud.ai/) (It's completely free with a generous device connection limit and transcription usage).

Create an **Embedded SDK Application** to receive your **Client ID** and **Secret Key**.

<Frame>
  <img src="https://mintcdn.com/plaud/E1lTvtruOMzEP-O1/assets/app-created.png?fit=max&auto=format&n=E1lTvtruOMzEP-O1&q=85&s=7ae9480fa729f0828e61d35c750d8ba3" alt="app credentials" width="1426" height="667" data-path="assets/app-created.png" />
</Frame>

## Set Up the Starter App

<Tip>
  **Try the Plaud Embedded Skill** to have your coding agent help you through your Starter App deployment.

  ```bash theme={"system"}
  npx skills add Plaud-AI/plaud-embedded-skills
  ```

  Visit our [GitHub repo](https://github.com/Plaud-AI/plaud-embedded-skills.git) for more details on the skill.
</Tip>

### Prerequisites

* Android Studio (JDK 17)
* minSdk 21 (Android 5.0+), compileSdk 34
* A **physical Android device** — the SDK libraries are `arm64-v8a`/`armeabi-v7a`, Android simulators are not supported
* A Plaud device for end-to-end testing

### Clone the starter app

You can find the GitHub repository for the [starter app here](https://github.com/Plaud-AI/plaud-sdk-public).

```bash theme={"system"}
git clone https://github.com/Plaud-AI/plaud-sdk-public.git
cd plaud-sdk-public/android
```

<Note>
  Install [Android Studio](https://developer.android.com/) to build and test your Android Starter app.

  ```bash theme={"system"}
  brew install --cask android-studio
  ```
</Note>

### Retrieve a user token

The `USER_ACCESS_TOKEN` is the per-user JWT your backend mints by calling `POST /open/partner/users/access-token`. See the [Authorization API reference](/plaud-embedded/auth-api-overview) for the full exchange flow.

### Configure credentials

After navigating to the `/android` directory, create a `local.properties` file (gitignored) and add the **user token, client ID, and API key** (if using transcription).

```bash local.properties theme={"system"}
sdk.dir=/path/to/your/Android/sdk

# Required for SDK initialization
PLAUD_USER_ACCESS_TOKEN=your-jwt-token

# Required for Transcription API (optional, not needed for device features)
PLAUD_CLIENT_ID=your-client-id
PLAUD_API_KEY=your-api-key
```

### (Optional) Apply branding

Four places control the entire visual identity:

#### App Name

Navigate to `app/src/main/res/values/strings.xml`. You can modify the app name, and other text on the welcome screen.

```xml strings.xml theme={"system"}
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Plaud Template</string>

    <!-- Onboarding -->
    <string name="welcome_app_name">App name</string>
    <string name="get_started">Get Started</string>
    <string name="connect_later">Connect device later</string>
```

#### App icon

Create new image assets directly in Android Studio. Right-click `res`, then go to `New > Image Asset`.

<Frame>
  <img src="https://mintcdn.com/plaud/CZS9FFE1Vm6qvvMx/assets/android-image-asset.png?fit=max&auto=format&n=CZS9FFE1Vm6qvvMx&q=85&s=9c9c00ff6b96d7efae89222c85219282" alt="android-studio image asset" width="2276" height="1520" data-path="assets/android-image-asset.png" />
</Frame>

#### Theme colors

In `res/values/colors.xml`, you have full control over the starter app's primary colors and color palette.

```xml colors.xml theme={"system"}
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Theme colors -->
    <color name="bg_primary">#F9F9F9</color>
    <color name="text_primary">#1F1F1F</color>
    <color name="text_secondary">#A3A3A3</color>
    <color name="separator">#EBEBEB</color>
```

## Run & test with a real device

Open **Android Studio**, and wait for gradle to finish building the app.

Once indexing and build is finished, **connect your physical Android device** and run the app.

<Frame>
  <img src="https://mintcdn.com/plaud/CZS9FFE1Vm6qvvMx/assets/android-studio.png?fit=max&auto=format&n=CZS9FFE1Vm6qvvMx&q=85&s=aaedfe86223763b075bb2d77a88b235d" alt="android studio" width="2206" height="1128" data-path="assets/android-studio.png" />
</Frame>

Verify app launches, device pairs, recording syncs, and transcript appears on your Android app.

<Warning>
  **Unbind your Plaud device after testing and before uninstalling the Starter App!**

  Plaud devices can only be bound to one application at a time (tied to your Partner Token). You will not be able to bind your Plaud device to another app (or the Plaud App) before unbinding from the Starter App.
</Warning>

## Publishing to the Google Play Store

<Steps>
  <Step title="Sign up for a Google Play Developer account">
    If you don't have a [Google Play Developer Account](https://play.google.com/console/signup), you will need to sign up to publish your app to the Play Store .

    <Note>
      There is a one-time \$25 registration fee, and a verification process that may take a few days.
    </Note>
  </Step>

  <Step title="Set a unique application ID">
    In `app/build.gradle`, replace the template's application ID with your own **unique** reverse-domain identifier and bump the `compileSdk`. **Sdk 35** is the minimum version that Google Play will accept due to security and performance APIs that are only compatible with 35+.

    ```kotlin app/build.gradle theme={"system"}
      android {
        namespace 'com.plaud.template'// [!code --]
        namespace 'com.yourorg.yourapp'// [!code ++]
        compileSdk 34// [!code --]
        compileSdk 35// [!code ++]

        defaultConfig {
            applicationId "com.plaud.template"// [!code --]
            applicationId "com.yourorg.yourapp"// [!code ++]
            minSdk 21
            targetSdk 34// [!code ++]
    ```

    <Warning>
      Bump `versionCode` on every upload — Play Console rejects a build that reuses a `versionCode` already in the track.
    </Warning>
  </Step>

  <Step title="replace `com.plaud.template` with your new applicationId">
    You can use your editor's find and replace or this bash command to replace all strings in the `app/` directory.

    ```bash theme={"system"}
    rg -l 'com\.plaud\.template' app/ | xargs sed -i '' 's/com\.plaud\.template/com.yourorg.yourapp/g'
    ```
  </Step>

  <Step title="Generate an upload keystore">
    Play requires every build to be signed with a consistent upload key. In Android Studio, go to `Build > Generate Signed App Bundle / APK`, choose **Android App Bundle**, then `Create new...` to generate a keystore.

    <Frame>
      <img src="https://mintcdn.com/plaud/0ZOHZyXLP-M6r8MB/assets/android-key.png?fit=max&auto=format&n=0ZOHZyXLP-M6r8MB&q=85&s=8cbcf342f5eb91f2682ef44017432947" alt="android key" width="1820" height="1126" data-path="assets/android-key.png" />
    </Frame>

    <Warning>
      If you lose your key, you will have to go through Google's key reset process.
    </Warning>
  </Step>

  <Step title="Build a signed release bundle">
    Finish the `Build > Generate Signed App Bundle / APK` flow with the `release` build variant. Android Studio writes the bundle to `app/release/app-release.aab`.
  </Step>

  <Step title="Create your app in Play Console">
    In the [Google Play Console](https://play.google.com/console), select `Create app`, then set your app name, default language, app type, and free/paid status. The application ID from Step 2 is claimed when you upload your first bundle.
  </Step>

  <Step title="Upload to a testing track">
    Under `Testing > Internal testing`, create a release and upload your `.aab`.

    <Frame>
      <img src="https://mintcdn.com/plaud/0ZOHZyXLP-M6r8MB/assets/google-play-testing.png?fit=max&auto=format&n=0ZOHZyXLP-M6r8MB&q=85&s=e8739e8994f0d798be22e2a2c3c5efdd" alt="Internal Testing on Google Play" width="2480" height="1628" data-path="assets/google-play-testing.png" />
    </Frame>

    Add your testers by email or Google Group, then share the opt-in link with them.
  </Step>

  <Step title="Enable Internal App Sharing">
    Under the `Internal app sharing` tab, enable sharing. Allow your email list to access and download your app.

    <Frame>
      <img src="https://mintcdn.com/plaud/0ZOHZyXLP-M6r8MB/assets/google-play-sharing.png?fit=max&auto=format&n=0ZOHZyXLP-M6r8MB&q=85&s=12ecc6964af053cae4270d0054344fcc" alt="Internal Sharing on Google Play" width="2576" height="1558" data-path="assets/google-play-sharing.png" />
    </Frame>
  </Step>

  <Step title="Complete the store listing and content declarations">
    Work through the `Dashboard` checklist. Items to emphasize for a conversation capture app are:

    1. **Data safety**
    2. **Permissions declaration**: the SDK requires Bluetooth and (on Android 11 and below) location permissions to scan for and connect to Plaud devices.
    3. **Privacy policy**
    4. **Store listing assets** — app icon (512×512), feature graphic (1024×500), and at least two phone screenshots.
  </Step>

  <Step title="Publish!">
    Once the checklist is complete, submit your production release for review! Google's review typically takes a few days for a first submission.
  </Step>
</Steps>
