# Get Started on Android

## Before You Begin

1. [Create and set up your Chartboost account](/en/monetization/get-started/)
2. Download and review the [Chartboost Sample App](https://github.com/ChartBoost/android-sdk-sample-java)

Amazon integration uses the same SDK as Android. These integration instructions apply to games for Google Play or the Amazon App Store.

## Minimum Supported Development Tools

| Software | Version |
| -------- | ------- |
| Minimum Supported Version | API 19 (Android 4.4 KitKat) |
| Compile Version | API 35 |
| Gradle | 8.2 |
| Kotlin | 1.9.21 |
| Recommended Java | 17 |

### Runtime Permissions

Refer to the [Android Developers documentation](https://developer.android.com/training/permissions/declaring){:target="_blank"} for details on how to declare and handle both normal and runtime permissions.

Required normal permissions:
- `android.permission.INTERNET`
- `android.permission.ACCESS_NETWORK_STATE`

Recommended optional runtime permissions (allows the SDK to handle calls that interrupt video playback):
- `android.permission.READ_PHONE_STATE`


## Setting Up Chartboost SDK

#### 1. Add the Chartboost repository and dependencies with the following code to your Gradle file.
```java 
repositories {
	mavenCentral()
	maven { url 'https://cboost.jfrog.io/artifactory/chartboost-ads/' }
}

dependencies {
	implementation 'com.chartboost:chartboost-sdk:9.13.0'
}

```

#### 2. Add the Google Play Services Library as a dependency of your project. When you use our latest SDK, you will need “play-services-base” and “play-services-ads-identifier”.
- The Google Play Services library has its own set of integration instructions, including additions to your Android Manifest and ProGuard configuration.
- Follow [Google’s instructions to integrate the Play Services Library](https://developers.google.com/android/guides/setup).
- You should then find something similar to the following two lines in your `build.gradle` file:

```java
implementation "com.google.android.gms:play-services-base:$project.ext.googlePlayServicesVersion"
implementation "com.google.android.gms:play-services-ads-identifier:$project.ext.googlePlayServicesVersion"
```

#### 3. Add the following attribute to activities in the `AndroidManifest.xml` file if you display Chartboost ads with multiple orientations in those activities. This will help smoothen video playback during orientation changes.

```java
android:configChanges="keyboardHidden|orientation|screenSize"
```

#### 4. Import the Chartboost SDK into any activity that uses Chartboost with the following:

<ul class="tab" data-tab="43ffa087-6d15-457a-a127-53412dc85c56" data-name="importCBSDK">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="43ffa087-6d15-457a-a127-53412dc85c56" data-name="importCBSDK">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">import</span> <span class="nn">com.chartboost.sdk.Chartboost</span> 
<span class="k">import</span> <span class="nn">com.chartboost.sdk.ads.Interstitial</span> 
<span class="k">import</span> <span class="nn">com.chartboost.sdk.ads.Rewarded</span> 
<span class="k">import</span> <span class="nn">com.chartboost.sdk.ads.Banner</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">com.chartboost.sdk.Chartboost</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.chartboost.sdk.ads.Interstitial</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.chartboost.sdk.ads.Rewarded</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.chartboost.sdk.ads.Banner</span><span class="o">;</span>
</code></pre></div></div>
</li>
  
</ul>


If you’re using additional SDK features, you’ll also want to import these activities:
<ul class="tab" data-tab="ac0ea6cb-55ce-4d40-a0a7-e2e44e8daf6d" data-name="importActivities">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="ac0ea6cb-55ce-4d40-a0a7-e2e44e8daf6d" data-name="importActivities">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">import</span> <span class="nn">com.chartboost.sdk.LoggingLevel</span> 
<span class="k">import</span> <span class="nn">com.chartboost.sdk.Analytics</span>
<span class="k">import</span> <span class="nn">com.chartboost.sdk.events.CacheError</span> 
<span class="k">import</span> <span class="nn">com.chartboost.sdk.events.CacheEvent</span> 
<span class="k">import</span> <span class="nn">com.chartboost.sdk.events.ClickError</span> 
<span class="k">import</span> <span class="nn">com.chartboost.sdk.events.ClickEvent</span> 
<span class="k">import</span> <span class="nn">com.chartboost.sdk.events.DismissEvent</span>
<span class="k">import</span> <span class="nn">com.chartboost.sdk.events.ExpirationEvent</span>
<span class="k">import</span> <span class="nn">com.chartboost.sdk.events.ImpressionEvent</span>
<span class="k">import</span> <span class="nn">com.chartboost.sdk.events.ShowError</span>
<span class="k">import</span> <span class="nn">com.chartboost.sdk.events.ShowEvent</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">com.chartboost.sdk.LoggingLevel</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.chartboost.sdk.Analytics</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.chartboost.sdk.events.CacheError</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.chartboost.sdk.events.CacheEvent</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.chartboost.sdk.events.ClickError</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.chartboost.sdk.events.ClickEvent</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.chartboost.sdk.events.DismissEvent</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.chartboost.sdk.events.ExpirationEvent</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.chartboost.sdk.events.ImpressionEvent</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.chartboost.sdk.events.ShowError</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">com.chartboost.sdk.events.ShowEvent</span><span class="o">;</span>
</code></pre></div></div>
</li>
  
</ul>



#### 5. Initialize Chartboost SDK
- `startWithAppId` must always be called on bootup, regardless of any other actions your app takes.
- Publishers should call the `addDataUseConsent` API from the Chartboost SDK and pass in the appropriate value for whether **consent exists**, **does not exist**, or **is unknown**. Publishers are required by the Terms of Service to obtain consent from their users before Chartboost will process any personal data and pass it to the Chartboost SDK via the above method. This method should be called before `startWithAppId`.
- `startWithAppId` doesn’t require Activity anymore. From version 8.0.1+, the context should be passed instead.

<div class="alert alert-info" role="alert">
  <b>Note:</b> Some Android API 21-24 (5.0-7.0) devices cannot initialize with Chartboost Monetization SDK due to their incompatibility with newer TLS versions and/or certificates.
</div>

<ul class="tab" data-tab="3768b5ae-e6cc-4578-8865-4b3c3fb47113" data-name="initializeCBSDK">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="3768b5ae-e6cc-4578-8865-4b3c3fb47113" data-name="initializeCBSDK">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">Chartboost</span><span class="p">.</span><span class="nf">startWithAppId</span><span class="p">(</span><span class="n">applicationContext</span><span class="p">,</span> <span class="n">appId</span><span class="p">,</span> <span class="n">appSignature</span><span class="p">)</span> <span class="p">{</span> <span class="n">startError</span> <span class="p">-&gt;</span>
	<span class="k">if</span> <span class="p">(</span><span class="n">startError</span> <span class="p">==</span> <span class="k">null</span><span class="p">)</span> <span class="p">{</span>
		<span class="nc">Toast</span><span class="p">.</span><span class="nf">makeText</span><span class="p">(</span><span class="k">this</span><span class="nd">@SelectionActivity</span><span class="p">.</span><span class="n">applicationContext</span><span class="p">,</span> <span class="s">"SDK is initialized"</span><span class="p">,</span> <span class="nc">Toast</span><span class="p">.</span><span class="nc">LENGTH_SHORT</span><span class="p">).</span><span class="nf">show</span><span class="p">()</span>
    	<span class="nf">checkKnownConsentStatus</span><span class="p">()</span>
	<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
		<span class="nc">Toast</span><span class="p">.</span><span class="nf">makeText</span><span class="p">(</span><span class="k">this</span><span class="nd">@SelectionActivity</span><span class="p">.</span><span class="n">applicationContext</span><span class="p">,</span> <span class="s">"SDK initialized with error: ${startError.code.name}"</span><span class="p">,</span> <span class="nc">Toast</span><span class="p">.</span><span class="nc">LENGTH_SHORT</span><span class="p">).</span><span class="nf">show</span><span class="p">()</span>
	<span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">Chartboost</span><span class="o">.</span><span class="na">startWithAppId</span><span class="o">(</span><span class="n">getApplicationContext</span><span class="o">(),</span> <span class="n">appId</span><span class="o">,</span> <span class="n">appSignature</span><span class="o">,</span> <span class="n">startError</span> <span class="o">-&gt;</span> <span class="o">{</span>
	<span class="k">if</span> <span class="o">(</span><span class="n">startError</span> <span class="o">==</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
		<span class="nc">Toast</span><span class="o">.</span><span class="na">makeText</span><span class="o">(</span><span class="nc">SelectionActivity</span><span class="o">.</span><span class="na">this</span><span class="o">,</span> <span class="s">"SDK is initialized"</span><span class="o">,</span> <span class="nc">Toast</span><span class="o">.</span><span class="na">LENGTH_SHORT</span><span class="o">).</span><span class="na">show</span><span class="o">();</span>
    	<span class="n">checkKnownConsentStatus</span><span class="o">();</span>
	<span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
		<span class="nc">Toast</span><span class="o">.</span><span class="na">makeText</span><span class="o">(</span><span class="nc">SelectionActivity</span><span class="o">.</span><span class="na">this</span><span class="o">,</span> <span class="s">"SDK initialized with error: "</span><span class="o">+</span><span class="n">startError</span><span class="o">.</span><span class="na">getCode</span><span class="o">().</span><span class="na">name</span><span class="o">,</span> <span class="nc">Toast</span><span class="o">.</span><span class="na">LENGTH_SHORT</span><span class="o">).</span><span class="na">show</span><span class="o">();</span>
	<span class="o">}</span>
<span class="o">});</span>
</code></pre></div></div>
</li>
  
</ul>


#### 6. Add your app ID and app signature
- Replace `appID` and `appSignature` with your app ID and app signature.
- Chartboost App ID is a unique App identifier in our systems, therefore it is **required to use a different Chartboost App ID per each app**.



## To Show a Banner Ad

Create a banner object without Mediation object:

<ul class="tab" data-tab="28ccdc52-d9b7-44ff-a97d-88312d4deb79" data-name="androidshowBanner">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="28ccdc52-d9b7-44ff-a97d-88312d4deb79" data-name="androidshowBanner">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">val</span> <span class="py">chartboostBanner</span> <span class="p">=</span> <span class="nc">Banner</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="s">"location"</span><span class="p">,</span> <span class="nc">Banner</span><span class="p">.</span><span class="nc">BannerSize</span><span class="p">.</span><span class="nc">STANDARD</span><span class="p">,</span> <span class="kd">object</span> <span class="err">: </span><span class="nc">BannerCallback</span> <span class="p">{</span>
    
	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdLoaded</span><span class="p">(</span><span class="n">cacheEvent</span><span class="p">:</span> <span class="nc">CacheEvent</span><span class="p">,</span> <span class="n">cacheError</span><span class="p">:</span> <span class="nc">CacheError</span><span class="p">?)</span> <span class="p">{</span>

	<span class="p">}</span>

	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdRequestedToShow</span><span class="p">(</span><span class="n">showEvent</span><span class="p">:</span> <span class="nc">ShowEvent</span><span class="p">)</span> <span class="p">{</span>

	<span class="p">}</span>
    
	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdShown</span><span class="p">(</span><span class="n">showEvent</span><span class="p">:</span> <span class="nc">ShowEvent</span><span class="p">,</span> <span class="n">showError</span><span class="p">:</span> <span class="nc">ShowError</span><span class="p">?)</span> <span class="p">{</span>

	<span class="p">}</span>
    
	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdClicked</span><span class="p">(</span><span class="n">clickEvent</span><span class="p">:</span> <span class="nc">ClickEvent</span><span class="p">,</span> <span class="n">clickError</span><span class="p">:</span> <span class="nc">ClickError</span><span class="p">?)</span> <span class="p">{</span>

	<span class="p">}</span>
    
	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onImpressionRecorded</span><span class="p">(</span><span class="n">impressionEvent</span><span class="p">:</span> <span class="nc">ImpressionEvent</span><span class="p">)</span> <span class="p">{</span>

	<span class="p">}</span>

	<span class="c1">// Optional: called when a cached ad expires or is evicted</span>
	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdExpired</span><span class="p">(</span><span class="n">expirationEvent</span><span class="p">:</span> <span class="nc">ExpirationEvent</span><span class="p">)</span> <span class="p">{</span>

	<span class="p">}</span>
<span class="p">},</span> <span class="k">null</span><span class="p">)</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">Banner</span> <span class="n">chartboostBanner</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Banner</span><span class="o">(</span><span class="n">context</span><span class="o">,</span> <span class="s">"location"</span><span class="o">,</span> <span class="nc">Banner</span><span class="o">.</span><span class="na">BannerSize</span><span class="o">.</span><span class="na">STANDARD</span><span class="o">,</span> <span class="k">new</span> <span class="nc">BannerCallback</span><span class="o">()</span> <span class="o">{</span>
	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdLoaded</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">CacheEvent</span> <span class="n">cacheEvent</span><span class="o">,</span> <span class="nd">@Nullable</span> <span class="nc">CacheError</span> <span class="n">cacheError</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdRequestedToShow</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ShowEvent</span> <span class="n">showEvent</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdShown</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ShowEvent</span> <span class="n">showEvent</span><span class="o">,</span> <span class="nd">@Nullable</span> <span class="nc">ShowError</span> <span class="n">showError</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdClicked</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ClickEvent</span> <span class="n">clickEvent</span><span class="o">,</span> <span class="nd">@Nullable</span> <span class="nc">ClickError</span> <span class="n">clickError</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onImpressionRecorded</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ImpressionEvent</span> <span class="n">impressionEvent</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="c1">// Optional: called when a cached ad expires or is evicted</span>
	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdExpired</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ExpirationEvent</span> <span class="n">expirationEvent</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>
