Git Product home page Git Product logo

teadssdk-android's Introduction

TeadsSDK-android

Teads allows you to integrate a single SDK into your app, and serve premium branded "outstream" video ads from Teads SSP ad server. This sample app includes the Teads Android Library and is showing integration examples.

Requirements

  • Android compile SDK version to 28 or higher
  • Android gradle plugin version to v3.2.1 or higher
  • AndroidX support (Migrate to AndroidX)

Run the sample app and discover how we integrate our SDK

The best way to see the working integration is to clone this repository, open it with Android Studio. The sample contains multiples kinds of integrations from direct integration to integrations using mediations partners such as AdMob and Mopub.

Download the Teads SDK Android library

The Teads SDK is distributed as a gradle dependencie that you have to add to your gradle file. It include everything you need to serve "outstream" video ads.

Short integration using gradle : Add our Maven Repository and the dependency:

repositories{
    maven {
        url  "https://teads.jfrog.io/artifactory/SDKAndroid-maven-prod"
    }
}
dependencies {
    implementation("tv.teads.sdk.android:sdk:5.1.4@aar") {
        transitive = true
    }
}

Integration Documentation

Integration instructions are available on Teads SDK Documentation.

Known issues

If you use Android gradle plugin version <= 4.2.2 dependending on the libraries you use you might face this uncommon issue: #211

Certifications

Teads SDK supports the IAB Open Measurement SDK, also known as OM SDK. The OM SDK brings transparency to the advertising world, giving a way to standardize the viewability and verification measurement for the ads served through mobile apps. Teads is part of the IAB's compliant companies.

iab certification badge

Releases

See releases here.

teadssdk-android's People

Contributors

barrault01 avatar bobthebot-teads avatar gbougeard avatar github-antoine-barrault avatar github-benjamin-volland avatar github-lucas-bon avatar github-maxime-liege avatar hugogresse avatar pdalpra avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

teadssdk-android's Issues

Crash on BrowserActivity.java line 7

Hi Teads Team,
I have upgrade version of teads dependency in this version:

implementation('tv.teads.sdk.android:sdk:4.3.0@aar'){
 transitive = true
}

image

but crash in BrowserActivity still occured. Here what console log said:

Fatal Exception: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=intent://id/web/pages/wow/i/id/marketing/Mkt_lp_v4?trigger_item=591802550&venture=id&entrance=mktlp&laz_trackid=2:mm_150040307_51200739_2010250736:clk5qkv8f1dp7u907v26s0&dsource=sml&exlaz=e_Li3fREjGj2jChAM6aUDLfFaE%2BUKYYPbDMVkZMICDnX1nws9Lp%2FUuM4DrX0MXtJD1LkIvZSagg4EUe4kdT1DwXdAjA6e0jVeImzkNp1SjzCrPZyuBjUbw6aKeViiMmTBxwl70ynTQLQUAGvdtBhJtFayJYVMgRWODp%2FJtRTzSPEHWeLm0h7Oauh1hyyMvAOS8NcQZtb09QgTrq%2B2630FoXn9s7hCE9QozfEpuL1gCKt27oRyo2geFDf0wEikD%2F7lqP41YtOLNzIx%2BawLrZJcxt0FWAW42edS09BCOLDlncvX5g%2BJNurFIKe%2BLMByUPpzsccQTv9MxjmKuPtTvdAF7H1smSRbae%2BDCbSvarBq6D4iv%2F%2Fl30SqaHdf8l16NWp6S7qmJxwCgactm7k0vzsT9x7ZEGE8N41d689mgYd4pnKdMPaKY2gC9w%2FqrvvrFEveP%2FoxPvPHbWOG%2BHyPGbofvJP%2FPzhP0QtNKTweZN3Qgmw6MVcuc5gtZfB0HwxTSuvTH6ejkaPglHAAH2Bm5XIpS4G9derd%2BhdwZ1VYSJ51RGfSmwPZDInWYJcXsvrx0yXvMfm4368RaNmlRAMs2OaYRtejLt9P%2BmEkzNxbsAh%2B%2BvEvlfLBW5dHsYIVHCgJ5RKUh0NOAZmufjC6uUptLB8v%2F%2FrZfB0cFBfxhCJmAcEfBByYq3NHoxaUlzYkiwxLJEa9DGo3OAlRROXImxRUrm2RY93ntXXPGOJjZv%2FZZ7Gfx9ZmPnV2y8gNeddRL2cfMeOshcOViBJiYRjJ7FQQ%2BTKVXjdtiXqSuDzRATYTXcQTEhHUHGZG7AbOXbutPGvGXzNfflhPtg8rSNT5kJx1j3%2BOa7r%2BmvzHUtFdNF65rXXTZAWU%2Brpr4tDbhSBm10o5R8JNf1jDDLHPeY5hsHo%2BerIxWBd%2F8XeO8mJ1NmEzyBthA7N1pk6n8DqlTCWQ6vdYVD2KuKMaZa2uRAIbzXVsf50apsvh%2Ffwy60jGj%2BicKuTeXQb3Akehu3oIilZMkUzEFMUx4JzQsxMWeuv6MkZRXm4X01fU4jUcP0vX6KTAaZVIm6Zs%3D flg=0x10000000 }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2014)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1675)
at android.app.Activity.startActivityForResult(Activity.java:4586)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
at android.app.Activity.startActivityForResult(Activity.java:4544)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
at android.app.Activity.startActivity(Activity.java:4905)
at android.app.Activity.startActivity(Activity.java:4873)
at tv.teads.sdk.android.engine.ui.browser.BrowserActivity$1.shouldOverrideUrlLoading(BrowserActivity.java:7)
at IG0.a(PG:1)
at org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(PG:15)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.next(MessageQueue.java:326)
at android.os.Looper.loop(Looper.java:160)
at android.app.ActivityThread.main(ActivityThread.java:6762)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Kindly help please

teads SDK error on low OS version

Currently using version 5.0.15, and the same issue is reproduced with the latest version 5.0.22

TEADS videos play well on devices with Android OS 10 or higher.
On Android OS 7.1.1 through 9 devices, TEADS videos do not play and appear frozen
On android os 7.0 and lower devices, no callbacks are called on the InReadAdListener passed to InReadAdPlacement#requestAd()

What causes the differences between OS versions?

Error in BrowserActivity.java line 267

Hi Teads Team,
I had a crash related to TeadsSDK. What console said like below:

Caused by java.lang.NullPointerException: Attempt to read from field 'android.content.pm.ActivityInfo android.content.pm.ResolveInfo.activityInfo' on a null object reference
       at tv.teads.sdk.android.engine.ui.browser.BrowserActivity.b + 267(BrowserActivity.java:267)
       at tv.teads.sdk.android.engine.ui.browser.BrowserActivity.onCreate + 108(BrowserActivity.java:108)
       at android.app.Activity.performCreate + 7023(Activity.java:7023)
       at android.app.Activity.performCreate + 7014(Activity.java:7014)
       at android.app.Instrumentation.callActivityOnCreate + 1214(Instrumentation.java:1214)
       at android.app.ActivityThread.performLaunchActivity + 2760(ActivityThread.java:2760)
       at android.app.ActivityThread.handleLaunchActivity + 2885(ActivityThread.java:2885)
       at android.app.ActivityThread.-wrap11()
       at android.app.ActivityThread$H.handleMessage + 1615(ActivityThread.java:1615)
       at android.os.Handler.dispatchMessage + 106(Handler.java:106)
       at android.os.Looper.loop + 164(Looper.java:164)
       at android.app.ActivityThread.main + 6537(ActivityThread.java:6537)

I am using SDK dependency

 implementation('tv.teads.sdk.android:sdk:4.2.4@aar') {
        transitive = true
    }

Thank you for helping me

Duplicate class a.a.a.a.a.a found in modules jetified-sdk-4.8.1-runtime.jar (tv.teads.sdk.android:sdk:4.8.1)

Hi,

I am unable to compile my project after adding latest Teads dependency and having also Stripe.

Duplicate class a.a.a.a.a.a found in modules jetified-sdk-4.8.1-runtime.jar (tv.teads.sdk.android:sdk:4.8.1) and jetified-stripe-3ds2-android-4.1.2-runtime.jar (com.stripe:stripe-3ds2-android:4.1.2)
Duplicate class a.a.a.a.a.c found in modules jetified-sdk-4.8.1-runtime.jar (tv.teads.sdk.android:sdk:4.8.1) and jetified-stripe-3ds2-android-4.1.2-runtime.jar (com.stripe:stripe-3ds2-android:4.1.2)
Duplicate class a.a.a.a.a.f found in modules jetified-sdk-4.8.1-runtime.jar (tv.teads.sdk.android:sdk:4.8.1) and jetified-stripe-3ds2-android-4.1.2-runtime.jar (com.stripe:stripe-3ds2-android:4.1.2)

getting Nullpointer exception on Fabric

Sdk version: 4.2.3
Stack trace:

Caused by java.lang.NullPointerException: Attempt to read from field 'android.content.pm.ActivityInfo android.content.pm.ResolveInfo.activityInfo' on a null object reference
       at tv.teads.sdk.android.engine.ui.browser.BrowserActivity.b + 267(BrowserActivity.java:267)
       at tv.teads.sdk.android.engine.ui.browser.BrowserActivity.onCreate + 108(BrowserActivity.java:108)
       at android.app.Activity.performCreate + 7441(Activity.java:7441)
       at android.app.Activity.performCreate + 7431(Activity.java:7431)
       at android.app.Instrumentation.callActivityOnCreate + 1286(Instrumentation.java:1286)
       at android.app.ActivityThread.performLaunchActivity + 3343(ActivityThread.java:3343)
       at android.app.ActivityThread.handleLaunchActivity + 3548(ActivityThread.java:3548)
       at android.app.servertransaction.LaunchActivityItem.execute + 86(LaunchActivityItem.java:86)
       at android.app.servertransaction.TransactionExecutor.executeCallbacks + 108(TransactionExecutor.java:108)
       at android.app.servertransaction.TransactionExecutor.execute + 68(TransactionExecutor.java:68)
       at android.app.ActivityThread$H.handleMessage + 2155(ActivityThread.java:2155)
       at android.os.Handler.dispatchMessage + 109(Handler.java:109)
       at android.os.Looper.loop + 207(Looper.java:207)
       at android.app.ActivityThread.main + 7539(ActivityThread.java:7539)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run + 524(RuntimeInit.java:524)
       at com.android.internal.os.ZygoteInit.main + 958(ZygoteInit.java:958)

