# Triton Digital® Mobile SDK — Android Sample

This project is a runnable sample application that demonstrates how to integrate and use the
**Triton Digital® Mobile SDK for Android**. It shows the most common use cases — live station
playback, on-demand stream playback, multi-station switching, side-band metadata (SBM) and cue
points, cue-point history, Google Cast, and on-demand advertising (banners and interstitials).

The sample links against the SDK as a packaged `.aar` (see [How the SDK is referenced](#how-the-sdk-is-referenced)),
so it builds and runs exactly the way an external integrator would consume the SDK.

## Always on the latest versions

A core goal of this SDK — and of this sample — is to stay current with the latest Android tooling
and dependencies, so your app benefits from the newest platform features, performance improvements,
and security fixes. Both the SDK and this sample are kept up to date with:

- the **latest Android Gradle Plugin and Gradle** releases,
- the **latest compile/target SDK** (API level), validated each release,
- **Media3 / ExoPlayer** — the current, actively maintained playback stack
- the **latest Google Play Services** (Cast, Base, Analytics) and AndroidX libraries.

Dependency versions are centralized in a **Gradle version catalog** (`gradle/libs.versions.toml`)
to make staying current straightforward.

## Tooling & versions

| Component | Version |
| --- | --- |
| Triton Android SDK | 3.6.2 |
| Min SDK | API 23 (Android 6.0 Marshmallow) |
| Compile / Target SDK | API 37 |
| Java | 17 |
| Gradle | 9.5.1 |
| Android Gradle Plugin | 9.2.1 |
| Media3 / ExoPlayer | 1.10.1 |
| AndroidX AppCompat | 1.7.1 |

> These are the versions this sample was released with. The SDK and sample track the latest stable
> releases, so newer versions may apply to later SDK builds.

## Prerequisites

- [Android Studio](https://developer.android.com/studio) (latest stable release recommended)
- **JDK 17** (bundled with recent Android Studio releases)
- An Android device or emulator running **Android 6.0 (API 23) or newer**

## Getting started

Open the project in Android Studio (**File → Open**, then select this folder) and click **Run**

## How the SDK is referenced

The SDK ships as a single `.aar` located in `sample/libs/`. The sample resolves it via a `flatDir`
repository, using the artifact name provided by the `TRITON_SDK` Gradle property
(set in this project's `gradle.properties`):

```kotlin
repositories {
    flatDir { dirs("libs") }
}

dependencies {
    api(mapOf("name" to (property("TRITON_SDK") as String), "ext" to "aar"))
    // … AndroidX, Media3, and Play Services dependencies (see sample/build.gradle.kts)
}
```

Because the SDK exposes some of its dependencies as `implementation` (not `api`), the app declares a
few of them directly (e.g. AppCompat, Media3, Play Services Cast). All of these are managed through
the version catalog in `gradle/libs.versions.toml`.

## What's inside

The sample is organized by feature, with one Activity per use case:

- **Player** — station playback, on-demand stream playback, multi-station switching, side-band
  metadata / cue points, cue-point history, and Google Cast.
- **Ads** — turnkey interstitial ads, custom-rendered ads with manual impression/click tracking,
  and companion banners.

## Documentation & support

For full API documentation and integration guidance, see the Triton Digital® Mobile SDK for Android
documentation included with the SDK release.