<span class="o">},</span> <span class="kc">null</span><span class="o">);</span>
</code></pre></div></div>
</li>
  
</ul>


Create a banner object with mediation:

<ul class="tab" data-tab="9eae7c4a-ff67-451f-b7bb-03e9d59fc355" data-name="createBannerMediation">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="9eae7c4a-ff67-451f-b7bb-03e9d59fc355" data-name="createBannerMediation">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">val</span> <span class="py">mediation</span> <span class="p">=</span> <span class="nc">Mediation</span><span class="p">(</span><span class="s">"Mediation"</span><span class="p">,</span> <span class="s">"1.0.0"</span><span class="p">,</span> <span class="s">"1.0.0.1"</span><span class="p">)</span>
<span class="kd">val</span> <span class="py">chartboostBanner</span> <span class="p">=</span> <span class="nc">Banner</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="s">"location"</span><span class="p">,</span> <span class="nc">Banner</span><span class="p">.</span><span class="nc">BannerSize</span><span class="p">.</span><span class="nc">STANDARD</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span> <span class="n">mediation</span><span class="p">)</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">Mediation</span> <span class="n">mediation</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Mediation</span><span class="o">(</span><span class="s">"Mediation"</span><span class="o">,</span> <span class="s">"1.0.0"</span><span class="o">,</span> <span class="s">"1.0.0.1"</span><span class="o">);</span>
<span class="n">chartboostBanner</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Banner</span><span class="o">(</span><span class="n">context</span><span class="o">,</span> <span class="s">"location"</span><span class="o">,</span> <span class="nc">Banner</span><span class="o">.</span><span class="na">BannerSize</span><span class="o">.</span><span class="na">STANDARD</span><span class="o">,</span> <span class="n">callback</span><span class="o">,</span> <span class="n">mediation</span><span class="o">);</span>
</code></pre></div></div>
</li>
  