NoClassDefFoundError after obfuscation

Hi, I'm using your library in version 2.4.1:fullRelease@aar
I'm also using ProGuard, my build tools are 25.0.1
I've pasted recommended proguard config from Wiki and it doesn't work. My app crashes at

java.lang.NoClassDefFoundError: tv.teads.sdk.b.a.b at tv.teads.sdk.b.a.a.a(Unknown Source) at tv.teads.sdk.b.a.a.<init>(Unknown Source) at tv.teads.sdk.adContent.e.a(Unknown Source) at tv.teads.sdk.publisher.a$4.a(Unknown Source) at tv.teads.adserver.a$6.run(Unknown Source) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5910) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)

From my mapping.txt I know that problematic class is tv.teads.sdk.util.chromeTabs.ServiceConnection -> tv.teads.sdk.b.a.b:

META-INF/sdk_prodRelease.kotlin_module

When implementing Teads SDK, if you are adding dependencies that share their module final path name and build type name and you are using Gradle Android Plugin version <= 4.2.2 you might face a build error related to META-INF/sdk_prodRelease.kotlin_module, which indicates duplicates on META-INF files.

Example:

Library 1 Library 2
Module name teads.tv.sdk com.adcolony.sdk
Build type name prodRelease prodRelease

For this issue we don't recommend you to solve with packingOptions since it could remove classes from one of the libraries.

The best way known so far to solve it is by upgrading your Gradle Android Plugin version to >= 7.0.0, then Gradle is able to handle correctly different libraries that shares the similarities showed above.

See that this is rather a problem regarding how Gradle manage dependencies on your project then a problem with the libraries themselves.

internal crash related to some coroutines issues on version 5.0.13

Hello,
I'm trying to load ads with the last version of the SDK 5.0.13 but it's not working.
this is how I'm doing it

  fun initTeadsHelper(context: Context) {
        val placementSettings = (if (BuildConfig.DEBUG)
            AdPlacementSettings.Builder().enableDebug().build()
        else
            AdPlacementSettings.Builder().build())

        val pid = (if (BuildConfig.DEBUG)
            context.resources.getInteger(R.integer.teads_identifier_test)
        else
            context.resources.getInteger(R.integer.teads_identifier))

        adPlacement = TeadsSDK.createInReadPlacement(context, pid, placementSettings)
    }

and to load the ads I use this:

fun loadAd(
    adView: View,
    pageUrl: String
) {

    try {
        // for desktop evaluation you can add enableValidationMode
        requestSettings = if (FeatureDecisions.isTeadsValidationModeEnabled()) {
            AdRequestSettings.Builder()
                .pageSlotUrl(pageUrl)
                .enableValidationMode().build()
        } else {
            AdRequestSettings.Builder()
                .pageSlotUrl(pageUrl)
                .build()
        }

        adPlacement.requestAd(requestSettings, object : InReadAdListener {
            override fun adOpportunityTrackerView(trackerView: AdOpportunityTrackerView) {
                (adView as FrameLayout).addView(trackerView)
            }

            override fun onAdReceived(
                inReadAdView: InReadAdView,
                adRatio: AdRatio
            ) {
                (adView as FrameLayout).addView(inReadAdView, 0)
            }

            override fun onAdClicked() {
                Timber.i("clickOnAd()")
            }

            override fun onAdClosed() {
                Timber.i("closeAd()")
            }

            override fun onAdError(
                code: Int,
                description: String
            ) {
                Timber.e("onAdError(): teads error description: $description , with code: $code")
            }

            override fun onAdImpression() {
                Timber.i("onAdImpression()")
            }

            override fun onAdExpandedToFullscreen() {
                Timber.i("onAdExpandedToFullscreen()")
            }

            override fun onAdCollapsedFromFullscreen() {
                Timber.i("onAdCollapsedFromFullscreen()")
            }

            override fun onAdRatioUpdate(adRatio: AdRatio) {
                Timber.i("onAdRatioUpdate() adRatio: $adRatio")
            }

            override fun onFailToReceiveAd(failReason: String) {
                Timber.e("onFailToReceiveAd() $failReason")
        }
        })
    } catch (e: Exception) {
        Timber.e( "failed to launch InReadAdPlacement error : $e")
    }
}

this is the log

2022-04-14 11:54:18.624 28568-12852/XXXXXXXXXX: E/teads#IoUtils: Could not read file: /data/user/0/XXXXXXXXXX.debug/files/teads/72/adloader.min.js
    java.io.FileNotFoundException: /data/user/0/XXXXXXXXXX/files/teads/72/adloader.min.js: open failed: ENOENT (No such file or directory)
        at libcore.io.IoBridge.open(IoBridge.java:492)
        at java.io.FileInputStream.<init>(FileInputStream.java:160)
        at tv.teads.sdk.utils.IoUtils.b(IoUtils.kt:2)
        at tv.teads.sdk.utils.assets.AssetsStorage.a(AssetsStorage.kt:2)
        at tv.teads.sdk.utils.assets.AssetsStorage.a(AssetsStorage.kt:17)
        at tv.teads.sdk.utils.assets.GetAsset$getAdLoaderWithVersion$2.invokeSuspend(GetAsset.kt:2)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:39)
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
     Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
        at libcore.io.Linux.open(Native Method)
        at libcore.io.ForwardingOs.open(ForwardingOs.java:166)
        at libcore.io.BlockGuardOs.open(BlockGuardOs.java:254)
        at libcore.io.ForwardingOs.open(ForwardingOs.java:166)
        at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:7871)
        at libcore.io.IoBridge.open(IoBridge.java:478)
        at java.io.FileInputStream.<init>(FileInputStream.java:160) 
        at tv.teads.sdk.utils.IoUtils.b(IoUtils.kt:2) 
        at tv.teads.sdk.utils.assets.AssetsStorage.a(AssetsStorage.kt:2) 
        at tv.teads.sdk.utils.assets.AssetsStorage.a(AssetsStorage.kt:17) 
        at tv.teads.sdk.utils.assets.GetAsset$getAdLoaderWithVersion$2.invokeSuspend(GetAsset.kt:2) 
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) 
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) 
        at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:39) 
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95) 
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) 
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) 
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) 
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665) 
2022-04-14 11:54:18.624 28568-12852/XXXXXXXXXX D/teads#PerfTeads: p11: 2
2022-04-14 11:54:18.625 28568-12852/XXXXXXXXXX D/teads#AdPlacement: Init - AdLoader OK
2022-04-14 11:54:18.630 28568-28568/XXXXXXXXXX D/teads#AdPlacement: Init advertising ids and adLoader...
2022-04-14 11:54:18.630 28568-28568/XXXXXXXXXX D/teads#AdPlacement: Init - Advertising ids OK
2022-04-14 11:54:18.632 28568-12853/XXXXXXXXXX E/teads#IoUtils: Could not read file: /data/user/0/XXXXXXXXXX/files/teads/72/adloader.min.js
    java.io.FileNotFoundException: /data/user/0/XXXXXXXXXX/files/teads/72/adloader.min.js: open failed: ENOENT (No such file or directory)
        at libcore.io.IoBridge.open(IoBridge.java:492)
        at java.io.FileInputStream.<init>(FileInputStream.java:160)
        at tv.teads.sdk.utils.IoUtils.b(IoUtils.kt:2)
        at tv.teads.sdk.utils.assets.AssetsStorage.a(AssetsStorage.kt:2)
        at tv.teads.sdk.utils.assets.AssetsStorage.a(AssetsStorage.kt:17)
        at tv.teads.sdk.utils.assets.GetAsset$getAdLoaderWithVersion$2.invokeSuspend(GetAsset.kt:2)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:39)
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
     Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
        at libcore.io.Linux.open(Native Method)
        at libcore.io.ForwardingOs.open(ForwardingOs.java:166)
        at libcore.io.BlockGuardOs.open(BlockGuardOs.java:254)
        at libcore.io.ForwardingOs.open(ForwardingOs.java:166)
        at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:7871)
        at libcore.io.IoBridge.open(IoBridge.java:478)
        at java.io.FileInputStream.<init>(FileInputStream.java:160) 
        at tv.teads.sdk.utils.IoUtils.b(IoUtils.kt:2) 
        at tv.teads.sdk.utils.assets.AssetsStorage.a(AssetsStorage.kt:2) 
        at tv.teads.sdk.utils.assets.AssetsStorage.a(AssetsStorage.kt:17) 
        at tv.teads.sdk.utils.assets.GetAsset$getAdLoaderWithVersion$2.invokeSuspend(GetAsset.kt:2) 
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) 
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) 
        at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:39) 
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95) 
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) 
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) 
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) 
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665) 

OutOfMemoryException in BackgroundImageFrameLayout

We're seeing an OutOfMemoryException that's affecting roughly 2000 of our users per month. It seems to be reducing but I wanted to bring it to your attention so you can track it anyway.

image

Here is a complete stack trace from one of the crash reports:

