---
title: Android and Android TV Libraries for RUM
description: >-
  Integrate popular Android libraries like Coil, OkHttp, and Retrofit with RUM
  for automatic monitoring of network requests and image loading.
breadcrumbs: >-
  Docs > RUM & Session Replay > Application Monitoring > Android and Android TV
  Monitoring > Android and Android TV Libraries for RUM
---

# Android and Android TV Libraries for RUM

This page lists integrated libraries you can use for Android and Android TV applications.

## Coil{% #coil %}

If you use Coil to load images in your application, see Datadog's [dedicated Coil library](https://github.com/DataDog/dd-sdk-android/tree/develop/integrations/dd-sdk-android-coil).

## Fresco{% #fresco %}

If you use Fresco to load images in your application, see Datadog's [dedicated Fresco library](https://github.com/DataDog/dd-sdk-android/tree/develop/integrations/dd-sdk-android-fresco).

## Glide{% #glide %}

If you use Glide to load images in your application, see Datadog's [dedicated Glide library](https://github.com/DataDog/dd-sdk-android/tree/develop/integrations/dd-sdk-android-glide).

## Jetpack Compose{% #jetpack-compose %}

If you use Jetpack Compose in your application, see Datadog's [dedicated Jetpack Compose library](https://github.com/Datadog/dd-sdk-android/tree/develop/integrations/dd-sdk-android-compose).

## RxJava{% #rxjava %}

If you use RxJava in your application, see Datadog's [dedicated RxJava library](https://github.com/Datadog/dd-sdk-android/tree/develop/integrations/dd-sdk-android-rx).

## Picasso{% #picasso %}

If you use Picasso, use it with the `OkHttpClient` that's been instrumented with the Datadog SDK for RUM and APM information about network requests made by Picasso.

{% tab title="Kotlin" %}

```kotlin
val picasso = Picasso.Builder(context)
   .downloader(OkHttp3Downloader(okHttpClient))
   // …
   .build()
Picasso.setSingletonInstance(picasso)
```

{% /tab %}

{% tab title="Java" %}

```java
final Picasso picasso = new Picasso.Builder(context)
   .downloader(new OkHttp3Downloader(okHttpClient))
   // …
   .build();
Picasso.setSingletonInstance(picasso);
```

{% /tab %}

## Retrofit{% #retrofit %}

If you use Retrofit, use it with the `OkHttpClient` that's been instrumented with the Datadog SDK for RUM and APM information about network requests made with Retrofit.

{% tab title="Kotlin" %}

```kotlin
val retrofitClient = Retrofit.Builder()
   .client(okHttpClient)
   // …
   .build()
```

{% /tab %}

{% tab title="Java" %}

```java
final Retrofit retrofitClient = new Retrofit.Builder()
   .client(okHttpClient)
   // …
   .build();
```

{% /tab %}

## SQLDelight{% #sqldelight %}

If you use SQLDelight in your application, see Datadog's [dedicated SQLDelight library](https://github.com/DataDog/dd-sdk-android/tree/develop/integrations/dd-sdk-android-sqldelight).

## SQLite{% #sqlite %}

Following SQLiteOpenHelper's [generated API documentation](https://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper), you only have to provide the implementation of the `DatabaseErrorHandler` -> `DatadogDatabaseErrorHandler` in the constructor.

Doing this detects whenever a database is corrupted and sends a relevant RUM error event for it.

{% tab title="Kotlin" %}

```kotlin
class <YourOwnSqliteOpenHelper>: SqliteOpenHelper(
                                 <Context>,
                                 <DATABASE_NAME>,
                                 <CursorFactory>,
                                 <DATABASE_VERSION>,
                                 DatadogDatabaseErrorHandler()) {
   // …

}
```

{% /tab %}

{% tab title="Java" %}

```java
public class <YourOwnSqliteOpenHelper> extends SqliteOpenHelper {
   public <YourOwnSqliteOpenHelper>(){
         super(<Context>,
               <DATABASE_NAME>,
               <CursorFactory>,
               <DATABASE_VERSION>,
               new DatadogDatabaseErrorHandler());
   }
}
```

{% /tab %}

## Apollo (GraphQL){% #apollo-graphql %}

If you use Kotlin Coroutines, see Datadog's [dedicated library with extensions for Apollo](https://github.com/DataDog/dd-sdk-android/tree/develop/integrations/dd-sdk-android-apollo) and [andndroid advanced network configuration](https://docs.datadoghq.com/real_user_monitoring/application_monitoring/android/advanced_configuration?tab=kotlin#apollo-instrumentation).

## Android TV (Leanback){% #android-tv-leanback %}

If you use the Leanback API to add actions into your Android TV application, see Datadog's [dedicated Android TV library](https://github.com/DataDog/dd-sdk-android/tree/develop/integrations/dd-sdk-android-tv).

## Kotlin Coroutines{% #kotlin-coroutines %}

If you use Kotlin Coroutines, see Datadog's [dedicated library with extensions for RUM](https://github.com/Datadog/dd-sdk-android/tree/develop/integrations/dd-sdk-android-rum-coroutines) and with [extensions for Trace](https://github.com/Datadog/dd-sdk-android/tree/develop/integrations/dd-sdk-android-trace-coroutines).

## Further Reading{% #further-reading %}

- [Source code for dd-sdk-android](https://github.com/DataDog/dd-sdk-android)