</ul>


Attach the banner to a holder. The banner object is extending FrameLayout and needs to be attached to the view to be displayed on the screen.

<ul class="tab" data-tab="d8493e0d-eea1-4797-b72d-ab1b077ab36f" data-name="bannerHolder">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="d8493e0d-eea1-4797-b72d-ab1b077ab36f" data-name="bannerHolder">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">val</span> <span class="py">bannerHolder</span> <span class="p">=</span> <span class="n">findViewById</span><span class="p">&lt;</span><span class="nc">RelativeLayout</span><span class="p">&gt;(</span><span class="nc">R</span><span class="p">.</span><span class="n">id</span><span class="p">.</span><span class="n">example_banner_holder</span><span class="p">).</span><span class="nf">apply</span> <span class="p">{</span>
	<span class="nf">addView</span><span class="p">(</span><span class="n">chartboostBanner</span><span class="p">)</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">RelativeLayout</span> <span class="n">bannerHolder</span> <span class="o">=</span> <span class="n">findViewById</span><span class="o">(</span><span class="no">R</span><span class="o">.</span><span class="na">id</span><span class="o">.</span><span class="na">example_banner_holder</span><span class="o">);</span>
<span class="n">bannerHolder</span><span class="o">.</span><span class="na">addView</span><span class="o">(</span><span class="n">chartboostBanner</span><span class="o">);</span>
</code></pre></div></div>
</li>
  