#0. Crashed: main
       at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java)
       at android.graphics.Bitmap.nativeCreate(Bitmap.java)
       at android.graphics.Bitmap.createBitmap + 977(Bitmap.java:977)
       at android.graphics.Bitmap.createBitmap + 948(Bitmap.java:948)
       at android.graphics.Bitmap.createBitmap + 879(Bitmap.java:879)
       at android.graphics.Bitmap.createScaledBitmap + 755(Bitmap.java:755)
       at tv.teads.sdk.android.engine.ui.player.vpaidPlayer.views.BackgroundImageFrameLayout.a + 57(SourceFile:57)
       at tv.teads.sdk.android.engine.ui.player.vpaidPlayer.views.BackgroundImageFrameLayout.onMeasure + 34(SourceFile:34)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.FrameLayout.onMeasure + 185(FrameLayout.java:185)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChild + 6433(ViewGroup.java:6433)
       at tv.teads.sdk.android.engine.ui.view.ResizerFrameLayout.onMeasure + 85(SourceFile:85)
       at android.view.View.measure + 21103(View.java:21103)
       at android.widget.RelativeLayout.measureChild + 676(RelativeLayout.java:676)
       at android.widget.RelativeLayout.onMeasure + 479(RelativeLayout.java:479)
       at tv.teads.sdk.android.engine.ui.view.AnimatedAdView.onMeasure + 164(SourceFile:164)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.FrameLayout.onMeasure + 185(FrameLayout.java:185)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChild + 6433(ViewGroup.java:6433)
       at com.google.android.gms.ads.doubleclick.PublisherAdView.onMeasure + 62(SourceFile:62)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.FrameLayout.onMeasure + 185(FrameLayout.java:185)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.LinearLayout.measureChildBeforeLayout + 1464(LinearLayout.java:1464)
       at android.widget.LinearLayout.measureVertical + 758(LinearLayout.java:758)
       at android.widget.LinearLayout.onMeasure + 640(LinearLayout.java:640)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.LinearLayout.measureChildBeforeLayout + 1464(LinearLayout.java:1464)
       at android.widget.LinearLayout.measureVertical + 758(LinearLayout.java:758)
       at android.widget.LinearLayout.onMeasure + 640(LinearLayout.java:640)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChild + 6433(ViewGroup.java:6433)
       at android.view.ViewGroup.measureChildren + 6410(ViewGroup.java:6410)
       at android.widget.AbsoluteLayout.onMeasure + 66(AbsoluteLayout.java:66)
       at android.webkit.WebView.onMeasure + 2608(WebView.java:2608)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.FrameLayout.onMeasure + 185(FrameLayout.java:185)
       at android.view.View.measure + 21103(View.java:21103)
       at com.guardian.feature.article.WebViewScrollingLinearLayoutManager.measureChildWithMargins + 39(SourceFile:39)
       at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk + 1583(SourceFile:1583)
       at androidx.recyclerview.widget.LinearLayoutManager.fill + 1517(SourceFile:1517)
       at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren + 612(SourceFile:612)
       at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2 + 3924(SourceFile:3924)
       at androidx.recyclerview.widget.RecyclerView.dispatchLayout + 3641(SourceFile:3641)
       at androidx.recyclerview.widget.RecyclerView.onLayout + 4194(SourceFile:4194)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at androidx.swiperefreshlayout.widget.SwipeRefreshLayout.onLayout + 625(SourceFile:625)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at androidx.viewpager.widget.ViewPager.onLayout + 1775(SourceFile:1775)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at androidx.coordinatorlayout.widget.CoordinatorLayout.layoutChild + 1183(SourceFile:1183)
       at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayoutChild + 870(SourceFile:870)
       at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout + 889(SourceFile:889)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.LinearLayout.setChildFrame + 1741(LinearLayout.java:1741)
       at android.widget.LinearLayout.layoutVertical + 1585(LinearLayout.java:1585)
       at android.widget.LinearLayout.onLayout + 1494(LinearLayout.java:1494)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.LinearLayout.setChildFrame + 1741(LinearLayout.java:1741)
       at android.widget.LinearLayout.layoutVertical + 1585(LinearLayout.java:1585)
       at android.widget.LinearLayout.onLayout + 1494(LinearLayout.java:1494)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at com.android.internal.policy.DecorView.onLayout + 908(DecorView.java:908)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.view.ViewRootImpl.performLayout + 2652(ViewRootImpl.java:2652)
       at android.view.ViewRootImpl.performTraversals + 2368(ViewRootImpl.java:2368)
       at android.view.ViewRootImpl.doTraversal + 1519(ViewRootImpl.java:1519)
       at android.view.ViewRootImpl$TraversalRunnable.run + 7113(ViewRootImpl.java:7113)
       at android.view.Choreographer$CallbackRecord.run + 927(Choreographer.java:927)
       at android.view.Choreographer.doCallbacks + 702(Choreographer.java:702)
       at android.view.Choreographer.doFrame + 638(Choreographer.java:638)
       at android.view.Choreographer$FrameDisplayEventReceiver.run + 913(Choreographer.java:913)
       at android.os.Handler.handleCallback + 751(Handler.java:751)
       at android.os.Handler.dispatchMessage + 95(Handler.java:95)
       at android.os.Looper.loop + 154(Looper.java:154)
       at android.app.ActivityThread.main + 6780(ActivityThread.java:6780)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run + 1500(ZygoteInit.java:1500)
       at com.android.internal.os.ZygoteInit.main + 1390(ZygoteInit.java:1390)

--

Fatal Exception: java.lang.OutOfMemoryError: Failed to allocate a 7207020 byte allocation with 4471536 free bytes and 4MB until OOM
       at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java)
       at android.graphics.Bitmap.nativeCreate(Bitmap.java)
       at android.graphics.Bitmap.createBitmap + 977(Bitmap.java:977)
       at android.graphics.Bitmap.createBitmap + 948(Bitmap.java:948)
       at android.graphics.Bitmap.createBitmap + 879(Bitmap.java:879)
       at android.graphics.Bitmap.createScaledBitmap + 755(Bitmap.java:755)
       at tv.teads.sdk.android.engine.ui.player.vpaidPlayer.views.BackgroundImageFrameLayout.a + 57(SourceFile:57)
       at tv.teads.sdk.android.engine.ui.player.vpaidPlayer.views.BackgroundImageFrameLayout.onMeasure + 34(SourceFile:34)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.FrameLayout.onMeasure + 185(FrameLayout.java:185)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChild + 6433(ViewGroup.java:6433)
       at tv.teads.sdk.android.engine.ui.view.ResizerFrameLayout.onMeasure + 85(SourceFile:85)
       at android.view.View.measure + 21103(View.java:21103)
       at android.widget.RelativeLayout.measureChild + 676(RelativeLayout.java:676)
       at android.widget.RelativeLayout.onMeasure + 479(RelativeLayout.java:479)
       at tv.teads.sdk.android.engine.ui.view.AnimatedAdView.onMeasure + 164(SourceFile:164)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.FrameLayout.onMeasure + 185(FrameLayout.java:185)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChild + 6433(ViewGroup.java:6433)
       at com.google.android.gms.ads.doubleclick.PublisherAdView.onMeasure + 62(SourceFile:62)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.FrameLayout.onMeasure + 185(FrameLayout.java:185)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.LinearLayout.measureChildBeforeLayout + 1464(LinearLayout.java:1464)
       at android.widget.LinearLayout.measureVertical + 758(LinearLayout.java:758)
       at android.widget.LinearLayout.onMeasure + 640(LinearLayout.java:640)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.LinearLayout.measureChildBeforeLayout + 1464(LinearLayout.java:1464)
       at android.widget.LinearLayout.measureVertical + 758(LinearLayout.java:758)
       at android.widget.LinearLayout.onMeasure + 640(LinearLayout.java:640)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChild + 6433(ViewGroup.java:6433)
       at android.view.ViewGroup.measureChildren + 6410(ViewGroup.java:6410)
       at android.widget.AbsoluteLayout.onMeasure + 66(AbsoluteLayout.java:66)
       at android.webkit.WebView.onMeasure + 2608(WebView.java:2608)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.FrameLayout.onMeasure + 185(FrameLayout.java:185)
       at android.view.View.measure + 21103(View.java:21103)
       at com.guardian.feature.article.WebViewScrollingLinearLayoutManager.measureChildWithMargins + 39(SourceFile:39)
       at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk + 1583(SourceFile:1583)
       at androidx.recyclerview.widget.LinearLayoutManager.fill + 1517(SourceFile:1517)
       at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren + 612(SourceFile:612)
       at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2 + 3924(SourceFile:3924)
       at androidx.recyclerview.widget.RecyclerView.dispatchLayout + 3641(SourceFile:3641)
       at androidx.recyclerview.widget.RecyclerView.onLayout + 4194(SourceFile:4194)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at androidx.swiperefreshlayout.widget.SwipeRefreshLayout.onLayout + 625(SourceFile:625)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at androidx.viewpager.widget.ViewPager.onLayout + 1775(SourceFile:1775)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at androidx.coordinatorlayout.widget.CoordinatorLayout.layoutChild + 1183(SourceFile:1183)
       at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayoutChild + 870(SourceFile:870)
       at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout + 889(SourceFile:889)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.LinearLayout.setChildFrame + 1741(LinearLayout.java:1741)
       at android.widget.LinearLayout.layoutVertical + 1585(LinearLayout.java:1585)
       at android.widget.LinearLayout.onLayout + 1494(LinearLayout.java:1494)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.LinearLayout.setChildFrame + 1741(LinearLayout.java:1741)
       at android.widget.LinearLayout.layoutVertical + 1585(LinearLayout.java:1585)
       at android.widget.LinearLayout.onLayout + 1494(LinearLayout.java:1494)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at com.android.internal.policy.DecorView.onLayout + 908(DecorView.java:908)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.view.ViewRootImpl.performLayout + 2652(ViewRootImpl.java:2652)
       at android.view.ViewRootImpl.performTraversals + 2368(ViewRootImpl.java:2368)
       at android.view.ViewRootImpl.doTraversal + 1519(ViewRootImpl.java:1519)
       at android.view.ViewRootImpl$TraversalRunnable.run + 7113(ViewRootImpl.java:7113)
       at android.view.Choreographer$CallbackRecord.run + 927(Choreographer.java:927)
       at android.view.Choreographer.doCallbacks + 702(Choreographer.java:702)
       at android.view.Choreographer.doFrame + 638(Choreographer.java:638)
       at android.view.Choreographer$FrameDisplayEventReceiver.run + 913(Choreographer.java:913)
       at android.os.Handler.handleCallback + 751(Handler.java:751)
       at android.os.Handler.dispatchMessage + 95(Handler.java:95)
       at android.os.Looper.loop + 154(Looper.java:154)
       at android.app.ActivityThread.main + 6780(ActivityThread.java:6780)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run + 1500(ZygoteInit.java:1500)
       at com.android.internal.os.ZygoteInit.main + 1390(ZygoteInit.java:1390)

