Files
rr3-apk/decompiled-community/sources/com/unity3d/services/banners/UnityBanners.java
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- Added realracing3-community.apk (71.57 MB)
- Removed 32-bit support (armeabi-v7a)
- Only includes arm64-v8a libraries
- Decompiled source code included
- Added README-community.md with analysis
2026-02-18 15:48:36 -08:00

380 lines
15 KiB
Java

package com.unity3d.services.banners;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import com.unity3d.ads.UnityAds;
import com.unity3d.ads.UnityAdsLoadOptions;
import com.unity3d.services.banners.BannerView;
import com.unity3d.services.banners.properties.BannerRefreshInfo;
import com.unity3d.services.banners.view.BannerPosition;
import com.unity3d.services.core.log.DeviceLog;
import com.unity3d.services.core.misc.Utilities;
import com.unity3d.services.core.misc.ViewUtilities;
import com.unity3d.services.core.properties.ClientProperties;
import com.vungle.ads.internal.protos.Sdk;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
/* loaded from: classes4.dex */
public final class UnityBanners {
private static UnityBanners instance;
private IUnityBannerListener _bannerListener;
private BannerPosition _currentBannerPosition = BannerPosition.NONE;
private BannerWrapper _currentBannerWrapper;
private static UnityBanners getInstance() {
if (instance == null) {
instance = new UnityBanners();
}
return instance;
}
public class BannerWrapper extends FrameLayout {
private BannerAdRefreshView _bannerAdRefreshView;
private BannerPosition _bannerPosition;
public BannerWrapper(Context context, BannerAdRefreshView bannerAdRefreshView) {
super(context);
this._bannerPosition = BannerPosition.NONE;
this._bannerAdRefreshView = bannerAdRefreshView;
addView(bannerAdRefreshView);
setupLayoutConstraints();
setBackgroundColor(0);
}
public void setBannerPosition(BannerPosition bannerPosition) {
this._bannerPosition = bannerPosition;
setupLayoutConstraints();
}
private void setupLayoutConstraints() {
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(-2, -2);
layoutParams.gravity = this._bannerPosition.getGravity();
setLayoutParams(layoutParams);
}
public void destroy() {
Utilities.runOnUiThread(new Runnable() { // from class: com.unity3d.services.banners.UnityBanners.BannerWrapper.1
@Override // java.lang.Runnable
public void run() {
this.removeAllViews();
ViewUtilities.removeViewFromParent(this);
}
});
BannerAdRefreshView bannerAdRefreshView = this._bannerAdRefreshView;
if (bannerAdRefreshView != null) {
bannerAdRefreshView.destroy();
this._bannerAdRefreshView = null;
}
}
}
private UnityBanners() {
}
private void _loadBanner(Activity activity, String str) {
if (this._currentBannerWrapper == null) {
BannerAdRefreshView bannerAdRefreshView = new BannerAdRefreshView(activity, str, new UnityBannerSize(Sdk.SDKError.Reason.WEBVIEW_ERROR_VALUE, 50));
final BannerWrapper bannerWrapper = new BannerWrapper(activity, bannerAdRefreshView);
bannerWrapper.setBannerPosition(this._currentBannerPosition);
this._currentBannerWrapper = bannerWrapper;
bannerAdRefreshView.setListener(new BannerView.Listener() { // from class: com.unity3d.services.banners.UnityBanners.1
@Override // com.unity3d.services.banners.BannerView.Listener, com.unity3d.services.banners.BannerView.IListener
public void onBannerLoaded(BannerView bannerView) {
if (this._bannerListener != null) {
this._bannerListener.onUnityBannerLoaded(bannerView.getPlacementId(), bannerWrapper);
}
}
@Override // com.unity3d.services.banners.BannerView.Listener, com.unity3d.services.banners.BannerView.IListener
public void onBannerShown(BannerView bannerView) {
if (this._bannerListener != null) {
this._bannerListener.onUnityBannerShow(bannerView.getPlacementId());
}
}
@Override // com.unity3d.services.banners.BannerView.Listener, com.unity3d.services.banners.BannerView.IListener
public void onBannerFailedToLoad(BannerView bannerView, BannerErrorInfo bannerErrorInfo) {
if (this._bannerListener != null) {
this._bannerListener.onUnityBannerError(bannerView.getPlacementId() + " " + bannerErrorInfo.errorMessage);
}
}
@Override // com.unity3d.services.banners.BannerView.Listener, com.unity3d.services.banners.BannerView.IListener
public void onBannerClick(BannerView bannerView) {
if (this._bannerListener != null) {
this._bannerListener.onUnityBannerClick(bannerView.getPlacementId());
}
}
});
bannerAdRefreshView.load();
return;
}
sendError("A Banner is already in use, please call destroy before loading another banner!");
}
private void _destroy() {
BannerWrapper bannerWrapper = this._currentBannerWrapper;
if (bannerWrapper != null) {
bannerWrapper.destroy();
this._currentBannerWrapper = null;
}
}
private static void sendError(final String str) {
Utilities.runOnUiThread(new Runnable() { // from class: com.unity3d.services.banners.UnityBanners.2
@Override // java.lang.Runnable
public void run() {
IUnityBannerListener bannerListener = UnityBanners.getBannerListener();
if (bannerListener != null) {
bannerListener.onUnityBannerError(str);
}
}
});
}
@Deprecated
public static void loadBanner(Activity activity, String str) {
DeviceLog.entered();
if (!UnityAds.isSupported()) {
sendError("Unity Ads is not supported on this device.");
}
if (!UnityAds.isInitialized()) {
sendError("UnityAds is not initialized.");
} else {
ClientProperties.setActivity(activity);
getInstance()._loadBanner(activity, str);
}
}
@Deprecated
public static void destroy() {
getInstance()._destroy();
}
@Deprecated
public static void setBannerListener(IUnityBannerListener iUnityBannerListener) {
getInstance()._bannerListener = iUnityBannerListener;
}
@Deprecated
public static IUnityBannerListener getBannerListener() {
return getInstance()._bannerListener;
}
@Deprecated
public static void setBannerPosition(BannerPosition bannerPosition) {
getInstance()._currentBannerPosition = bannerPosition;
}
public class BannerAdRefreshView extends RelativeLayout {
private BannerView bannerView;
private boolean didLoad;
private boolean didShow;
private boolean didSubscribeToLifecycle;
private LifecycleListener lifecycleListener;
private String placementId;
private Handler refreshHandler;
private long refreshRate;
private long refreshTime;
private Runnable reloadRunnable;
public BannerAdRefreshView(Activity activity, String str, UnityBannerSize unityBannerSize) {
super(activity);
this.didLoad = false;
this.refreshRate = 30L;
this.didShow = false;
this.didSubscribeToLifecycle = false;
this.placementId = str;
this.refreshHandler = new Handler();
this.reloadRunnable = new Runnable() { // from class: com.unity3d.services.banners.UnityBanners.BannerAdRefreshView.1
@Override // java.lang.Runnable
public void run() {
this.reload();
}
};
setupLayoutParams();
setBackgroundColor(0);
BannerView bannerView = new BannerView(activity, str, unityBannerSize);
this.bannerView = bannerView;
addView(bannerView);
}
public String getPlacementId() {
return this.bannerView.getPlacementId();
}
public UnityBannerSize getSize() {
return this.bannerView.getSize();
}
public void setListener(BannerView.IListener iListener) {
this.bannerView.setListener(iListener);
}
public BannerView.IListener getListener() {
return this.bannerView.getListener();
}
public void load() {
if (this.didLoad) {
return;
}
this.didLoad = true;
Integer refreshRate = BannerRefreshInfo.getInstance().getRefreshRate(this.placementId);
if (refreshRate != null) {
this.refreshRate = refreshRate.longValue();
}
reload();
}
public void destroy() {
stopReloadTask();
this.bannerView.destroy();
Utilities.runOnUiThread(new Runnable() { // from class: com.unity3d.services.banners.UnityBanners.BannerAdRefreshView.2
@Override // java.lang.Runnable
public void run() {
this.removeAllViews();
}
});
this.bannerView = null;
}
/* JADX INFO: Access modifiers changed from: private */
public void startReloadTask() {
long uptimeMillis = SystemClock.uptimeMillis();
long j = this.refreshTime;
if (uptimeMillis < j) {
this.refreshHandler.postAtTime(this.reloadRunnable, j);
} else {
reload();
}
}
/* JADX INFO: Access modifiers changed from: private */
public void stopReloadTask() {
Runnable runnable;
Handler handler = this.refreshHandler;
if (handler == null || (runnable = this.reloadRunnable) == null) {
return;
}
handler.removeCallbacks(runnable);
}
/* JADX INFO: Access modifiers changed from: private */
public void reload() {
UnityAdsLoadOptions unityAdsLoadOptions = new UnityAdsLoadOptions();
unityAdsLoadOptions.setObjectId(UUID.randomUUID().toString());
this.bannerView.load(unityAdsLoadOptions);
long uptimeMillis = SystemClock.uptimeMillis() + TimeUnit.SECONDS.toMillis(this.refreshRate);
this.refreshTime = uptimeMillis;
this.refreshHandler.postAtTime(this.reloadRunnable, uptimeMillis);
}
private void subscribeToLifecycle() {
if (this.didSubscribeToLifecycle || ClientProperties.getApplication() == null) {
return;
}
this.lifecycleListener = new LifecycleListener() { // from class: com.unity3d.services.banners.UnityBanners.BannerAdRefreshView.3
/* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
{
super();
}
@Override // com.unity3d.services.banners.UnityBanners.BannerAdRefreshView.LifecycleListener, android.app.Application.ActivityLifecycleCallbacks
public void onActivityPaused(Activity activity) {
this.stopReloadTask();
}
@Override // com.unity3d.services.banners.UnityBanners.BannerAdRefreshView.LifecycleListener, android.app.Application.ActivityLifecycleCallbacks
public void onActivityStopped(Activity activity) {
this.stopReloadTask();
}
@Override // com.unity3d.services.banners.UnityBanners.BannerAdRefreshView.LifecycleListener, android.app.Application.ActivityLifecycleCallbacks
public void onActivityDestroyed(Activity activity) {
this.stopReloadTask();
}
@Override // com.unity3d.services.banners.UnityBanners.BannerAdRefreshView.LifecycleListener, android.app.Application.ActivityLifecycleCallbacks
public void onActivityResumed(Activity activity) {
this.startReloadTask();
}
};
this.didSubscribeToLifecycle = true;
ClientProperties.getApplication().registerActivityLifecycleCallbacks(this.lifecycleListener);
}
private void unsubscribeFromLifecycle() {
if (!this.didSubscribeToLifecycle || this.lifecycleListener == null || ClientProperties.getApplication() == null) {
return;
}
this.didSubscribeToLifecycle = false;
ClientProperties.getApplication().unregisterActivityLifecycleCallbacks(this.lifecycleListener);
}
@Override // android.view.ViewGroup, android.view.View
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
stopReloadTask();
unsubscribeFromLifecycle();
}
@Override // android.view.ViewGroup, android.view.View
public void onAttachedToWindow() {
super.onAttachedToWindow();
subscribeToLifecycle();
if (this.didShow) {
startReloadTask();
} else {
this.didShow = true;
}
}
private void setupLayoutParams() {
setLayoutParams(new RelativeLayout.LayoutParams(-2, -2));
}
@TargetApi(14)
public class LifecycleListener implements Application.ActivityLifecycleCallbacks {
@Override // android.app.Application.ActivityLifecycleCallbacks
public void onActivityCreated(Activity activity, Bundle bundle) {
}
@Override // android.app.Application.ActivityLifecycleCallbacks
public void onActivityDestroyed(Activity activity) {
}
@Override // android.app.Application.ActivityLifecycleCallbacks
public void onActivityPaused(Activity activity) {
}
@Override // android.app.Application.ActivityLifecycleCallbacks
public void onActivityResumed(Activity activity) {
}
@Override // android.app.Application.ActivityLifecycleCallbacks
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
}
@Override // android.app.Application.ActivityLifecycleCallbacks
public void onActivityStarted(Activity activity) {
}
@Override // android.app.Application.ActivityLifecycleCallbacks
public void onActivityStopped(Activity activity) {
}
private LifecycleListener() {
}
}
}
}