</ul>


CacheBanner:

<ul class="tab" data-tab="5f82b50f-ed8b-4baa-b1c2-5236b17d7eae" data-name="androidcacheBanner">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="5f82b50f-ed8b-4baa-b1c2-5236b17d7eae" data-name="androidcacheBanner">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">chartboostBanner</span><span class="p">.</span><span class="nf">cache</span><span class="p">()</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">chartboostBanner</span><span class="o">.</span><span class="na">cache</span><span class="o">();</span>
</code></pre></div></div>
</li>
  
</ul>


Show banner:

<ul class="tab" data-tab="c62ceb6c-d020-46bb-977d-d647bee0d1be" data-name="androidshowBanner">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="c62ceb6c-d020-46bb-977d-d647bee0d1be" data-name="androidshowBanner">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdLoaded</span><span class="p">(</span><span class="n">cacheEvent</span><span class="p">:</span> <span class="nc">CacheEvent</span><span class="p">,</span> <span class="n">cacheError</span><span class="p">:</span> <span class="nc">CacheError</span><span class="p">?)</span> <span class="p">{</span>
	<span class="k">if</span> <span class="p">(</span><span class="n">cacheError</span> <span class="p">!=</span> <span class="k">null</span><span class="p">)</span> <span class="p">{</span>
		<span class="cm">/* Handle error */</span>
	<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
		<span class="n">chartboostBanner</span><span class="p">.</span><span class="nf">show</span><span class="p">()</span>
	<span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdLoaded</span><span class="o">(</span><span class="nc">CacheEvent</span> <span class="n">cacheEvent</span><span class="o">,</span> <span class="nd">@Nullable</span> <span class="nc">CacheError</span> <span class="n">cacheError</span><span class="o">)</span> <span class="o">{</span>
	<span class="k">if</span> <span class="o">(</span><span class="n">cacheError</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
		<span class="cm">/* Handle error */</span>
	<span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
		<span class="n">chartboostBanner</span><span class="o">.</span><span class="na">show</span><span class="o">();</span>
	<span class="o">}</span>
<span class="o">}</span>
</code></pre></div></div>
</li>
  
</ul>


Remove banner:

<ul class="tab" data-tab="276696a5-4743-43c8-b064-7208731c23cf" data-name="removeBanner">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="276696a5-4743-43c8-b064-7208731c23cf" data-name="removeBanner">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">chartboostBanner</span><span class="p">.</span><span class="nf">detach</span><span class="p">()</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">chartboostBanner</span><span class="o">.</span><span class="na">detach</span><span class="o">();</span>
</code></pre></div></div>
</li>
  
</ul>


Public Banner Errors:

<ul class="tab" data-tab="bb383282-4ce9-4849-82a3-dab6bf10067a" data-name="publicBanner">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="bb383282-4ce9-4849-82a3-dab6bf10067a" data-name="publicBanner">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">val</span> <span class="py">cacheError</span> <span class="p">=</span> <span class="nc">CacheError</span><span class="p">(</span><span class="nc">CacheError</span><span class="p">.</span><span class="nc">Code</span><span class="p">.</span><span class="nc">INTERNAL</span><span class="p">,</span> <span class="nc">Exception</span><span class="p">(</span><span class="s">"banner cache error"</span><span class="p">))</span>
<span class="n">cacheError</span><span class="p">.</span><span class="n">code</span>

<span class="kd">val</span> <span class="py">showError</span> <span class="p">=</span> <span class="nc">ShowError</span><span class="p">(</span><span class="nc">ShowError</span><span class="p">.</span><span class="nc">Code</span><span class="p">.</span><span class="nc">INTERNAL</span><span class="p">,</span> <span class="nc">Exception</span><span class="p">(</span><span class="s">"banner show error"</span><span class="p">))</span>
<span class="n">showError</span><span class="p">.</span><span class="n">code</span>

<span class="kd">val</span> <span class="py">clickError</span> <span class="p">=</span> <span class="nc">ClickError</span><span class="p">(</span><span class="nc">ClickError</span><span class="p">.</span><span class="nc">Code</span><span class="p">.</span><span class="nc">INTERNAL</span><span class="p">,</span> <span class="nc">Exception</span><span class="p">(</span><span class="s">"banner click error"</span><span class="p">))</span>
<span class="n">clickError</span><span class="p">.</span><span class="n">code</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">CacheError</span> <span class="n">cacheError</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">CacheError</span><span class="o">(</span><span class="nc">CacheError</span><span class="o">.</span><span class="na">Code</span><span class="o">.</span><span class="na">INTERNAL</span><span class="o">,</span> <span class="k">new</span> <span class="nc">Exception</span><span class="o">(</span><span class="s">"banner cache error"</span><span class="o">));</span>
<span class="n">cacheError</span><span class="o">.</span><span class="na">getCode</span><span class="o">();</span>

<span class="nc">ShowError</span> <span class="n">showError</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">ShowError</span><span class="o">(</span><span class="nc">ShowError</span><span class="o">.</span><span class="na">Code</span><span class="o">.</span><span class="na">INTERNAL</span><span class="o">,</span> <span class="k">new</span> <span class="nc">Exception</span><span class="o">(</span><span class="s">"banner show error"</span><span class="o">));</span>
<span class="n">showError</span><span class="o">.</span><span class="na">getCode</span><span class="o">();</span>

<span class="nc">ClickError</span> <span class="n">clickError</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">ClickError</span><span class="o">(</span><span class="nc">ClickError</span><span class="o">.</span><span class="na">Code</span><span class="o">.</span><span class="na">INTERNAL</span><span class="o">,</span> <span class="k">new</span> <span class="nc">Exception</span><span class="o">(</span><span class="s">"banner click error"</span><span class="o">));</span>
<span class="n">clickError</span><span class="o">.</span><span class="na">getCode</span><span class="o">();</span>
</code></pre></div></div>
</li>
  
</ul>



## To Show a Static or Video Interstitial Ad

Create interstitial object without mediation object:

<ul class="tab" data-tab="f42bf887-cc16-4feb-9d3d-29d2ad681c6e" data-name="createInterstitialObject">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="f42bf887-cc16-4feb-9d3d-29d2ad681c6e" data-name="createInterstitialObject">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">val</span> <span class="py">chartboostInterstitial</span> <span class="p">=</span> <span class="nc">Interstitial</span><span class="p">(</span><span class="s">"location"</span><span class="p">,</span> <span class="kd">object</span> <span class="err">: </span><span class="nc">InterstitialCallback</span> <span class="p">{</span>
    
	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdDismiss</span><span class="p">(</span><span class="n">dismissEvent</span><span class="p">:</span> <span class="nc">DismissEvent</span><span class="p">)</span> <span class="p">{</span>

	<span class="p">}</span>

	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdLoaded</span><span class="p">(</span><span class="n">event</span><span class="p">:</span> <span class="nc">CacheEvent</span><span class="p">,</span> <span class="n">error</span><span class="p">:</span> <span class="nc">CacheError</span><span class="p">?)</span> <span class="p">{</span>
    	<span class="c1">// after this is successful ad can be shown</span>
	<span class="p">}</span>

	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdRequestedToShow</span><span class="p">(</span><span class="n">showEvent</span><span class="p">:</span> <span class="nc">ShowEvent</span><span class="p">)</span> <span class="p">{</span>

	<span class="p">}</span>

	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdShown</span><span class="p">(</span><span class="n">showEvent</span><span class="p">:</span> <span class="nc">ShowEvent</span><span class="p">,</span> <span class="n">showError</span><span class="p">:</span> <span class="nc">ShowError</span><span class="p">?)</span> <span class="p">{</span>

	<span class="p">}</span>

	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdClicked</span><span class="p">(</span><span class="n">clickEvent</span><span class="p">:</span> <span class="nc">ClickEvent</span><span class="p">,</span> <span class="n">clickError</span><span class="p">:</span> <span class="nc">ClickError</span><span class="p">?)</span> <span class="p">{</span>

	<span class="p">}</span>

	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onImpressionRecorded</span><span class="p">(</span><span class="n">impressionEvent</span><span class="p">:</span> <span class="nc">ImpressionEvent</span><span class="p">)</span> <span class="p">{</span>

	<span class="p">}</span>

	<span class="c1">// Optional: called when a cached ad expires or is evicted</span>
	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdExpired</span><span class="p">(</span><span class="n">expirationEvent</span><span class="p">:</span> <span class="nc">ExpirationEvent</span><span class="p">)</span> <span class="p">{</span>

	<span class="p">}</span>
<span class="p">},</span> <span class="k">null</span><span class="p">)</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">Interstitial</span> <span class="n">chartboostInterstitial</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Interstitial</span><span class="o">(</span><span class="s">"location"</span><span class="o">,</span> <span class="k">new</span> <span class="nc">InterstitialCallback</span><span class="o">()</span> <span class="o">{</span>
	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdDismiss</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">DismissEvent</span> <span class="n">dismissEvent</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdLoaded</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">CacheEvent</span> <span class="n">cacheEvent</span><span class="o">,</span> <span class="nd">@Nullable</span> <span class="nc">CacheError</span> <span class="n">cacheError</span><span class="o">)</span> <span class="o">{</span>
    	<span class="c1">// after this is successful ad can be shown</span>
	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdRequestedToShow</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ShowEvent</span> <span class="n">showEvent</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdShown</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ShowEvent</span> <span class="n">showEvent</span><span class="o">,</span> <span class="nd">@Nullable</span> <span class="nc">ShowError</span> <span class="n">showError</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdClicked</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ClickEvent</span> <span class="n">clickEvent</span><span class="o">,</span> <span class="nd">@Nullable</span> <span class="nc">ClickError</span> <span class="n">clickError</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onImpressionRecorded</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ImpressionEvent</span> <span class="n">impressionEvent</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="c1">// Optional: called when a cached ad expires or is evicted</span>
	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdExpired</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ExpirationEvent</span> <span class="n">expirationEvent</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>
<span class="o">},</span> <span class="kc">null</span><span class="o">);</span>

