Android
The DataSapien Mobile SDK is available for iOS and Android native apps. Android and iOS SDKs provide the same set of functionality.
Step 1: Register DataSapien project
Before you can add Mobile SDK to your app, you need to create your account and log into the Orchestrator using your registered domain.
Your authentication keys and host URLs will be provided after registration. You can obtain the required configuration keys by contacting the DataSapien team.
The Android SDK is available via Maven and can be added to any Gradle-based project. The DataSapien Android Mobile SDK is developed using Kotlin.
Prerequisites
- Android Studio (latest stable version)
- Minimum SDK: 26 (Android 8.0)
- Target SDK: 36 (Android 15)
- Java 17 or higher
- Gradle 8.0 or higher
Step 2: Add Repository
Add the DataSapien Maven repository to your project's settings.gradle.kts:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven {
url = uri("https://pkgs.dev.azure.com/datasapien/eac79fac-a890-4439-bfe6-0dc07b25c7a6/_packaging/datasapien-android-sdk/maven/v1")
}
}
}
Step 3: Add Dependencies
Add the SDK to your app/build.gradle.kts:
dependencies {
implementation("com.datasapien:datasapien-sdk:1.0.6")
// Optional: Health module for health data collection
implementation("com.datasapien:datasapien-health-module:1.0.6")
}
Note: Only add the health module if you need health data collection features. If you use the health module, you'll need to add health permissions to your AndroidManifest.xml (see Step 3.2 below).
Step 4: Initialize SDK
3.1 Create Application Class
Create an Application class to initialize the SDK:
import android.app.Application
import com.datasapien.dssdk.DataSapien
import com.datasapien.dssdk.common.config.DataSapienConfig
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
val config = DataSapienConfig.Builder()
.setAuth(
authUrl = "<YOUR_AUTH_URL>",
authClientId = "<YOUR_CLIENT_ID>",
authScope = "<YOUR_AUTH_SCOPE>",
authClientSecret = "<YOUR_CLIENT_SECRET>"
)
.setHostUrl("<YOUR_HOST_URL>")
.setMediaUrl("<YOUR_MEDIA_URL>")
.build()
DataSapien.initialize(this, config)
}
}
3.2 Update AndroidManifest.xml
Add your Application class and required components:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- Required permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<!-- Optional: For installed_apps MeData collection -->
<!-- Option 1: Query all packages (requires Google Play approval) -->
<uses-permission
android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
<!-- Option 2: Query specific packages (recommended) -->
<queries>
<package android:name="com.example.app1" />
<package android:name="com.example.app2" />
<!-- Add specific package names you want to query -->
</queries>
<!-- Optional: Health data permissions (only if using health-module) -->
<uses-permission android:name="android.permission.health.READ_HEIGHT" />
<uses-permission android:name="android.permission.health.READ_WEIGHT" />
<uses-permission android:name="android.permission.health.READ_STEPS" />
<uses-permission android:name="android.permission.health.READ_TOTAL_CALORIES_BURNED" />
<uses-permission android:name="android.permission.health.READ_BASAL_METABOLIC_RATE" />
<uses-permission android:name="android.permission.health.READ_ACTIVE_CALORIES_BURNED" />
<uses-permission android:name="android.permission.health.READ_HEART_RATE" />
<uses-permission android:name="android.permission.health.READ_SLEEP" />
<uses-permission android:name="android.permission.health.READ_OXYGEN_SATURATION" />
<uses-permission android:name="android.permission.health.READ_RESTING_HEART_RATE" />
<uses-permission android:name="android.permission.health.READ_VO2_MAX" />
<application
android:name=".MyApplication"
... >
<!-- Required: OAuth redirect activity -->
<activity
android:name="com.datasapien.dssdk.managedapi.ui.OAuthRedirectActivity"
android:exported="true">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="<YOUR_OAUTH_REDIRECT_HOST>"
android:pathPrefix="<YOUR_OAUTH_PATH>"
android:scheme="https" />
</intent-filter>
</activity>
<!-- Required: LlamaCpp service for on-device LLM inference -->
<service
android:name="com.datasapien.dssdk.intelligence.engine.llama.LlamaCppService"
android:enabled="true"
android:exported="false"
android:process=":llm" />
</application>
</manifest>
Note about permissions:
- Health permissions: Only add if you're using
datasapien-health-module. These require Android Health Connect to be installed on the device. - QUERY_ALL_PACKAGES: Only needed if you want to collect installed apps data. This requires special approval from Google Play. Alternatively, use the
<queries>block to query specific packages (recommended).
3.3 Setup SDK
After initialization, call setup() to complete the SDK configuration:
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.launch
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
lifecycleScope.launch {
DataSapien.setup(this@MainActivity)
.onSuccess {
// SDK is ready to use
}
.onFailure { error ->
// Handle setup error
}
}
}
}
You can obtain the required configuration keys by contacting the DataSapien team. We recommend calling DataSapien.setup() at each app launch because the SDK fetches only optimized deltas.