Android

Clarifai’s Android SDK enables machine learning directly on your device, bypassing the traditional requirement of internet connectivity and extensive computing power. It makes it easy to use image and video recognition on device and in real-time.

Android SDK

The Android SDK is currently available. You can get more information on installing the SDK here

Getting Started On Android

In order to run the SDK, you will need a Clarifai account. Please create one here before proceeding with this guide.

Clarifai Android SDK supports applications running on Android API 21 (Version 5.0 “Lollipop”), or later.

Install the SDK with an *.aar

Much of the Android SDK is built with Kotlin. As such, add the following to the project-level build.gradle:

buildscript {
ext.kotlin_version = "1.3.21"
ext.kotlin_coroutine_version = '1.1.1'
...
dependencies {
...
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

Next, place the *.aar file into the modules's libs folder of your application, creating one if necessary. In the app-level build.gradle file, add the following dependencies:

repositories {
flatDir {
dirs 'libs'
}
}
...
dependencies {
...
implementation (name:'SDK_FILE_NAME', ext:'aar')
implementation 'android.arch.lifecycle:extensions:1.1.1'
implementation 'com.android.volley:volley:1.1.0'
implementation 'com.google.protobuf:protobuf-java:3.5.0'
implementation 'com.google.protobuf:protobuf-java-util:3.4.0'
implementation 'com.loopj.android:android-async-http:1.4.9'
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutine_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutine_version"
...
}

replacing SDK_FILE_NAME, with the name of the library(without aar extension) added to the /app/libs folder in the previous step.

Start the SDK

The Clarifai SDK is initialized by calling Clarifai.start(applicationContext, apiKey); within the com.clarifai.clarifai_android_sdk.core.Clarifai package. We recommend starting it when your app has finished launching, but that is not absolutely required. Furthermore, work is offloaded to background threads, so there should be little to no impact on the launching of your app.

js
python
java
csharp
objective-c
php
cURL
// Only for the Android SDK

Add Device Inputs with SDK

The SDK is built around a simple idea. You give inputs (images) to the library and it returns predictions (concepts). You need to add inputs to make predictions on it.

All inputs are created from a DataAsset object in the Android SDK. A Data Asset is a container for the asset in question, plus metadata related to it. You can create a DataAsset initialized with an Image on Device or from a URL as shown in the example below.

js
python
java
csharp
objective-c
php
cURL
// Only for the Android SDK

Load Models On Device

Clarifai has a variety of Pre-Built Models to predict against. However, only the General Model is readily available within the SDK. For access to other models please contact sales@clarifai.com. The sample code below shows how to load the General Model and make a prediction against it.

js
python
java
csharp
objective-c
php
cURL
// Only for the Android SDK

Predict On Device

Just as with our API, you can use the predict functionality on device with any of our available Pre-Built Models. Predictions generate outputs. An output has a similar structure to an input. It contains a data asset and concepts. The concepts associated with an output contain the predictions and their respective score (degree of confidence).

Note that the prediction results from pre-built models on the SDK may differ from those on the API. Specifically, there may be a loss of accuracy up to 5% due to the conversion of the models that allow them to be compact enough to be used on lightweight devices. This loss is expected within the current industry standards.

js
python
java
csharp
objective-c
php
cURL
// Only for the Android SDK