</code></pre></div></div>
</li>
  
</ul>


Create interstitial with mediation object:

<ul class="tab" data-tab="901775fb-1d32-4206-89d7-c9d810cfe9f7" data-name="createInterstitialMediation">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="901775fb-1d32-4206-89d7-c9d810cfe9f7" data-name="createInterstitialMediation">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">val</span> <span class="py">mediation</span> <span class="p">=</span> <span class="nc">Mediation</span><span class="p">(</span><span class="s">"Mediation"</span><span class="p">,</span> <span class="s">"1.0.0"</span><span class="p">,</span> <span class="s">"1.0.0.1"</span><span class="p">)</span>
<span class="kd">val</span> <span class="py">chartboostInterstitial</span> <span class="p">=</span> <span class="nc">Interstitial</span><span class="p">(</span><span class="s">"location"</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span> <span class="n">mediation</span><span class="p">)</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">Mediation</span> <span class="n">mediation</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Mediation</span><span class="o">(</span><span class="s">"Mediation"</span><span class="o">,</span> <span class="s">"1.0.0"</span><span class="o">,</span> <span class="s">"1.0.0.1"</span><span class="o">);</span>
<span class="n">chartboostInterstitial</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Interstitial</span><span class="o">(</span><span class="s">"location"</span><span class="o">,</span> <span class="n">callback</span><span class="o">,</span> <span class="n">mediation</span><span class="o">);</span>
</code></pre></div></div>
</li>
  
