From 8a8251ff1d8865e0e6f05492f56961656b5116ee Mon Sep 17 00:00:00 2001 From: Jill Song Date: Tue, 14 May 2024 06:47:18 -0700 Subject: [PATCH] Fix deprecated Fix DisplayMetrics deprecation in all 4 Banner projects. PiperOrigin-RevId: 633568539 --- .../gms/example/bannerexample/MyActivity.java | 28 ++++++++--------- .../gms/example/bannerexample/MyActivity.java | 30 +++++++++---------- .../gms/example/bannerexample/MyActivity.kt | 26 ++++++++-------- .../gms/example/bannerexample/MainActivity.kt | 26 ++++++++-------- 4 files changed, 53 insertions(+), 57 deletions(-) diff --git a/java/admanager/BannerExample/app/src/main/java/com/google/android/gms/example/bannerexample/MyActivity.java b/java/admanager/BannerExample/app/src/main/java/com/google/android/gms/example/bannerexample/MyActivity.java index 176b36e01..02b4cc268 100644 --- a/java/admanager/BannerExample/app/src/main/java/com/google/android/gms/example/bannerexample/MyActivity.java +++ b/java/admanager/BannerExample/app/src/main/java/com/google/android/gms/example/bannerexample/MyActivity.java @@ -16,16 +16,19 @@ package com.google.android.gms.example.bannerexample; +import android.os.Build.VERSION; +import android.os.Build.VERSION_CODES; import android.os.Bundle; import android.util.DisplayMetrics; import android.util.Log; -import android.view.Display; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.WindowMetrics; import android.widget.FrameLayout; import android.widget.PopupMenu; import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import com.google.android.gms.ads.AdSize; import com.google.android.gms.ads.MobileAds; @@ -189,7 +192,8 @@ private void initializeMobileAdsSdk() { this, new OnInitializationCompleteListener() { @Override - public void onInitializationComplete(InitializationStatus initializationStatus) {} + public void onInitializationComplete( + @NonNull InitializationStatus initializationStatus) {} }); // Load an ad. @@ -198,21 +202,17 @@ public void onInitializationComplete(InitializationStatus initializationStatus) } } - private AdSize getAdSize() { - // Determine the screen width (less decorations) to use for the ad width. - Display display = getWindowManager().getDefaultDisplay(); - DisplayMetrics outMetrics = new DisplayMetrics(); - display.getMetrics(outMetrics); + // Get the ad size with screen width. + public AdSize getAdSize() { + DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); + int adWidthPixels = displayMetrics.widthPixels; - float density = outMetrics.density; - - float adWidthPixels = adContainerView.getWidth(); - - // If the ad hasn't been laid out, default to the full screen width. - if (adWidthPixels == 0) { - adWidthPixels = outMetrics.widthPixels; + if (VERSION.SDK_INT >= VERSION_CODES.R) { + WindowMetrics windowMetrics = this.getWindowManager().getCurrentWindowMetrics(); + adWidthPixels = windowMetrics.getBounds().width(); } + float density = displayMetrics.density; int adWidth = (int) (adWidthPixels / density); return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth); } diff --git a/java/admob/BannerExample/app/src/main/java/com/google/android/gms/example/bannerexample/MyActivity.java b/java/admob/BannerExample/app/src/main/java/com/google/android/gms/example/bannerexample/MyActivity.java index 90f09d744..a7b437672 100644 --- a/java/admob/BannerExample/app/src/main/java/com/google/android/gms/example/bannerexample/MyActivity.java +++ b/java/admob/BannerExample/app/src/main/java/com/google/android/gms/example/bannerexample/MyActivity.java @@ -16,16 +16,19 @@ package com.google.android.gms.example.bannerexample; +import android.os.Build.VERSION; +import android.os.Build.VERSION_CODES; import android.os.Bundle; import android.util.DisplayMetrics; import android.util.Log; -import android.view.Display; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.WindowMetrics; import android.widget.FrameLayout; import android.widget.PopupMenu; import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdSize; @@ -47,7 +50,7 @@ public class MyActivity extends AppCompatActivity { private GoogleMobileAdsConsentManager googleMobileAdsConsentManager; private AdView adView; private FrameLayout adContainerView; - private AtomicBoolean initialLayoutComplete = new AtomicBoolean(false); + private final AtomicBoolean initialLayoutComplete = new AtomicBoolean(false); @Override protected void onCreate(Bundle savedInstanceState) { @@ -189,7 +192,8 @@ private void initializeMobileAdsSdk() { this, new OnInitializationCompleteListener() { @Override - public void onInitializationComplete(InitializationStatus initializationStatus) {} + public void onInitializationComplete( + @NonNull InitializationStatus initializationStatus) {} }); // Load an ad. @@ -198,21 +202,17 @@ public void onInitializationComplete(InitializationStatus initializationStatus) } } - private AdSize getAdSize() { - // Determine the screen width (less decorations) to use for the ad width. - Display display = getWindowManager().getDefaultDisplay(); - DisplayMetrics outMetrics = new DisplayMetrics(); - display.getMetrics(outMetrics); + // Get the ad size with screen width. + public AdSize getAdSize() { + DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); + int adWidthPixels = displayMetrics.widthPixels; - float density = outMetrics.density; - - float adWidthPixels = adContainerView.getWidth(); - - // If the ad hasn't been laid out, default to the full screen width. - if (adWidthPixels == 0) { - adWidthPixels = outMetrics.widthPixels; + if (VERSION.SDK_INT >= VERSION_CODES.R) { + WindowMetrics windowMetrics = this.getWindowManager().getCurrentWindowMetrics(); + adWidthPixels = windowMetrics.getBounds().width(); } + float density = displayMetrics.density; int adWidth = (int) (adWidthPixels / density); return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth); } diff --git a/kotlin/admanager/BannerExample/app/src/main/kotlin/com/google/android/gms/example/bannerexample/MyActivity.kt b/kotlin/admanager/BannerExample/app/src/main/kotlin/com/google/android/gms/example/bannerexample/MyActivity.kt index 8acd457eb..cdfe99a5b 100644 --- a/kotlin/admanager/BannerExample/app/src/main/kotlin/com/google/android/gms/example/bannerexample/MyActivity.kt +++ b/kotlin/admanager/BannerExample/app/src/main/kotlin/com/google/android/gms/example/bannerexample/MyActivity.kt @@ -16,12 +16,13 @@ package com.google.android.gms.example.bannerexample +import android.os.Build import android.os.Bundle -import android.util.DisplayMetrics import android.util.Log import android.view.Menu import android.view.MenuItem import android.view.View +import android.view.WindowMetrics import android.widget.PopupMenu import android.widget.Toast import androidx.appcompat.app.AppCompatActivity @@ -44,21 +45,18 @@ class MyActivity : AppCompatActivity() { private lateinit var adView: AdManagerAdView private lateinit var googleMobileAdsConsentManager: GoogleMobileAdsConsentManager - // Determine the screen width (less decorations) to use for the ad width. - // If the ad hasn't been laid out, default to the full screen width. + // Get the ad size with screen width. private val adSize: AdSize get() { - val display = windowManager.defaultDisplay - val outMetrics = DisplayMetrics() - display.getMetrics(outMetrics) - - val density = outMetrics.density - - var adWidthPixels = binding.adViewContainer.width.toFloat() - if (adWidthPixels == 0f) { - adWidthPixels = outMetrics.widthPixels.toFloat() - } - + val displayMetrics = resources.displayMetrics + val adWidthPixels = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + val windowMetrics: WindowMetrics = this.windowManager.currentWindowMetrics + windowMetrics.bounds.width() + } else { + displayMetrics.widthPixels + } + val density = displayMetrics.density val adWidth = (adWidthPixels / density).toInt() return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth) } diff --git a/kotlin/admob/BannerExample/app/src/main/java/com/google/android/gms/example/bannerexample/MainActivity.kt b/kotlin/admob/BannerExample/app/src/main/java/com/google/android/gms/example/bannerexample/MainActivity.kt index d20449752..1ca9d877f 100644 --- a/kotlin/admob/BannerExample/app/src/main/java/com/google/android/gms/example/bannerexample/MainActivity.kt +++ b/kotlin/admob/BannerExample/app/src/main/java/com/google/android/gms/example/bannerexample/MainActivity.kt @@ -16,12 +16,13 @@ package com.google.android.gms.example.bannerexample +import android.os.Build import android.os.Bundle -import android.util.DisplayMetrics import android.util.Log import android.view.Menu import android.view.MenuItem import android.view.View +import android.view.WindowMetrics import android.widget.PopupMenu import android.widget.Toast import androidx.appcompat.app.AppCompatActivity @@ -44,21 +45,18 @@ class MainActivity : AppCompatActivity() { private lateinit var adView: AdView private lateinit var googleMobileAdsConsentManager: GoogleMobileAdsConsentManager - // Determine the screen width (less decorations) to use for the ad width. - // If the ad hasn't been laid out, default to the full screen width. + // Get the ad size with screen width. private val adSize: AdSize get() { - val display = windowManager.defaultDisplay - val outMetrics = DisplayMetrics() - display.getMetrics(outMetrics) - - val density = outMetrics.density - - var adWidthPixels = binding.adViewContainer.width.toFloat() - if (adWidthPixels == 0f) { - adWidthPixels = outMetrics.widthPixels.toFloat() - } - + val displayMetrics = resources.displayMetrics + val adWidthPixels = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + val windowMetrics: WindowMetrics = this.windowManager.currentWindowMetrics + windowMetrics.bounds.width() + } else { + displayMetrics.widthPixels + } + val density = displayMetrics.density val adWidth = (adWidthPixels / density).toInt() return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth) }