#0. Crashed: main
       at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java)
       at android.graphics.Bitmap.nativeCreate(Bitmap.java)
       at android.graphics.Bitmap.createBitmap + 977(Bitmap.java:977)
       at android.graphics.Bitmap.createBitmap + 948(Bitmap.java:948)
       at android.graphics.Bitmap.createBitmap + 879(Bitmap.java:879)
       at android.graphics.Bitmap.createScaledBitmap + 755(Bitmap.java:755)
       at tv.teads.sdk.android.engine.ui.player.vpaidPlayer.views.BackgroundImageFrameLayout.a + 57(SourceFile:57)
       at tv.teads.sdk.android.engine.ui.player.vpaidPlayer.views.BackgroundImageFrameLayout.onMeasure + 34(SourceFile:34)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.FrameLayout.onMeasure + 185(FrameLayout.java:185)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChild + 6433(ViewGroup.java:6433)
       at tv.teads.sdk.android.engine.ui.view.ResizerFrameLayout.onMeasure + 85(SourceFile:85)
       at android.view.View.measure + 21103(View.java:21103)
       at android.widget.RelativeLayout.measureChild + 676(RelativeLayout.java:676)
       at android.widget.RelativeLayout.onMeasure + 479(RelativeLayout.java:479)
       at tv.teads.sdk.android.engine.ui.view.AnimatedAdView.onMeasure + 164(SourceFile:164)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.FrameLayout.onMeasure + 185(FrameLayout.java:185)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChild + 6433(ViewGroup.java:6433)
       at com.google.android.gms.ads.doubleclick.PublisherAdView.onMeasure + 62(SourceFile:62)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.FrameLayout.onMeasure + 185(FrameLayout.java:185)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.LinearLayout.measureChildBeforeLayout + 1464(LinearLayout.java:1464)
       at android.widget.LinearLayout.measureVertical + 758(LinearLayout.java:758)
       at android.widget.LinearLayout.onMeasure + 640(LinearLayout.java:640)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.LinearLayout.measureChildBeforeLayout + 1464(LinearLayout.java:1464)
       at android.widget.LinearLayout.measureVertical + 758(LinearLayout.java:758)
       at android.widget.LinearLayout.onMeasure + 640(LinearLayout.java:640)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChild + 6433(ViewGroup.java:6433)
       at android.view.ViewGroup.measureChildren + 6410(ViewGroup.java:6410)
       at android.widget.AbsoluteLayout.onMeasure + 66(AbsoluteLayout.java:66)
       at android.webkit.WebView.onMeasure + 2608(WebView.java:2608)
       at android.view.View.measure + 21103(View.java:21103)
       at android.view.ViewGroup.measureChildWithMargins + 6462(ViewGroup.java:6462)
       at android.widget.FrameLayout.onMeasure + 185(FrameLayout.java:185)
       at android.view.View.measure + 21103(View.java:21103)
       at com.guardian.feature.article.WebViewScrollingLinearLayoutManager.measureChildWithMargins + 39(SourceFile:39)
       at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk + 1583(SourceFile:1583)
       at androidx.recyclerview.widget.LinearLayoutManager.fill + 1517(SourceFile:1517)
       at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren + 612(SourceFile:612)
       at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2 + 3924(SourceFile:3924)
       at androidx.recyclerview.widget.RecyclerView.dispatchLayout + 3641(SourceFile:3641)
       at androidx.recyclerview.widget.RecyclerView.onLayout + 4194(SourceFile:4194)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at androidx.swiperefreshlayout.widget.SwipeRefreshLayout.onLayout + 625(SourceFile:625)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at androidx.viewpager.widget.ViewPager.onLayout + 1775(SourceFile:1775)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at androidx.coordinatorlayout.widget.CoordinatorLayout.layoutChild + 1183(SourceFile:1183)
       at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayoutChild + 870(SourceFile:870)
       at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout + 889(SourceFile:889)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.LinearLayout.setChildFrame + 1741(LinearLayout.java:1741)
       at android.widget.LinearLayout.layoutVertical + 1585(LinearLayout.java:1585)
       at android.widget.LinearLayout.onLayout + 1494(LinearLayout.java:1494)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.LinearLayout.setChildFrame + 1741(LinearLayout.java:1741)
       at android.widget.LinearLayout.layoutVertical + 1585(LinearLayout.java:1585)
       at android.widget.LinearLayout.onLayout + 1494(LinearLayout.java:1494)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.widget.FrameLayout.layoutChildren + 323(FrameLayout.java:323)
       at android.widget.FrameLayout.onLayout + 261(FrameLayout.java:261)
       at com.android.internal.policy.DecorView.onLayout + 908(DecorView.java:908)
       at android.view.View.layout + 18856(View.java:18856)
       at android.view.ViewGroup.layout + 5954(ViewGroup.java:5954)
       at android.view.ViewRootImpl.performLayout + 2652(ViewRootImpl.java:2652)
       at android.view.ViewRootImpl.performTraversals + 2368(ViewRootImpl.java:2368)
       at android.view.ViewRootImpl.doTraversal + 1519(ViewRootImpl.java:1519)
       at android.view.ViewRootImpl$TraversalRunnable.run + 7113(ViewRootImpl.java:7113)
       at android.view.Choreographer$CallbackRecord.run + 927(Choreographer.java:927)
       at android.view.Choreographer.doCallbacks + 702(Choreographer.java:702)
       at android.view.Choreographer.doFrame + 638(Choreographer.java:638)
       at android.view.Choreographer$FrameDisplayEventReceiver.run + 913(Choreographer.java:913)
       at android.os.Handler.handleCallback + 751(Handler.java:751)
       at android.os.Handler.dispatchMessage + 95(Handler.java:95)
       at android.os.Looper.loop + 154(Looper.java:154)
       at android.app.ActivityThread.main + 6780(ActivityThread.java:6780)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run + 1500(ZygoteInit.java:1500)
       at com.android.internal.os.ZygoteInit.main + 1390(ZygoteInit.java:1390)

Let me know if you need any further details

Validation mode not working in 5.0.12

Hi!
Here are the answers to the questions above:

  • direct standard integration
  • v5.0.12
  • 2022-04-07 09:56:16.548 D/teads#AssetUpdater: lib-js up to date
    2022-04-07 09:56:16.733 D/teads#PerfTeads: p23: 1063
    2022-04-07 09:56:16.780 D/teads#AdPlacement: Init advertising ids and adLoader...
    2022-04-07 09:56:16.781 D/teads#AdPlacement: Init - Advertising ids OK
    2022-04-07 09:56:16.783 D/teads#InReadAdPlacement: Waiting placement to be ready for ad request
    2022-04-07 09:56:16.784 D/teads#PerfTeads: p10: 5
    2022-04-07 09:56:16.784 D/teads#AdPlacement: Init - AdLoader asset recovered
    2022-04-07 09:56:16.806 D/teads#PerfTeads: p11: 27
    2022-04-07 09:56:16.806 D/teads#AdPlacement: Init - AdLoader OK
    2022-04-07 09:56:16.807 D/teads#InReadAdPlacement: Request InRead Ad
    2022-04-07 09:56:16.807 D/teads#JsEngine: ---->AdLoaderModule.requestInReadAd(84242, '%7B%22debugModeEnabled%22%3Atrue%2C%22locationEnabled%22%3Afalse%2C%22lightEndScreenEnabled%22%3Afalse%2C%22consent%22%3A%22%22%2C%22subjectToGDPR%22%3A%220%22%2C%22tcfVersion%22%3A2%2C%22cmpSdkID%22%3A0%2C%22crashReporterEnabled%22%3Atrue%2C%22extras%22%3A%7B%7D%2C%22browserUrlHidden%22%3Afalse%2C%22browserToolbarBackgroundColor%22%3A0%7D', '%7B%22publisherSlotUrl%22%3A%22http%3A%2F%2Fteads.com%22%2C%22validationModeEnabled%22%3Afalse%2C%22extras%22%3A%7B%7D%2C%22listenerKey%22%3A-1%7D')
    2022-04-07 09:56:16.829 D/teads#LoggerBridge: t:placementCall
    2022-04-07 09:56:16.831 D/teads#LoggerBridge: Building usPrivacy string...
    2022-04-07 09:56:16.832 D/teads#LoggerBridge: Building referrerUrl string...
    2022-04-07 09:56:16.832 D/teads#LoggerBridge: Creating & returns the built AdRequest...
    2022-04-07 09:56:16.848 D/teads#LoggerBridge: Creating url & body request
    2022-04-07 09:56:16.848 D/teads#LoggerBridge: Post the AdRequest
    URL: https://r.teads.tv/rich/84242?responseSerialization=v2
    Body: locale=en_US&country=US&windowReferrerUrl=http%3A%2F%2Fteads.com&userId=081439f9-7ea6-455b-a96d-88f155e5172c&network=wifi&deviceType=samsung%20SM-G991U1&screenHeight=725&screenWidth=360&deviceFamily=smartphone&carrier=&osVersion=31&os=Android&appVersion=12.16&appId=com.pinger.textfree.call&browser=SDK&sdkVersion=5.0.12&env=sdk-inapp&gdprIab=%7B%22status%22%3A21%2C%22consent%22%3Anull%2C%22reason%22%3A210%2C%22apiVersion%22%3Anull%2C%22cmpId%22%3Anull%7D&tag=84242&sdkEngineVersion=66&sdkIntegrationType=classic&apiFrameworks=1%2C2%2C7&omidPn=Teadstv