</ul>



Cache interstitial:

<ul class="tab" data-tab="a930236c-6984-40dd-922d-683f35cac30e" data-name="cacheInterstitial">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="a930236c-6984-40dd-922d-683f35cac30e" data-name="cacheInterstitial">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">chartboostInterstitial</span><span class="p">.</span><span class="nf">cache</span><span class="p">()</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">chartboostInterstitial</span><span class="o">.</span><span class="na">cache</span><span class="o">();</span>
</code></pre></div></div>
</li>
  
</ul>


Show interstitial:

<ul class="tab" data-tab="8f0f34a5-d79f-4f6f-8cb1-b66e2bd75092" data-name="showInterstitial">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="8f0f34a5-d79f-4f6f-8cb1-b66e2bd75092" data-name="showInterstitial">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code>	<span class="n">chartboostInterstitial</span><span class="p">.</span><span class="nf">show</span><span class="p">()</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code>	<span class="n">chartboostInterstitial</span><span class="o">.</span><span class="na">show</span><span class="o">();</span>
</code></pre></div></div>
</li>
  
</ul>


- For customized control over how ads behave in your game, the Chartboost SDK offers [delegate methods](/en/monetization/integrate/android/delegate-methods/) and [named locations](/en/monetization/integrate/android/named-locations/).

