Skip to Content

Android

Native Android toolkit that integrates the Zing Fitness experience into your app. The SDK ships as an AAR (coach.zing:fitness-sdk) consumable via GitHub Packages.

GitHub repository: https://github.com/Muze-Fitness/fitness-coach-sdk-android 

Requirements

RequirementValue / Notes
Minimum Android version8.0 (API 26)
Compile SDK34+
Kotlin2.1.0
Dependency injectionHilt (com.google.dagger:hilt-android)
Maven credentialsGitHub Packages PAT with read:packages

Setup

Add the GitHub Packages Repository

Add the following to your settings.gradle or top-level build.gradle:

// settings.gradle or top-level build.gradle dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { url = uri("https://maven.pkg.github.com/Muze-Fitness/fitness-coach-sdk-android") val localProperties = java.util.Properties() val file = File(rootDir, "local.properties") if (file.exists()) { localProperties.load(file.inputStream()) } credentials { username = localProperties.getProperty("sdk_maven_read_username") ?: System.getenv("GITHUB_USER") password = localProperties.getProperty("sdk_maven_read_token") ?: System.getenv("GITHUB_TOKEN") } } } }

Create local.properties next to your top-level settings.gradle if it does not exist yet and provide the credentials:

sdk_maven_read_username=GITHUB_USERNAME sdk_maven_read_token=ghp_xxx_with_read_packages

Declare the Dependency

dependencies { implementation("coach.zing:fitness-sdk:<latest-version>") }

Replace <latest-version> with the version published in GitHub Packages (e.g. 1.0.3).

Enable Hilt

Add the Hilt plugin and dependencies to your app-level build.gradle:

plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("com.google.dagger.hilt.android") kotlin("kapt") // or id("com.google.devtools.ksp") } dependencies { implementation("com.google.dagger:hilt-android:2.56.1") kapt("com.google.dagger:hilt-android-compiler:2.56.1") // ksp("com.google.dagger:hilt-android-compiler:2.56.1") }

Create an Application Subclass

Create an Application subclass that extends SdkApplication:

@HiltAndroidApp class FitnessApp : SdkApplication()

Register it in AndroidManifest.xml:

<application android:name=".FitnessApp" ... />

Initialization

Initialize the SDK in your Application class:

class FitnessApp : SdkApplication() { override fun onCreate() { super.onCreate() ZingSdk.init() } }

Logout

When your user logs out, call the SDK logout method:

fun onLogout(scope: CoroutineScope) { scope.launch { ZingSdk.logout() // e.g. navigate to login or clear user data } }

Launching Zing Screens

You can open any major Zing screen explicitly via ZingSdkActivity.launch(context, StartingRoute.<Destination>).

Supported Destinations

  • StartingRoute.CustomWorkout
  • StartingRoute.AiAssistant
  • StartingRoute.WorkoutPlanDetails
  • StartingRoute.FullSchedule
  • StartingRoute.ProfileSettings
  • StartingRoute.HealthConnectPermissions (optional)

Example

button.setOnClickListener { ZingSdkActivity.launch(this, StartingRoute.AiAssistant) }

Health Connect (optional)

The SDK can show a Health Connect permissions screen and run background Health Connect sync.

Permissions

Add the following to your host app AndroidManifest.xml:

<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" /> <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_HEALTH" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

Boot receiver (restart sync after reboot)

Register the boot receiver inside <application>:

<receiver android:name="coach.zing.fitness.coach.broadcast.SdkHealthSyncBootReceiver" android:exported="false"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>

Health Connect permissions screen

ZingSdkActivity.launch(context, StartingRoute.HealthConnectPermissions)
Last updated on