Originally posted by @adlibsv in #139 (comment)

error: cannot find symbol import tv.teads.sdk.android.AdFailedReason; after updating the teads SDK

After updating the teads SDK from 4.3.3@aar to 5.0.2 or to latest version, I am getting the below errors

 //Teads
 implementation("tv.teads.sdk.android:sdk:4.3.3@aar") {
 implementation("tv.teads.sdk.android:sdk:5.0.2@aar") {
         transitive = true
     }

error: cannot find symbol
import tv.teads.sdk.android.InReadAdView;
                           ^
  symbol:   class InReadAdView
  location: package tv.teads.sdk.android
error: cannot find symbol
import tv.teads.sdk.android.TeadsListener;
                           ^
  symbol:   class TeadsListener
  location: package tv.teads.sdk.android

error: cannot find symbol import tv.teads.sdk.android.AdFailedReason;     ^   symbol:   class AdFailedReason   location: package tv.teads.sdk.android

 error: cannot find symbol
                    super.onAdLoaded(v);
                         ^
  symbol: method onAdLoaded(float)

error: method does not override or implement a method from a supertype
                @Override
                ^

Reported crash of Teads Service when app on background

Fatal Exception: java.lang.RuntimeException: Unable to start receiver tv.teads.teadsevent.StartServiceReceiver: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.xxx.xxx/tv.teads.teadsevent.service.EventService }: app is in background uid UidRecord{ec48523 u0a228 RCVR idle procs:1 seq(0,0,0)}
at android.app.ActivityThread.handleReceiver(ActivityThread.java:3264)
at android.app.ActivityThread.-wrap17(Unknown Source)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1682)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:251)
at android.app.ActivityThread.main(ActivityThread.java:6563)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

In project we're using TeadsSKD v. 2.5.7

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.FrameLayout.setVisibility(int)' on a null object reference

I have got the below crash log on below version

compile ('tv.teads.sdk:androidsdk:2.5.12:fullRelease@aar') {
    transitive = true;
}
  • Crash reproduced on Samsung Galaxy S4(Android 5.0 API 21)

  • Also I have added below configuration on gradle file
    minSdkVersion = 16
    compileSdkVersion = 28
    targetSdk = 23

  • Used classpath 'com.android.tools.build:gradle:3.1.3'

Crash:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.FrameLayout.setVisibility(int)' on a null object reference
      at tv.teads.sdk.adContent.views.AnimatedAdContentView.expand(AnimatedAdContentView.java:158)
      at ch.demo.ads.TeadsAdHandler.openInRead(TeadsAdHandler.java:206)
      at ch.demo.ads.TeadsAdHandler.access$1100(TeadsAdHandler.java:17)
      at ch.demo.ads.TeadsAdHandler$AdEventListener.teadsAdWillExpand(TeadsAdHandler.java:132)
      at tv.teads.sdk.publisher.BaseTeadsAd.adWillExpand(BaseTeadsAd.java:638)
      at tv.teads.sdk.adContent.AdContent.u(AdContent.java:248)
      at tv.teads.sdk.adContent.video.VideoAdContent.u(VideoAdContent.java:545)
      at tv.teads.sdk.adContainer.SimpleAdContainer.j(SimpleAdContainer.java:129)
      at tv.teads.sdk.publisher.BaseTeadsAd.adRequestShowContainer(BaseTeadsAd.java:667)
      at tv.teads.sdk.adContent.video.VideoAdContent.V(VideoAdContent.java:1066)
      at tv.teads.sdk.adContent.video.PlayerState.a(PlayerState.java:77)
      at tv.teads.sdk.adContent.video.VideoAdContent.W(VideoAdContent.java:1082)
      at tv.teads.sdk.adContent.video.VideoAdContent.c(VideoAdContent.java:695)
      at tv.teads.sdk.adContent.video.ui.player.nativePlayer.exoplayer.TeadsExoPlayer.onPlayerStateChanged(TeadsExoPlayer.java:506)
      at tv.teads.android.exoplayer2.ExoPlayerImpl.handleEvent(ExoPlayerImpl.java:363)
      at tv.teads.android.exoplayer2.ExoPlayerImpl$1.handleMessage(ExoPlayerImpl.java:98)
      at android.os.Handler.dispatchMessage(Handler.java:102)
      at android.os.Looper.loop(Looper.java:145)
      at android.app.ActivityThread.main(ActivityThread.java:5951)
      at java.lang.reflect.Method.invoke(Native Method)
      at java.lang.reflect.Method.invoke(Method.java:372)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)

And i have used below code inside TeadsAdHandler>>openInRead() method.

private void openInRead() {
       if (mTeadsView == null) {
           mAdState.mAdViewHaveToBeOpen = true;
           return;
       }

       //Update the TeadsAdView to match the ViewGroup parent
       mTeadsView.updateSize(mListView);
       mTeadsView.setCollapsed();

       if (!mAdState.mAdViewHaveToBeOpen) {
           mAdState.mIsAnimating = true;
           mTeadsView.expand(new TeadsAnimationListener(true));
       } else {
           mAdState.mAdViewHaveToBeOpen = false;
           mTeadsView.setVisibility(View.VISIBLE);
           mAdState.mIsOpen = true;
           mTeadsAd.adViewDidExpand();
       }
   }

tv.teads.sdk.adContent.views.componentView.EndScreenView.getVisibility()' on a null object reference

I have got the below crash log on below version

  • implementation ('tv.teads.sdk:androidsdk:2.4.14:fullRelease@aar') {
    transitive = true;
    }

  • I have reproduced this error on device Lenovo Vibe k5 plus (Android 5.1.1 API 22)

  • Also I have added below configuration on gradle file
    minSdkVersion = 16
    compileSdkVersion = 28
    targetSdk = 23

  • Used classpath 'com.android.tools.build:gradle:3.1.3'

Crash log:
java.lang.NullPointerException: Attempt to invoke virtual method 'int tv.teads.sdk.adContent.views.componentView.EndScreenView.getVisibility()' on a null object reference
at tv.teads.sdk.adContent.views.AdContentView.endScreenIsVisible(AdContentView.java:822)
at tv.teads.sdk.adContent.video.VideoAdContent.c(VideoAdContent.java:525)
at tv.teads.sdk.adContainer.AdContainer.a(AdContainer.java:172)
at tv.teads.sdk.adContainer.SimpleAdContainer.k(SimpleAdContainer.java:176)
at tv.teads.sdk.adContainer.SimpleAdContainer.a(SimpleAdContainer.java:143)
at tv.teads.sdk.publisher.BaseTeadsAd.adDidLoad(BaseTeadsAd.java:544)
at tv.teads.sdk.adContent.video.VideoAdContent.c(VideoAdContent.java:686)
at tv.teads.sdk.adContent.video.ui.player.nativePlayer.exoplayer.TeadsExoPlayer.onPlayerStateChanged(TeadsExoPlayer.java:506)
at tv.teads.android.exoplayer2.ExoPlayerImpl.handleEvent(ExoPlayerImpl.java:363)
at tv.teads.android.exoplayer2.ExoPlayerImpl$1.handleMessage(ExoPlayerImpl.java:98)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5268)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)

Teads Ads Display just white space

Hi Teads Team,

i have done test for Teads ads in debug mode, and the result shows as below
Screen Shot 2020-06-22 at 09 04 41

i using dependency
implementation('tv.teads.sdk.android:sdk:4.7.2@aar') { transitive = true }

and i wrote code like this

parentLayout!!.post {
                
                videoAds!!.setPid(Integer.valueOf(activity.getString(R.string.ads_teads)))
                videoAds!!.listener = object : TeadsListener(){

                    override fun onAdFailedToLoad(adFailedReason: AdFailedReason?) {
                        super.onAdFailedToLoad(adFailedReason)

                        val code = adFailedReason?.errorCode
                        if(code == TribunTeadsListener.ERROR_NOTFILLED){
                            // display ADX if only no Filling Rate
                            mPublisherAdViewTop = PublisherAdView(activity).apply {
                                setAdSizes(com.google.android.gms.ads.AdSize.MEDIUM_RECTANGLE)
                                setPadding(0, 12, 0, 12)
                                adUnitId = activity.getString(R.string.ads_TopMediumRectangle)
                                adListener = TribunAdListener(mPublisherAdViewTop)
                            }
                            parentLayout!!.addView(mPublisherAdViewTop)
                        }

                    }

                    override fun onError(s: String?) {
                        super.onError(s)
                        Timber.e("TribunTeadsListener ERROR -- %s", s)
                    }

                    override fun onAdPlaybackChange(state: Int) {
                        super.onAdPlaybackChange(state)
                        when (state) {
                            PlayerConstants.LOADED, PlayerConstants.STARTED, PlayerConstants.RESUMED,
                            PlayerConstants.PAUSED, PlayerConstants.IMPRESSION, PlayerConstants.PROGRESS,
                            PlayerConstants.FIRST_QUARTILE, PlayerConstants.MID_POINT, PlayerConstants.THIRD_QUARTILE,
                            PlayerConstants.COMPLETE, PlayerConstants.STOPPED, PlayerConstants.MUTED, PlayerConstants.UNMUTED -> {
                            }
                            else -> {
                            }
                        }
                    }
                }

                val viewGroup: ViewGroup? = itemView.findViewById<ViewGroup?>(R.id.adContainer)
                videoAds!!.setAdContainerView(viewGroup)
                videoAds!!.load(AdSettings.Builder()
                        .pageUrl(linkNews)
                        .userConsent("0", "0").enableValidationMode()
                        .build())

                }