<div class="alert alert-info" role="alert">
  <b>Note:</b><br>
  <li>Do not call <code>show()</code> directly after <code>cache()</code> for the same interstitial object, or the ad may not be ready to display.</li>
  <li>Prefetched videos (in total) only take up 30-50MB, even when you are using mediation.</li>
</div>




## To Show a Rewarded Video Ad

Create a rewarded object without Mediation object:

<ul class="tab" data-tab="d541a88b-b13a-4eb2-9468-daf485b478ca" data-name="createRewarded">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="d541a88b-b13a-4eb2-9468-daf485b478ca" data-name="createRewarded">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">val</span> <span class="py">chartboostRewarded</span> <span class="p">=</span> <span class="nc">Rewarded</span><span class="p">(</span><span class="s">"location"</span><span class="p">,</span> <span class="kd">object</span> <span class="err">: </span><span class="nc">RewardedCallback</span> <span class="p">{</span>

	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onRewardEarned</span><span class="p">(</span><span class="n">rewardEvent</span><span class="p">:</span> <span class="nc">RewardEvent</span><span class="p">)</span> <span class="p">{</span>

	<span class="p">}</span>
    
	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdDismiss</span><span class="p">(</span><span class="n">dismissEvent</span><span class="p">:</span> <span class="nc">DismissEvent</span><span class="p">)</span> <span class="p">{</span>

	<span class="p">}</span>
    
	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdLoaded</span><span class="p">(</span><span class="n">cacheEvent</span><span class="p">:</span> <span class="nc">CacheEvent</span><span class="p">,</span> <span class="n">cacheError</span><span class="p">:</span> <span class="nc">CacheError</span><span class="p">?)</span> <span class="p">{</span>
    	<span class="c1">// after this is successful ad can be shown</span>
	<span class="p">}</span>
    
	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdRequestedToShow</span><span class="p">(</span><span class="n">showEvent</span><span class="p">:</span> <span class="nc">ShowEvent</span><span class="p">)</span> <span class="p">{</span>

	<span class="p">}</span>
    
	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdShown</span><span class="p">(</span><span class="n">showEvent</span><span class="p">:</span> <span class="nc">ShowEvent</span><span class="p">,</span> <span class="n">showError</span><span class="p">:</span> <span class="nc">ShowError</span><span class="p">?)</span> <span class="p">{</span>

	<span class="p">}</span>
    
	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdClicked</span><span class="p">(</span><span class="n">clickEvent</span><span class="p">:</span> <span class="nc">ClickEvent</span><span class="p">,</span> <span class="n">clickError</span><span class="p">:</span> <span class="nc">ClickError</span><span class="p">?)</span> <span class="p">{</span>

	<span class="p">}</span>

	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onImpressionRecorded</span><span class="p">(</span><span class="n">impressionEvent</span><span class="p">:</span> <span class="nc">ImpressionEvent</span><span class="p">)</span> <span class="p">{</span>

	<span class="p">}</span>

	<span class="c1">// Optional: called when a cached ad expires or is evicted</span>
	<span class="k">override</span> <span class="k">fun</span> <span class="nf">onAdExpired</span><span class="p">(</span><span class="n">expirationEvent</span><span class="p">:</span> <span class="nc">ExpirationEvent</span><span class="p">)</span> <span class="p">{</span>

	<span class="p">}</span>
<span class="p">},</span> <span class="k">null</span><span class="p">)</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">Rewarded</span> <span class="n">chartboostRewarded</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Rewarded</span><span class="o">(</span><span class="s">"location"</span><span class="o">,</span> <span class="k">new</span> <span class="nc">RewardedCallback</span><span class="o">()</span> <span class="o">{</span>
	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onRewardEarned</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">RewardEvent</span> <span class="n">rewardEvent</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdDismiss</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">DismissEvent</span> <span class="n">dismissEvent</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdLoaded</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">CacheEvent</span> <span class="n">cacheEvent</span><span class="o">,</span> <span class="nd">@Nullable</span> <span class="nc">CacheError</span> <span class="n">cacheError</span><span class="o">)</span> <span class="o">{</span>
    	<span class="c1">// after this is successful ad can be shown</span>
	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdRequestedToShow</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ShowEvent</span> <span class="n">showEvent</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdShown</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ShowEvent</span> <span class="n">showEvent</span><span class="o">,</span> <span class="nd">@Nullable</span> <span class="nc">ShowError</span> <span class="n">showError</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdClicked</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ClickEvent</span> <span class="n">clickEvent</span><span class="o">,</span> <span class="nd">@Nullable</span> <span class="nc">ClickError</span> <span class="n">clickError</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onImpressionRecorded</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ImpressionEvent</span> <span class="n">impressionEvent</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>

	<span class="c1">// Optional: called when a cached ad expires or is evicted</span>
	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">onAdExpired</span><span class="o">(</span><span class="nd">@NonNull</span> <span class="nc">ExpirationEvent</span> <span class="n">expirationEvent</span><span class="o">)</span> <span class="o">{</span>

	<span class="o">}</span>
