diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/about/AboutFragment.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/about/AboutFragment.java index d2ad9e3b..50fae896 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/about/AboutFragment.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/about/AboutFragment.java @@ -19,6 +19,7 @@ import com.d4rk.androidtutorials.java.databinding.FragmentAboutBinding; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.MobileAds; +import com.d4rk.androidtutorials.java.utils.ConsentUtils; import me.zhanghai.android.fastscroll.FastScrollerBuilder; @@ -41,8 +42,13 @@ public android.view.View onCreateView(@NonNull android.view.LayoutInflater infla new FastScrollerBuilder(binding.scrollView).useMd2Style().build(); - MobileAds.initialize(requireContext()); - binding.adView.loadAd(new AdRequest.Builder().build()); + if (ConsentUtils.canShowAds(requireContext())) { + MobileAds.initialize(requireContext()); + binding.adView.setVisibility(android.view.View.VISIBLE); + binding.adView.loadAd(new AdRequest.Builder().build()); + } else { + binding.adView.setVisibility(android.view.View.GONE); + } String version = aboutViewModel.getVersionString(); binding.textViewAppVersion.setText(version); diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/AndroidStudioFragment.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/AndroidStudioFragment.java index 8038b2e8..88b4e611 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/AndroidStudioFragment.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/AndroidStudioFragment.java @@ -36,6 +36,7 @@ import com.google.android.material.card.MaterialCardView; import com.google.android.material.shape.CornerFamily; import com.google.android.material.shape.ShapeAppearanceModel; +import com.d4rk.androidtutorials.java.utils.ConsentUtils; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -54,6 +55,7 @@ public class AndroidStudioFragment extends Fragment { private static boolean mobileAdsInitialized = false; private final List allItems = new ArrayList<>(); private LessonsAdapter adapter; + private boolean showAds; @Nullable @Override @@ -65,15 +67,20 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - ensureMobileAdsInitialized(); + showAds = ConsentUtils.canShowAds(requireContext()); + if (showAds) { + ensureMobileAdsInitialized(); + } RecyclerView list = view.findViewById(R.id.lessons_list); list.setLayoutManager(new LinearLayoutManager(requireContext())); adapter = new LessonsAdapter(); list.setAdapter(adapter); - list.addItemDecoration(new LessonAdSpacingDecoration(requireContext())); + if (showAds) { + list.addItemDecoration(new LessonAdSpacingDecoration(requireContext())); + } allItems.clear(); allItems.addAll(loadItems()); - populateAdapter(allItems); + populateAdapter(allItems, showAds); MenuHost menuHost = requireActivity(); menuHost.addMenuProvider(new MenuProvider() { @@ -87,14 +94,14 @@ public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { - filterLessons(query); - return true; + filterLessons(query); + return true; } @Override public boolean onQueryTextChange(String newText) { - filterLessons(newText); - return true; + filterLessons(newText); + return true; } }); } @@ -174,7 +181,7 @@ private List loadItems() { return items; } - private void populateAdapter(List source) { + private void populateAdapter(List source, boolean showAds) { List items = new ArrayList<>(); List eligible = new ArrayList<>(); int lessonCount = 0; @@ -190,7 +197,7 @@ private void populateAdapter(List source) { firstInCategory = false; } } - int adCount = lessonCount / 3; + int adCount = showAds ? lessonCount / 3 : 0; Collections.shuffle(eligible, new Random()); if (adCount > eligible.size()) { adCount = eligible.size(); @@ -214,7 +221,7 @@ private void populateAdapter(List source) { private void filterLessons(String query) { String lower = query == null ? "" : query.toLowerCase(); if (lower.isEmpty()) { - populateAdapter(allItems); + populateAdapter(allItems, showAds); return; } List filtered = new ArrayList<>(); @@ -234,7 +241,7 @@ private void filterLessons(String query) { } } } - populateAdapter(filtered); + populateAdapter(filtered, showAds); } private static class AdItem {} diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/home/HomeFragment.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/home/HomeFragment.java index 5230b3b0..eaf501a3 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/home/HomeFragment.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/home/HomeFragment.java @@ -13,6 +13,7 @@ import com.d4rk.androidtutorials.java.databinding.FragmentHomeBinding; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.MobileAds; +import com.d4rk.androidtutorials.java.utils.ConsentUtils; import me.zhanghai.android.fastscroll.FastScrollerBuilder; @@ -29,7 +30,6 @@ public class HomeFragment extends Fragment { @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { binding = FragmentHomeBinding.inflate(inflater, container, false); - initializeAds(); return binding.getRoot(); } @@ -37,6 +37,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); homeViewModel = new ViewModelProvider(this).get(HomeViewModel.class); + initializeAds(); homeViewModel.setAnnouncements( getString(com.d4rk.androidtutorials.java.R.string.announcement_title), getString(com.d4rk.androidtutorials.java.R.string.announcement_subtitle) @@ -84,9 +85,17 @@ public void onDestroyView() { } private void initializeAds() { - MobileAds.initialize(requireContext()); - binding.smallBannerAd.loadAd(new AdRequest.Builder().build()); - binding.largeBannerAd.loadAd(new AdRequest.Builder().build()); + if (ConsentUtils.canShowAds(requireContext())) { + MobileAds.initialize(requireContext()); + binding.smallBannerAd.setVisibility(View.VISIBLE); + binding.largeBannerAd.setVisibility(View.VISIBLE); + AdRequest request = new AdRequest.Builder().build(); + binding.smallBannerAd.loadAd(request); + binding.largeBannerAd.loadAd(request); + } else { + binding.smallBannerAd.setVisibility(View.GONE); + binding.largeBannerAd.setVisibility(View.GONE); + } } private void shareTip(String tip) {