And this is what happened in read implementation
WhatsApp Image 2020-06-22 at 09 11 26
and we error with app-ads.txt, however i have registrated the Teads id in txt file in our website.
Screen Shot 2020-06-22 at 09 15 53
you can check if txt file has included with teads here: app-ads.txt
So how can we solve this problem? it has been over 24 hours since we update http to https website, google crawler should be have done with this. but why it still doesn't work yet? please help us

Teads Video Blackscreen but it has sound in test mode

Hi, team...
I have created teads Ads with InReadAdView and i put it inside scroll nestedScrollView. I implement this code snippet.

private InReadAdView videoAds;
private LinearLayout contentLayer

----------

try {
	// creating view for Teads ads
	View viewAds = LayoutInflater.from(getApplicationContext()).inflate(R.layout.teads_video_ads, contentLayer, false);
	videoAds = viewAds.findViewById(R.id.teads_ad_view);
	videoAds.setPid(Integer.valueOf(getString(R.string.ads_teads_read_page)));
	videoAds.setListener(new MyTeadsListener());

	ViewGroup viewGroup = viewAds.findViewById(R.id.adContainer);
	videoAds.setAdContainerView(viewGroup);
	videoAds.load();
	contentLayer.addView(viewAds);
} catch (Exception e) {
	e.printStackTrace();
}


public class MyTeadsListener extends tv.teads.sdk.android.TeadsListener {

    @Override
    public void onAdFailedToLoad(AdFailedReason adFailedReason) {
        super.onAdFailedToLoad(adFailedReason);
        int  val = adFailedReason.getErrorCode();
    }

    @Override
    public void onAdDisplayed() {
        super.onAdDisplayed();
    }

    @Override
    public void closeAd() {
        super.closeAd();
    }

    @Override
    public void onError(String s) {
        super.onError(s);
        //When an error shows up, the player fail to play a video or an exception occured in the SDK.
    }

    @Override
    public void onAdPlaybackChange(int state) {
        super.onAdPlaybackChange(state);
        switch (state) {
            case PlayerConstants.LOADED:
            case PlayerConstants.STARTED:
            case PlayerConstants.RESUMED:
            case PlayerConstants.PAUSED:
            case PlayerConstants.IMPRESSION:
            case PlayerConstants.PROGRESS:
            case PlayerConstants.FIRST_QUARTILE:
            case PlayerConstants.MID_POINT:
            case PlayerConstants.THIRD_QUARTILE:
            case PlayerConstants.COMPLETE:
            case PlayerConstants.STOPPED:
            case PlayerConstants.MUTED:
            case PlayerConstants.UNMUTED:
            default:
                // ...
                break;
        }
    }
}

and my layout is

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/adContainer"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <tv.teads.sdk.android.InReadAdView
        android:id="@+id/teads_ad_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center" />
</FrameLayout>

Do i make something wrong?

Leaked activity retention

Hi, I have some troubles with leak references using in InReadTopAdView in a fragment.

The fragment is placed in an Activity AppBarLayout and it's injected programmatically.

Activity ui

    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true">

        <include
            android:id="@+id/main_toolbar"
            layout="@layout/toolbar_layout" />

        <include
            android:id="@+id/main_ad_container"
            layout="@layout/ad_layout" />
    </android.support.design.widget.AppBarLayout>

fragment ui

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:teads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/teads_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@color/black">

    <tv.teads.sdk.publisher.InReadTopAdView
        android:id="@+id/teads_adview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        teads:teads_autoload="true" />

</LinearLayout>

I launch the adRequest in fragment's onViewCreated() (config.persistentView is false)
I notify the TeadsAd object with all callbacks (destroy / TeadsAd.clean(); , resume, pause)

But if you enter/leave the activity (about 10~20 times) the app crashes with this stacktrace:

21 13:36:10.641 20566-22908/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:10.641 20566-22908/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:10.641 20566-22908/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:10.641 20566-22908/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:10.641 20566-22908/it.doveconviene.android E/SQLiteLog: (14) statement aborts at 19: [select * from events where nextSending < ? AND maxSending > ?] unable to open database file
04-21 13:36:10.642 20566-22908/it.doveconviene.android E/SQLiteQuery: exception: unable to open database file (code 14); query: select * from events where nextSending < ? AND maxSending > ?
04-21 13:36:10.643 20566-22908/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:10.643 20566-22908/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:10.643 20566-22908/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:10.644 20566-22908/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:10.644 20566-22908/it.doveconviene.android E/SQLiteLog: (14) statement aborts at 34: [select * from events ORDER BY nextSending ASC LIMIT 1] unable to open database file
04-21 13:36:10.644 20566-22908/it.doveconviene.android E/SQLiteQuery: exception: unable to open database file (code 14); query: select * from events ORDER BY nextSending ASC LIMIT 1
04-21 13:36:10.647 20566-22908/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:10.647 20566-22908/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:10.647 20566-22908/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:10.647 20566-22908/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:10.647 20566-22908/it.doveconviene.android E/SQLiteLog: (14) statement aborts at 19: [select * from events where nextSending < ? AND maxSending > ?] unable to open database file
04-21 13:36:10.648 20566-22908/it.doveconviene.android E/SQLiteQuery: exception: unable to open database file (code 14); query: select * from events where nextSending < ? AND maxSending > ?
04-21 13:36:10.680 20566-22908/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:10.680 20566-22908/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:10.681 20566-22908/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:10.681 20566-22908/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:10.681 20566-22908/it.doveconviene.android E/SQLiteLog: (14) statement aborts at 34: [select * from events ORDER BY nextSending ASC LIMIT 1] unable to open database file
04-21 13:36:10.681 20566-22908/it.doveconviene.android E/SQLiteQuery: exception: unable to open database file (code 14); query: select * from events ORDER BY nextSending ASC LIMIT 1
04-21 13:36:10.708 20566-20566/it.doveconviene.android E/TEADS VISIBILITY: false
04-21 13:36:10.724 20566-20667/it.doveconviene.android E/Surface: dequeueBuffer: IGraphicBufferProducer::requestBuffer failed: -2147483646
04-21 13:36:10.724 20566-20667/it.doveconviene.android E/Parcel: dup() failed in Parcel::read, i is 0, fds[i] is -1, fd_count is 1, error: Too many open files
04-21 13:36:10.729 20566-20667/it.doveconviene.android E/Surface: queueBuffer: error queuing buffer to SurfaceTexture, -22
04-21 13:36:10.912 20566-22913/it.doveconviene.android E/NativeCrypto: AppData::create pipe(2) failed: Too many open files
04-21 13:36:10.914 20566-22916/it.doveconviene.android E/NativeCrypto: AppData::create pipe(2) failed: Too many open files
04-21 13:36:10.977 20566-22913/it.doveconviene.android E/NativeCrypto: AppData::create pipe(2) failed: Too many open files
04-21 13:36:10.991 20566-22913/it.doveconviene.android E/teads#EventService: sendCall failure: https://t.teads.tv/track?action=impression&vid=25e72e07667b5e1cd7d8e5647567be1f914662e9&gid=129286&cid=72208&pid=54934&be=1&impid=1&mediaFileType=[MEDIAFILETYPE]&auctid=854a22a2-0005-438a-8b1c-32bf4090c4a2 cause: Too many open files
04-21 13:36:10.993 20566-22913/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:10.993 20566-22913/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:10.993 20566-22913/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:10.993 20566-22913/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:10.993 20566-22913/it.doveconviene.android E/SQLiteLog: (14) statement aborts at 21: [UPDATE events SET retryCount=?,creationDate=?,lastSending=?,nextSending=?,maxSending=?,url=? WHERE _id=?] unable to open database file
04-21 13:36:11.029 20566-20566/it.doveconviene.android E/art: ashmem_create_region failed for 'indirect ref table': Too many open files
04-21 13:36:11.037 20566-20566/it.doveconviene.android E/AndroidRuntime: FATAL EXCEPTION: main
Process: it.doveconviene.android, PID: 20566
java.lang.OutOfMemoryError: Could not allocate JNI Env
at java.lang.Thread.nativeCreate(Native Method)
at java.lang.Thread.start(Thread.java:730)
at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:941)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1359)
at okhttp3.Dispatcher.enqueue(Dispatcher.java:112)
at okhttp3.RealCall.enqueue(RealCall.java:78)
at okhttp3.RealCall.enqueue(RealCall.java:70)
at tv.teads.network.okhttp.OkHttpNetworkCall.enqueue(OkHttpNetworkCall.java:30)
at tv.teads.adserver.AdServerClient.downloadAd(Unknown Source)
at tv.teads.adserver.AdServerClient.getAd(Unknown Source)
at tv.teads.sdk.publisher.BaseTeadsAd.a(BaseTeadsAd.java:223)
at tv.teads.sdk.publisher.BaseTeadsAd.onSlotAvailability(BaseTeadsAd.java:953)
at tv.teads.sdk.adContainer.InReadTopAdContainer.d(InReadTopAdContainer.java:152)
at tv.teads.sdk.publisher.BaseTeadsAd.load(BaseTeadsAd.java:362)
at it.doveconviene.android.ui.gridheader.teads.AHViewTeads.onViewCreated(AHViewTeads.java:64)
at it.doveconviene.android.ui.gridheader.AHFragment.onViewCreated(AHFragment.java:123)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1265)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1472)
at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1691)
at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3440)
at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120)
at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:378)
at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:33)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:777)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
at it.doveconviene.android.utils.ViewHelper.createView(ViewHelper.java:292)
at it.doveconviene.android.ui.base.fragment.UIFBaseGridFragment.setupHeader(UIFBaseGridFragment.java:419)
at it.doveconviene.android.ui.base.fragment.UIFBaseGridFragment.setupAdView(UIFBaseGridFragment.java:514)
at it.doveconviene.android.ui.base.fragment.UIFBaseGridFragment.onActivityCreated(UIFBaseGridFragment.java:191)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:2201)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1326)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2900)
at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:201)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:603)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1248)
at android.app.Activity.performStart(Activity.java:6681)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2609)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
04-21 13:36:11.037 20566-20566/it.doveconviene.android E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
04-21 13:36:11.124 20566-20642/it.doveconviene.android E/SWRVE: RESTClient unable to connect to http://6013.eu-content.swrve.com/api/1/user_resources_and_campaigns?location_version=1&etag=cve-ig%3D%3D%3AMtGhbw%3D%3D%3AVoynbg%3D%3D&device_width=1440&joined=1492711218340&api_key=IIiLDoFhN0XNWnHDO6f&android_device_ydpi=492.606&user=7ee56643-e941-4c90-922a-f2b2e497dfd8&device_height=2392&device_dpi=560.0&app_version=4.8.0&app_store=google&version=6&device_name=motorola+Nexus+6&os_version=7.0&language=en-AU&orientation=both&conversation_version=4&android_device_xdpi=494.27
04-21 13:36:11.125 20566-20642/it.doveconviene.android E/SwrveSDK: Error downloading resources and campaigns
04-21 13:36:11.151 20566-22914/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:11.151 20566-22914/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:11.151 20566-22914/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:11.151 20566-22914/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:11.151 20566-22914/it.doveconviene.android E/SQLiteLog: (14) statement aborts at 8: [DELETE FROM events WHERE _id = ?] unable to open database file
04-21 13:36:11.221 20566-22916/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:11.222 20566-22916/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:11.222 20566-22916/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:11.222 20566-22916/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:11.222 20566-22916/it.doveconviene.android E/SQLiteLog: (14) statement aborts at 8: [DELETE FROM events WHERE _id = ?] unable to open database file
04-21 13:36:11.251 20566-22916/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:11.251 20566-22916/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:11.251 20566-22916/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96]
04-21 13:36:11.251 20566-22916/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:32456: (24) open(/data/user/0/it.doveconviene.android/databases/teads-journal) -
04-21 13:36:11.251 20566-22916/it.doveconviene.android E/SQLiteLog: (14) statement aborts at 11: [DELETE FROM events WHERE maxSending < 1492774571250] unable to open database file
04-21 13:36:11.252 20566-22916/it.doveconviene.android E/CursorWindow: Could not allocate CursorWindow '/data/user/0/it.doveconviene.android/databases/teads' of size 2097152 due to error -24.
04-21 13:36:16.178 20566-20599/it.doveconviene.android E/SQLiteLog: (14) cannot open file at line 30188 of [bda77dda96]
04-21 13:36:16.178 20566-20599/it.doveconviene.android E/SQLiteLog: (14) os_unix.c:30188: (24) open(/data/user/0/it.doveconviene.android/databases) -