<span class="o">},</span> <span class="kc">null</span><span class="o">);</span>
</code></pre></div></div>
</li>
  
</ul>


Create a rewarded object with Mediation object:

<ul class="tab" data-tab="52076ea7-5de0-430b-aa06-d0ae6cac977c" data-name="createRewardedMediation">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="52076ea7-5de0-430b-aa06-d0ae6cac977c" data-name="createRewardedMediation">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">val</span> <span class="py">mediation</span> <span class="p">=</span> <span class="nc">Mediation</span><span class="p">(</span><span class="s">"Mediation"</span><span class="p">,</span> <span class="s">"1.0.0"</span><span class="p">,</span> <span class="s">"1.0.0.1"</span><span class="p">)</span>
<span class="kd">val</span> <span class="py">chartboostRewarded</span> <span class="p">=</span> <span class="nc">Rewarded</span><span class="p">(</span><span class="s">"start"</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span> <span class="n">mediation</span><span class="p">)</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">Mediation</span> <span class="n">mediation</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Mediation</span><span class="o">(</span><span class="s">"Mediation"</span><span class="o">,</span> <span class="s">"1.0.0"</span><span class="o">,</span> <span class="s">"1.0.0.1"</span><span class="o">);</span>
<span class="n">chartboostRewarded</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Rewarded</span><span class="o">(</span><span class="s">"start"</span><span class="o">,</span> <span class="n">callback</span><span class="o">,</span> <span class="n">mediation</span><span class="o">);</span>
</code></pre></div></div>
</li>
  
</ul>


Cache rewarded:

<ul class="tab" data-tab="28e7d14c-5cba-4b98-8dbe-9691ed7efb5d" data-name="cacheRewarded">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="28e7d14c-5cba-4b98-8dbe-9691ed7efb5d" data-name="cacheRewarded">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">chartboostRewarded</span><span class="p">.</span><span class="nf">cache</span><span class="p">()</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">chartboostRewarded</span><span class="o">.</span><span class="na">cache</span><span class="o">();</span>
</code></pre></div></div>
</li>
  
</ul>


Show rewarded:

<ul class="tab" data-tab="ee9eca12-8b55-4bd9-ab75-3e78b253ba82" data-name="showRewarded">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
      <li>
          <a href="#">Java </a>
      </li>
  
</ul>
<ul class="tab-content" id="ee9eca12-8b55-4bd9-ab75-3e78b253ba82" data-name="showRewarded">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">chartboostRewarded</span><span class="p">.</span><span class="nf">show</span><span class="p">()</span>
</code></pre></div></div>
</li>
  
      <li>
<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">chartboostRewarded</span><span class="o">.</span><span class="na">show</span><span class="o">();</span>
</code></pre></div></div>
</li>
  
</ul>


- For customized control over how ads behave in your game, the Chartboost SDK offers [delegate methods](/en/monetization/integrate/android/delegate-methods/) and [named locations](/en/monetization/integrate/android/named-locations/).


## ExoPlayer Dependency for Video Ads

Chartboost SDK utilizes both ExoPlayer v2.18.7 (`com.google.android.exoplayer:exoplayer-core`) and AndroidX Media3 ExoPlayer v1.4.1 (`androidx.media3:media3-exoplayer`). If you have a dependency on ExoPlayer, you may get an error similar to the following:

```
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
> Duplicate class com.google.android.exoplayer2.ui.DownloadNotificationHelper found in modules exoplayer-core-2.18.7-runtime (com.google.android.exoplayer:exoplayer-core:2.18.7) and exoplayer-ui-2.15.1-runtime (com.google.android.exoplayer:exoplayer-ui:2.15.1)
```

To resolve this, exclude the ExoPlayer dependency from Chartboost SDK in Gradle:

```kotlin
dependencies {
   implementation('com.chartboost:chartboost-sdk:9.13.0') {
      exclude group: 'com.google.android.exoplayer'
   }
}
```


## Testing Your SDK Integration

1. Run your project on an Android device.
2. Use [Test Mode](/en/monetization/charles-web-proxy/) to see if test ads show up.



## SDK Configuration Methods

These methods allow you to access Chartboost SDK functionality and settings.

<ul class="tab" data-tab="5cca9b7b-93cf-4e06-945a-1c144e93f68d" data-name="sdkConfigurationMethods">
  
      <li class="active">
          <a href="#">Kotlin </a>
      </li>
  
</ul>
<ul class="tab-content" id="5cca9b7b-93cf-4e06-945a-1c144e93f68d" data-name="sdkConfigurationMethods">
  
      <li class="active">
<div class="language-kotlin highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cm">/**
* Set the Chartboost SDK logging level.
* @param level The logging level.
* @return true if was set successfully, false otherwise
*/</span>
<span class="k">fun</span> <span class="nf">setLoggingLevel</span><span class="p">(</span><span class="n">level</span><span class="p">:</span> <span class="nc">LoggingLevel</span><span class="p">)</span>
</code></pre></div></div>
</li>
  
</ul>



