Cannot make java object from python using pyjnius

87 Views Asked by At

I'm trying to get rewarded ads to work on kivy using pyjnius by following the example by google (https://github.com/googleads/googleads-mobile-android-examples/tree/main/java/admob/RewardedVideoExample) to create a loadRewardedAd function and a showRewardedVideo function.

from jnius import autoclass, PythonJavaClass, java_method
from kivy.logger import Logger

RewardedAdLoadCallback = autoclass("com.google.android.gms.ads.rewarded.RewardedAdLoadCallback")

class RewardedVideoAdListener(RewardedAdLoadCallback):

    __javacontext__ = 'app'
    __javaclass__ = "com/google/android/gms/ads/rewarded/RewardedAdLoadCallback"

    __INFO = True

    @java_method('(Lcom/google/android/gms/ads/AdError;)V')
    def onAdFailedToLoad(self, loadAdError):
        if self.__INFO:
            Logger.info("AdMob: onAdFailedToLoad")

    @java_method('(Lcom/google/android/gms/ads/rewarded/RewardedAd;)V')
    def onAdLoaded(self, rewardedAd):
        if self.__INFO:
            Logger.info("AdMob: onAdLoaded")


class Ads:
    def __init__(self, AD_UNIT_ID="ca-app-pub-3940256099942544/5224354917"):
        self.rewarded_ad = None
        self.is_loading = False
        self.AD_UNIT_ID = AD_UNIT_ID

    def load_rewarded_ad(self):
        if self.rewarded_ad is None:
            self.is_loading = True

            RewardedAd = autoclass("com.google.android.gms.ads.rewarded.RewardedAd")
            AdRequestBuilder = autoclass('com.google.android.gms.ads.AdRequest$Builder')
            activity = autoclass('org.kivy.android.PythonActivity')

            ad_request = AdRequestBuilder().build()

            RewardedAd.load(
                activity,
                self.AD_UNIT_ID,
                ad_request,
                RewardedVideoAdListener()
            )

Among other things such as a huge coredump I get this error which I think is the most relevant.

04-14 02:22:52.732 16008 25520 F org.test.myapp: runtime.cc:677] JNI DETECTED ERROR IN APPLICATION: can't make objects of type com.google.android.gms.ads.rewarded.RewardedAdLoadCallback: 0x12caeb18
04-14 02:22:52.732 16008 25520 F org.test.myapp: runtime.cc:677]     in call to NewObjectA
04-14 02:22:52.732 16008 25520 F org.test.myapp: runtime.cc:677]     from int org.libsdl.app.SDLActivity.nativeRunMain(java.lang.String, java.lang.String, java.lang.Object)

What is the reason I cant make objects of type RewardedAdLoadCallback?

0

There are 0 best solutions below