Compiled mode: debug
Teads Version: 2.4.4
LeakCanary report:

device-2017-04-21-095125

visibility 0

read me
I am trying to add teads in webview.
adCore.notifyAssetsDisplayChanged({"-1":{"visibility":0,"width":392,"height":242},"6":{"visibility":0,"width":391,"height":220}});

visiblity showing 0 in log
Do you have any suggestion?

thank you

InReadAdBaseListener error codes, descriptions and fail reasons

I am working on the InRead Teads implementation in my app.
InReadAdViewListener extends InReadAdBaseListener and provide 2 error/failure methods:

public open fun onAdError(code: Int, description: String)

public open fun onFailToReceiveAd(failReason: String)

I would like to perform different actions on different error types. For example, I would like to know if there is the notFilled error or the serverError.

Could you provide me with possible values for:

  • onAdError:
    -- code
    -- description
  • onFailToReceiveAd:
    -- failreason

I checked the SDK code (which is not obfuscated) but wasn't able to find any ErrorCode class.

video ad is not playing

Hello,
the video ad is not working, SDK version is the last one 5.0.15
besides this problem, I noticed when the validation mode is enabled, the popIn validation is launched/shown several times
and when I click on abort button, the video screen ad becomes black and nothing is visible.
this is the logcat output:

2022-06-15 15:08:20.178 12842-12842/com.XXXXXX.debug E/teads#ChromeClient: Unhandled javascript execution error: setVideoElement called with a non-HTMLVideoElement. It will be ignored. --- from line 29 of js

2022-06-15 15:08:20.849 12842-12842/com.XXXXXX.debug I/teads#ChromeClient: Unhandled javascript execution error: a: 0.0263671875 ms --- from line 32 of js

2022-06-15 15:08:24.001 12842-12842/com.nXXXXXXXXX.debug W/teads#ChromeClient: Unhandled javascript execution error: The resource https://s8t.teads.tv/vpaid-builder/instagram-video?873 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally. --- from line 0 of js

2022-06-15 15:12:46.441 12842-13215/com.XXXXXXXXX.debug W/okhttp.OkHttpClient: A connection to https://t.teads.tv/ was leaked. Did you forget to close a response body? To see where this was allocated, set the OkHttpClient logger level to FINE: Logger.getLogger(OkHttpClient.class.getName()).setLevel(Level.FINE);

2022-06-15 15:12:46.442 12842-13215/com.XXXXXXXXXXXX.debug W/okhttp.OkHttpClient: A connection to https://t.teads.tv/ was leaked. Did you forget to close a response body? To see where this was allocated, set the OkHttpClient logger level to FINE: Logger.getLogger(OkHttpClient.class.getName()).setLevel(Level.FINE);

2022-06-15 15:13:17.416 12842-13214/com.XXXXXXXXXX.debug W/okhttp.OkHttpClient: A connection to https://t.teads.tv/ was leaked. Did you forget to close a response body? To see where this was allocated, set the OkHttpClient logger level to FINE: Logger.getLogger(OkHttpClient.class.getName()).setLevel(Level.FINE);

2022-06-15 15:13:19.327 12842-13033/com.XXXXXXXXXX.debug W/okhttp.OkHttpClient: A connection to https://t.teads.tv/ was leaked. Did you forget to close a response body? To see where this was allocated, set the OkHttpClient logger level to FINE: Logger.getLogger(OkHttpClient.class.getName()).setLevel(Level.FINE);

2022-06-15 15:13:19.328 12842-13033/com.XXXXXXXXXXXXXX.debug W/okhttp.OkHttpClient: A connection to https://t.teads.tv/ was leaked. Did you forget to close a response body? To see where this was allocated, set the OkHttpClient logger level to FINE: Logger.getLogger(OkHttpClient.class.getName()).setLevel(Level.FINE);

Is there custom mediation support?

When we examined the Teads SDK Documentation, we noticed that there is mediation support for several different advertising networks. We couldn't find any explanation as to whether custom mediation support is available for ad networks not listed. Any idea if this support is available?

GDPR compliance

Is there any way how to handle current requirements for GDPR?

Jetifier still not removed

This was addressed before, but no properly:
#163

This is still not fixed in 5.0.10.
Not only do you have to change to androidX, but you also have to update your dependencies.
You still depend on picasso:2.71828 from 2018, tv.teads.exoplayer:exoplayer-core:r2.4.3, and tv.teads.visdroid:library:1:10, which in turn depend on the support libraries.
Also, if you remove jetifier from gradle.properties, you should have already seen these warnings, which proves that this issue is actually not fixed.

Excluding the dependencies is not helping as the are needed runtime.

This is a major issue, overdue for two years. The only blocker removing Jetifier in our large app is now Teads SDK. Please fix this ASAP!

About the equivalent of Teads ad types in other ad networks

When we examined the Teads SDK Documentation, we noticed that the ad types are different from other ad networks like Google AdMob.

Google AdMob ad types:

  • Banner
  • Interstitial
  • Rewarded Interstitial
  • Rewarded
  • Native
  • App open

Teads ad types:

  • inRead Video
  • inRead Live
  • inRead Flow
  • inRead Carousel
  • inRead Scroller
  • inRead Cinemagraph

We are not sure which of these ads has similar features. For example, what is the equivalent of the banner ad type in Google AdMob in the Teads?

TeadsAdapter in admobadapter does not implement CustomEvent

I'm using the latest Mobile Ads SDK(21.4.0).

Updating tv.teads.sdk.android:admobadapter to 5.0.22,
I get a compile error at the following.

val adRequest = AdRequest.Builder()
                .addCustomEventExtrasBundle(TeadsAdapter::class.java, settings.toBundle())
                .build()

This seems to be happening because TeadsAdapter in 5.0.22 does not implement com.google.android.gms.ads.mediation.customevent.CustomEventBanner.

android:allowBackup removal

Hello,

For some reason it looks like your manifest files contains : android:allowBackup=true

Could this be removed ?

Many thanks,

NullPointerException TeadsCrashController

When upgrading from Teads 4.6.0 to 4.7.0 we get following error

2020-05-26 11:30:41.343 23430-23430/be.persgroep.advertising.demo E/AndroidRuntime: FATAL EXCEPTION: main
    Process: be.persgroep.advertising.demo, PID: 23430
    java.lang.NullPointerException: Attempt to read from field 'java.lang.String tv.teads.sdk.android.reporter.core.remote.Collector.a' on a null object reference
        at tv.teads.sdk.android.reporter.core.TeadsCrashController.a(TeadsCrashController.java:1)
        at tv.teads.sdk.android.reporter.TeadsCrashReporter.a(TeadsCrashReporter.java:6)
        at tv.teads.sdk.android.remoteConfig.circuitBreaker.CircuitBreaker.<init>(CircuitBreaker.java:10)
        at tv.teads.sdk.android.engine.EngineFacade.<init>(EngineFacade.java:8)
        at tv.teads.sdk.android.engine.EngineFacadeFactory.a(EngineFacadeFactory.java:1)
        at tv.teads.sdk.android.TeadsAd.<init>(TeadsAd.java:35)
        at tv.teads.sdk.android.CustomAdView.load(CustomAdView.java:13)
        at tv.teads.sdk.android.InReadAdView.load(InReadAdView.java:2)

The config is the same in both case.

Video ad in WebView does not adjust position automatically

When a video ad is inserted in a WebView, the position of the ad is not adjusted dynamically to accomodate later changes in the HTML, such as block elements being inserted or deleted in the DOM above the ad, or visibility of DOM elements being toggled.

For example, when switching the CSS visibility of a <div> block (located above the ad) from none to block, the whole content of the HTML is shifted down, but the video ad stays in its previous position, effectively hiding part of the content of the HTML page.

Crash when reusing the InReadAdView instance to load new ads

In InReadAdView listener PlayerConstants.COMPLETE event, I am trying to load a new ad using the same instance like:
when (state){
PlayerConstants.COMPLETE->{
teads_ad_view?.reset()
teads_ad_view?.load()
}
}
this gives Crash:
java.lang.NullPointerException: Attempt to invoke interface method 'void tv.teads.sdk.android.engine.ui.player.PlayerListener.j()' on a null object reference
at tv.teads.sdk.android.engine.ui.player.nativePlayer.exoplayer.TeadsExoPlayer.onPlayerStateChanged(TeadsExoPlayer.java:479)
at tv.teads.android.exoplayer2.ExoPlayerImpl.handleEvent(ExoPlayerImpl.java:363)
at tv.teads.android.exoplayer2.ExoPlayerImpl$1.handleMessage(ExoPlayerImpl.java:98)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

SDK available for java

Sorry for this silly questions, but i hear that kotlin can not be converted to be java but kotlin has interoperable to java library. Do i can use this SDK to Java Android project?

Error in AdMob Mediation

If AdMob Mediation is selected from Additional Samples of the Teads SDK demo app and left for a while, the following error will occur after the video is reloaded several times, and the video can not be played with the same error on any screen .

I confirmed it on Android 8 and 9.
Android Studio Beta 1
Teads SDK version is 4.2.3

E/ExoPlayerImplInternal: Renderer error.
    tv.teads.android.exoplayer2.ExoPlaybackException
        at tv.teads.android.exoplayer2.mediacodec.MediaCodecRenderer.throwDecoderInitError(MediaCodecRenderer.java:380)
        at tv.teads.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:367)
        at tv.teads.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:796)
        at tv.teads.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:365)
        at tv.teads.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:494)
        at tv.teads.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:479)
        at tv.teads.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:308)
        at android.os.Handler.dispatchMessage(Handler.java:101)
        at android.os.Looper.loop(Looper.java:164)
        at android.os.HandlerThread.run(HandlerThread.java:65)
     Caused by: tv.teads.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.qcom.video.decoder.avc, Format(1, null, video/avc, -1, null, [1280, 720, -1.0], [-1, -1])
        at tv.teads.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:367) 
        at tv.teads.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:796) 
        at tv.teads.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:365) 
        at tv.teads.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:494) 
        at tv.teads.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:479) 
        at tv.teads.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:308) 
        at android.os.Handler.dispatchMessage(Handler.java:101) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.os.HandlerThread.run(HandlerThread.java:65) 
     Caused by: android.media.MediaCodec$CodecException: Failed to initialize OMX.qcom.video.decoder.avc, error 0xfffffff4
        at android.media.MediaCodec.native_setup(Native Method)
        at android.media.MediaCodec.<init>(MediaCodec.java:1786)
        at android.media.MediaCodec.createByCodecName(MediaCodec.java:1767)
        at tv.teads.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:353)
        at tv.teads.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:796) 
        at tv.teads.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:365) 
        at tv.teads.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:494) 
        at tv.teads.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:479) 
        at tv.teads.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:308) 
        at android.os.Handler.dispatchMessage(Handler.java:101) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.os.HandlerThread.run(HandlerThread.java:65) 

I think that it need to execute teadsAdBanner.clean() in the onDestroy() method of the tv.teads.adapter.admob.TeadsAdapter.

AAPT2 - Compilation fail due to teads integer

Hi,

With the new version of aapt, released with AndroidStudio 3 , the application build failed with the following error

Error:java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.internal.aapt.AaptException: AAPT2 compile failed:
Error:Execution failed for task :apk:mergeReleaseResources.
> Error: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.internal.aapt.AaptException: AAPT2 compile failed:
  aapt2 compile -o ./project/apk/build/intermediates/res/merged/release ./project/apk/build/intermediates/incremental/mergeReleaseResources/merged.dir/values/values.xml
  Issues:
   - ERROR: ./project/apk/build/intermediates/incremental/mergeReleaseResources/merged.dir/values/values.xml:929 invalid integer
   - ERROR: ./project/apk/build/intermediates/incremental/mergeReleaseResources/merged.dir/values/values.xml:930 invalid integer

Below, the associated lines in the values.xml file :

    <integer name="teads_activity_transition_fast">  300 </integer>
    <integer name="teads_activity_transition_normal">500 </integer>

Can you please simply remove the spaced around the int values to fix the compilation issue ?

Thanks.

TeadsView MediaContainer size

Hello, we encountered an issue with the media container.
By using tv.teads.sdk.publisher.TeadsView the mediacontainer does not fill the entire container.
Using TeadsView.updateSize(View) doesn't change anything.
On iOS platform the view is showing correctly.

Current:

Expected:

XML View
<tv.teads.sdk.publisher.TeadsView
android:id="@+id/teads_adview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />

Temporary fix:

View teadsContent = mTeadsView.findViewById(R.id.teads_ad_content);
teadsContent.setLayoutParams(new RelativeLayout.LayoutParams(width, height));

FrameLayout.LayoutParams flp = new FrameLayout.LayoutParams(width, height);
flp.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
mTeadsView.getMediaContainer().getChildAt(0).setLayoutParams(flp);

FrameLayout.LayoutParams flp = new FrameLayout.LayoutParams(width, height);
flp.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
mTeadsView.getEndScreen().setLayoutParams(flp);

That fix alteres internal teads-sdk views, so it's not a clean solution for us. Could you apply a fix to show the video container stretched on the entire view?

Thank you for your support!

NullPointerException & Warning

As last time on issue #62 you explained now using without resume, pause and clean method. Now a days sometime suddenly app goes down because of this exception:

FATAL EXCEPTION: main java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference at tv.teads.utils.DeviceUtility.getAppDeviceFamily(Unknown Source) at tv.teads.sdk.publisher.BaseTeadsVideo$1.interceptPostRequest(BaseTeadsVideo.java:98) at tv.teads.logger.RemoteLog.a(Unknown Source) at tv.teads.logger.RemoteLog.sendEvent(Unknown Source) at tv.teads.sdk.publisher.BaseTeadsAd.adDidCollapse(BaseTeadsAd.java:616) at tv.teads.sdk.adContent.video.VideoAdContent.q(VideoAdContent.java:497) at tv.teads.sdk.adContainer.InReadTopAdContainer$3.onAnimationEnd(InReadTopAdContainer.java:201) at android.view.animation.Animation$3.run(Animation.java:376) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7229) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

and this warning showing sometime when closing activity :(

MessageQueue: Handler (tv.teads.exoplayer.upstream.Loader$LoadTask) {dcce0ff} sending message to a Handler on a dead thread java.lang.IllegalStateException: Handler (tv.teads.exoplayer.upstream.Loader$LoadTask) {dcce0ff} sending message to a Handler on a dead thread at android.os.MessageQueue.enqueueMessage(MessageQueue.java:543) at android.os.Handler.enqueueMessage(Handler.java:631) at android.os.Handler.sendMessageAtTime(Handler.java:600) at android.os.Handler.sendMessageDelayed(Handler.java:570) at android.os.Handler.sendEmptyMessageDelayed(Handler.java:534) at android.os.Handler.sendEmptyMessage(Handler.java:519) at tv.teads.exoplayer.upstream.Loader$LoadTask.run(Loader.java:212) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818)

How to pass InReadAdView to my Viewholder (TeadsViewholder)?

Hi, am using Teads SDK v5 but i have little bit problem to pass result of onAdReceived (InReadAdView) back to my Viewholder (named it 'TeadsViewHolder'). Actually it little bit different implementation with general Admanager where we can create Views first then call loadAd() later. But Teads force us to wait until ad loads finished then pass the views to adapter. I think it could take long time for rendering. Or any other solution for that? Sorry i can't show my code because it too complicated, i hope the main idea of my question can be imagined without code demostration (it's clear right)

java.lang.NullPointerException

I found couple of NullPointerException inside my app. Though I am Following given examples from git :(
This null pointer exceptions is not happening always. In general its working. Because of this uncertain exceptions crash problem raises :(

screen shot 2016-09-02 at 23 50 14

screen shot 2016-09-02 at 23 31 40

I am facing this problem from version 2.1.4 till latest release.
How to fix this?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.