From b32030853d180fec4b6337278c603db8d880d6e4 Mon Sep 17 00:00:00 2001 From: Jackson Sui Date: Fri, 20 Sep 2024 07:50:33 -0700 Subject: [PATCH] Updates samples to v3.35.0. PiperOrigin-RevId: 676842914 --- AdvancedExample/app/build.gradle | 2 +- .../samplevideoplayer/SampleVideoPlayer.java | 43 ++--- .../samplevideoplayer/VideoPlayer.java | 2 +- .../v3/samples/videoplayerapp/MyActivity.java | 1 - .../samples/videoplayerapp/VideoFragment.java | 23 +-- .../videoplayerapp/VideoItemAdapter.java | 9 +- .../videoplayerapp/VideoListFragment.java | 71 ++++---- .../samples/videoplayerapp/VideoMetadata.java | 3 +- .../videoplayerapp/VideoPlayerController.java | 43 ++--- .../VideoPlayerWithAdPlayback.java | 20 +-- .../gradle/wrapper/gradle-wrapper.properties | 2 +- ExoPlayerExample/app/build.gradle | 2 +- .../samples/exoplayerexample/MyActivity.java | 25 ++- .../gradle/wrapper/gradle-wrapper.properties | 2 +- audioplayerexample/app/build.gradle | 4 +- .../AudioPlayerService.java | 2 +- .../samples/audioplayerexample/Constants.java | 1 - .../audioplayerexample/ImaService.java | 15 +- .../audioplayerexample/MainActivity.java | 26 +-- .../samples/audioplayerexample/Samples.java | 5 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- basicexample/app/build.gradle | 2 +- .../v3/samples/videoplayerapp/MyActivity.java | 8 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- umpexample/app/build.gradle | 4 +- .../v3/samples/umpimaapp/ConsentManager.java | 12 +- .../v3/samples/umpimaapp/MyActivity.java | 162 +++++++++--------- .../gradle/wrapper/gradle-wrapper.properties | 2 +- 28 files changed, 207 insertions(+), 288 deletions(-) diff --git a/AdvancedExample/app/build.gradle b/AdvancedExample/app/build.gradle index 402de0e8..4f019164 100644 --- a/AdvancedExample/app/build.gradle +++ b/AdvancedExample/app/build.gradle @@ -40,5 +40,5 @@ dependencies { implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.mediarouter:mediarouter:1.7.0' implementation 'com.android.support.constraint:constraint-layout:2.0.4' - implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.34.0' + implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.35.0' } diff --git a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/samplevideoplayer/SampleVideoPlayer.java b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/samplevideoplayer/SampleVideoPlayer.java index 9835b1f4..f322d0e2 100644 --- a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/samplevideoplayer/SampleVideoPlayer.java +++ b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/samplevideoplayer/SampleVideoPlayer.java @@ -4,7 +4,6 @@ import android.content.Context; import android.media.AudioManager; -import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaPlayer.OnErrorListener; import android.util.AttributeSet; @@ -24,7 +23,7 @@ private enum PlaybackState { private MediaController mediaController; private PlaybackState playbackState; - private final List videoPlayerCallbacks = new ArrayList(1); + private final List videoPlayerCallbacks = new ArrayList<>(1); public SampleVideoPlayer(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); @@ -49,36 +48,28 @@ private void init() { // Set OnCompletionListener to notify our callbacks when the video is completed. super.setOnCompletionListener( - new OnCompletionListener() { - - @Override - public void onCompletion(MediaPlayer mediaPlayer) { - // Reset the MediaPlayer. - playbackState = PlaybackState.STOPPED; - mediaPlayer.reset(); - mediaPlayer.setDisplay(getHolder()); - - for (PlayerCallback callback : videoPlayerCallbacks) { - callback.onComplete(); - } + mediaPlayer -> { + // Reset the MediaPlayer. + playbackState = PlaybackState.STOPPED; + mediaPlayer.reset(); + mediaPlayer.setDisplay(getHolder()); + + for (PlayerCallback callback : videoPlayerCallbacks) { + callback.onComplete(); } }); // Set OnErrorListener to notify our callbacks if the video errors. super.setOnErrorListener( - new OnErrorListener() { - - @Override - public boolean onError(MediaPlayer mp, int what, int extra) { - playbackState = PlaybackState.STOPPED; - for (PlayerCallback callback : videoPlayerCallbacks) { - callback.onError(); - } - - // Returning true signals to MediaPlayer that we handled the error. This will - // prevent the completion handler from being called. - return true; + (mp, what, extra) -> { + playbackState = PlaybackState.STOPPED; + for (PlayerCallback callback : videoPlayerCallbacks) { + callback.onError(); } + + // Returning true signals to MediaPlayer that we handled the error. This will + // prevent the completion handler from being called. + return true; }); } diff --git a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/samplevideoplayer/VideoPlayer.java b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/samplevideoplayer/VideoPlayer.java index dec4ca1a..170e7625 100644 --- a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/samplevideoplayer/VideoPlayer.java +++ b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/samplevideoplayer/VideoPlayer.java @@ -6,7 +6,7 @@ public interface VideoPlayer { /** Interface for alerting caller of major video events. */ - public interface PlayerCallback { + interface PlayerCallback { /** Called when the current video starts playing from the beginning. */ void onPlay(); diff --git a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/MyActivity.java b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/MyActivity.java index 495b2374..3f490ffe 100644 --- a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/MyActivity.java +++ b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/MyActivity.java @@ -65,7 +65,6 @@ public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. - int id = item.getItemId(); return super.onOptionsItemSelected(item); } diff --git a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoFragment.java b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoFragment.java index f8064aed..b09e5853 100644 --- a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoFragment.java +++ b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoFragment.java @@ -23,7 +23,7 @@ public class VideoFragment extends Fragment { /** Listener called when the fragment's onCreateView is fired. */ public interface OnVideoFragmentViewCreatedListener { - public void onVideoFragmentViewCreated(); + void onVideoFragmentViewCreated(); } @Override @@ -61,7 +61,7 @@ private void initUi(View rootView) { // Make the dummyScrollContent height the size of the screen height. DisplayMetrics displayMetrics = new DisplayMetrics(); - getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); + requireActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); ConstraintLayout constraintLayout = rootView.findViewById(R.id.constraintLayout); ConstraintSet forceHeight = new ConstraintSet(); forceHeight.clone(constraintLayout); @@ -72,13 +72,10 @@ private void initUi(View rootView) { // Provide an implementation of a logger so we can output SDK events to the UI. VideoPlayerController.Logger logger = - new VideoPlayerController.Logger() { - @Override - public void log(String message) { - Log.i("ImaExample", message); - if (logText != null) { - logText.append(message); - } + message -> { + Log.i("ImaExample", message); + if (logText != null) { + logText.append(message); } }; @@ -113,10 +110,6 @@ public void makeFullscreen(boolean isFullscreen) { } } - public VideoPlayerController getVideoPlayerController() { - return videoPlayerController; - } - @Override public void onPause() { if (videoPlayerController != null) { @@ -141,8 +134,4 @@ public void onDestroy() { } super.onDestroy(); } - - public boolean isVmap() { - return videoItem.getIsVmap(); - } } diff --git a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoItemAdapter.java b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoItemAdapter.java index ae0a5355..79b3bb55 100644 --- a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoItemAdapter.java +++ b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoItemAdapter.java @@ -12,7 +12,7 @@ /** Renders VideoItems into a GridView for displaying videos in a playlist format. */ public class VideoItemAdapter extends ArrayAdapter { - private int layoutResourceId; + private final int layoutResourceId; public VideoItemAdapter(Context context, int layoutResourceId, List data) { super(context, layoutResourceId, data); @@ -29,8 +29,8 @@ public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = LayoutInflater.from(getContext()); row = inflater.inflate(layoutResourceId, parent, false); videoItemHolder = new VideoItemHolder(); - videoItemHolder.title = (TextView) row.findViewById(R.id.videoItemText); - videoItemHolder.image = (ImageView) row.findViewById(R.id.videoItemImage); + videoItemHolder.title = row.findViewById(R.id.videoItemText); + videoItemHolder.image = row.findViewById(R.id.videoItemImage); row.setTag(videoItemHolder); } else { videoItemHolder = (VideoItemHolder) row.getTag(); @@ -38,6 +38,7 @@ public View getView(int position, View convertView, ViewGroup parent) { VideoItem item = getItem(position); + assert item != null; videoItemHolder.title.setText(item.getTitle()); videoItemHolder.image.setImageResource(item.getImageResource()); @@ -45,7 +46,7 @@ public View getView(int position, View convertView, ViewGroup parent) { } /** Holds the UI element equivalents of a VideoItem. */ - private class VideoItemHolder { + private static class VideoItemHolder { TextView title; ImageView image; diff --git a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoListFragment.java b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoListFragment.java index ded40416..0a23499f 100644 --- a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoListFragment.java +++ b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoListFragment.java @@ -2,12 +2,10 @@ import android.app.AlertDialog; import android.content.Context; -import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.AdapterView; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ListView; @@ -18,7 +16,7 @@ /** Fragment for displaying a playlist of video thumbnails that the user can select from to play. */ public class VideoListFragment extends Fragment { - private OnVideoSelectedListener selectedCallback; + OnVideoSelectedListener selectedCallback; LayoutInflater inflater; ViewGroup container; @@ -44,16 +42,14 @@ public void onAttach(Context context) { selectedCallback = (OnVideoSelectedListener) context; } catch (ClassCastException e) { throw new ClassCastException( - context.toString() + " must implement " + OnVideoSelectedListener.class.getName()); + context + " must implement " + OnVideoSelectedListener.class.getName()); } try { resumeCallback = (OnVideoListFragmentResumedListener) context; } catch (ClassCastException e) { throw new ClassCastException( - context.toString() - + " must implement " - + OnVideoListFragmentResumedListener.class.getName()); + context + " must implement " + OnVideoListFragmentResumedListener.class.getName()); } } @@ -64,24 +60,21 @@ public View onCreateView( this.container = container; View rootView = inflater.inflate(R.layout.fragment_video_list, container, false); - final ListView listView = (ListView) rootView.findViewById(R.id.videoListView); + final ListView listView = rootView.findViewById(R.id.videoListView); VideoItemAdapter videoItemAdapter = new VideoItemAdapter(rootView.getContext(), R.layout.video_item, getVideoItems()); listView.setAdapter(videoItemAdapter); listView.setOnItemClickListener( - new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View v, int position, long id) { - if (selectedCallback != null) { - VideoItem selectedVideo = (VideoItem) listView.getItemAtPosition(position); - - // If applicable, prompt the user to input a custom ad tag. - if (selectedVideo.getAdTagUrl().equals(getString(R.string.custom_ad_tag_value))) { - getCustomAdTag(selectedVideo); - } else { - selectedCallback.onVideoSelected(selectedVideo); - } + (parent, v, position, id) -> { + if (selectedCallback != null) { + VideoItem selectedVideo = (VideoItem) listView.getItemAtPosition(position); + + // If applicable, prompt the user to input a custom ad tag. + if (selectedVideo.getAdTagUrl().equals(getString(R.string.custom_ad_tag_value))) { + getCustomAdTag(selectedVideo); + } else { + selectedCallback.onVideoSelected(selectedVideo); } } }); @@ -91,9 +84,9 @@ public void onItemClick(AdapterView parent, View v, int position, long id) { private void getCustomAdTag(VideoItem originalVideoItem) { View dialogueView = inflater.inflate(R.layout.custom_ad_tag, container, false); - final EditText txtUrl = (EditText) dialogueView.findViewById(R.id.customTag); + final EditText txtUrl = dialogueView.findViewById(R.id.customTag); txtUrl.setHint("VAST ad tag URL"); - final CheckBox isVmap = (CheckBox) dialogueView.findViewById(R.id.isVmap); + final CheckBox isVmap = dialogueView.findViewById(R.id.isVmap); final VideoItem videoItem = originalVideoItem; new AlertDialog.Builder(this.getActivity()) @@ -101,32 +94,26 @@ private void getCustomAdTag(VideoItem originalVideoItem) { .setView(dialogueView) .setPositiveButton( "OK", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int whichButton) { - String customAdTagUrl = txtUrl.getText().toString(); - VideoItem customAdTagVideoItem = - new VideoItem( - videoItem.getVideoUrl(), - videoItem.getTitle(), - customAdTagUrl, - videoItem.getImageResource(), - isVmap.isChecked()); - - if (selectedCallback != null) { - selectedCallback.onVideoSelected(customAdTagVideoItem); - } + (dialog, whichButton) -> { + String customAdTagUrl = txtUrl.getText().toString(); + VideoItem customAdTagVideoItem = + new VideoItem( + videoItem.getVideoUrl(), + videoItem.getTitle(), + customAdTagUrl, + videoItem.getImageResource(), + isVmap.isChecked()); + + if (selectedCallback != null) { + selectedCallback.onVideoSelected(customAdTagVideoItem); } }) - .setNegativeButton( - "Cancel", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int whichButton) {} - }) + .setNegativeButton("Cancel", (dialog, whichButton) -> {}) .show(); } private List getVideoItems() { - final List videoItems = new ArrayList(); + final List videoItems = new ArrayList<>(); // Iterate through the videos' metadata and add video items to list. for (int i = 0; i < VideoMetadata.APP_VIDEOS.size(); i++) { diff --git a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoMetadata.java b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoMetadata.java index 621454f5..ade88a67 100644 --- a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoMetadata.java +++ b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoMetadata.java @@ -82,8 +82,7 @@ public enum VideoMetadata { /** If the ad is VMAP. */ public final boolean isVmap; - private VideoMetadata( - String videoUrl, String title, String adTagUrl, int thumbnail, boolean isVmap) { + VideoMetadata(String videoUrl, String title, String adTagUrl, int thumbnail, boolean isVmap) { this.videoUrl = videoUrl; this.title = title; this.adTagUrl = adTagUrl; diff --git a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoPlayerController.java b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoPlayerController.java index a5e2ef1c..39c89c69 100644 --- a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoPlayerController.java +++ b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoPlayerController.java @@ -26,7 +26,7 @@ public interface Logger { } // Container with references to video player and ad UI ViewGroup. - private AdDisplayContainer adDisplayContainer; + private final AdDisplayContainer adDisplayContainer; // The AdsLoader instance exposes the requestAds method. private final AdsLoader adsLoader; @@ -35,10 +35,10 @@ public interface Logger { private AdsManager adsManager; // Factory class for creating SDK objects. - private ImaSdkFactory sdkFactory; + private final ImaSdkFactory sdkFactory; // Ad-enabled video player. - private VideoPlayerWithAdPlayback videoPlayerWithAdPlayback; + private final VideoPlayerWithAdPlayback videoPlayerWithAdPlayback; // Button the user taps to begin video playback and ad request. private View playButton; @@ -50,17 +50,17 @@ public interface Logger { private String contentVideoUrl; // ViewGroup to render an associated companion ad into. - private ViewGroup companionViewGroup; + private final ViewGroup companionViewGroup; // Tracks if the SDK is playing an ad, since the SDK might not necessarily use the video // player provided to play the video ad. private boolean isAdPlaying; // View that handles taps to toggle ad pause/resume during video playback. - private View playPauseToggle; + private final View playPauseToggle; // View that we can write log messages to, to display in the UI. - private Logger log; + private final Logger log; private double playAdsAfterTime = -1; @@ -188,13 +188,7 @@ public void onAdError(AdErrorEvent adErrorEvent) { adsLoader.addAdsLoadedListener(new VideoPlayerController.AdsLoadedListener()); // When Play is clicked, request ads and hide the button. - playButton.setOnClickListener( - new View.OnClickListener() { - @Override - public void onClick(View view) { - requestAndPlayAds(-1); - } - }); + playButton.setOnClickListener(view -> requestAndPlayAds(-1)); } private void log(String message) { @@ -226,7 +220,7 @@ public String getAdTagUrl() { /** Request and subsequently play video ads from the ad server. */ public void requestAndPlayAds(double playAdsAfterTime) { - if (currentAdTagUrl == null || currentAdTagUrl == "") { + if (currentAdTagUrl == null || currentAdTagUrl.isEmpty()) { log("No VAST ad tag URL specified"); resumeContent(); return; @@ -255,19 +249,18 @@ private void setPlayPauseOnAdTouch() { // Use AdsManager pause/resume methods instead of the video player pause/resume methods // in case the SDK is using a different, SDK-created video player for ad playback. playPauseToggle.setOnTouchListener( - new View.OnTouchListener() { - public boolean onTouch(View view, MotionEvent event) { - // If an ad is playing, touching it will toggle playback. - if (event.getAction() == MotionEvent.ACTION_DOWN) { - if (isAdPlaying) { - adsManager.pause(); - } else { - adsManager.resume(); - } - return true; + (view, event) -> { + view.performClick(); + // If an ad is playing, touching it will toggle playback. + if (event.getAction() == MotionEvent.ACTION_DOWN) { + if (isAdPlaying) { + adsManager.pause(); } else { - return false; + adsManager.resume(); } + return true; + } else { + return false; } }); } diff --git a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoPlayerWithAdPlayback.java b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoPlayerWithAdPlayback.java index 02bc721f..93b37325 100644 --- a/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoPlayerWithAdPlayback.java +++ b/AdvancedExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoPlayerWithAdPlayback.java @@ -56,8 +56,7 @@ public class VideoPlayerWithAdPlayback extends RelativeLayout { // ContentProgressProvider interface implementation for the SDK to check content progress. private ContentProgressProvider contentProgressProvider; - private final List adCallbacks = - new ArrayList(1); + private final List adCallbacks = new ArrayList<>(1); public VideoPlayerWithAdPlayback(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); @@ -110,8 +109,8 @@ private void init() { contentHasCompleted = false; savedAdPosition = 0; savedContentPosition = 0; - videoPlayer = (VideoPlayer) this.getRootView().findViewById(R.id.videoPlayer); - adUiContainer = (ViewGroup) this.getRootView().findViewById(R.id.adUiContainer); + videoPlayer = this.getRootView().findViewById(R.id.videoPlayer); + adUiContainer = this.getRootView().findViewById(R.id.adUiContainer); // Define VideoAdPlayer connector. videoAdPlayer = @@ -177,15 +176,12 @@ public VideoProgressUpdate getAdProgress() { }; contentProgressProvider = - new ContentProgressProvider() { - @Override - public VideoProgressUpdate getContentProgress() { - if (isAdDisplayed || videoPlayer.getDuration() <= 0) { - return VideoProgressUpdate.VIDEO_TIME_NOT_READY; - } - return new VideoProgressUpdate( - videoPlayer.getCurrentPosition(), videoPlayer.getDuration()); + () -> { + if (isAdDisplayed || videoPlayer.getDuration() <= 0) { + return VideoProgressUpdate.VIDEO_TIME_NOT_READY; } + return new VideoProgressUpdate( + videoPlayer.getCurrentPosition(), videoPlayer.getDuration()); }; // Set player callbacks for delegating major video events. diff --git a/AdvancedExample/gradle/wrapper/gradle-wrapper.properties b/AdvancedExample/gradle/wrapper/gradle-wrapper.properties index de183985..82e606a5 100644 --- a/AdvancedExample/gradle/wrapper/gradle-wrapper.properties +++ b/AdvancedExample/gradle/wrapper/gradle-wrapper.properties @@ -2,5 +2,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip diff --git a/ExoPlayerExample/app/build.gradle b/ExoPlayerExample/app/build.gradle index 3a2c949d..87a61f29 100644 --- a/ExoPlayerExample/app/build.gradle +++ b/ExoPlayerExample/app/build.gradle @@ -32,7 +32,7 @@ repositories { } dependencies { - def media3_version = "1.3.1" + def media3_version = "1.4.1" implementation "androidx.media3:media3-ui:$media3_version" implementation "androidx.media3:media3-exoplayer:$media3_version" diff --git a/ExoPlayerExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/exoplayerexample/MyActivity.java b/ExoPlayerExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/exoplayerexample/MyActivity.java index d092684c..7ccd0aba 100644 --- a/ExoPlayerExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/exoplayerexample/MyActivity.java +++ b/ExoPlayerExample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/exoplayerexample/MyActivity.java @@ -57,20 +57,17 @@ public AdEvent.AdEventListener buildAdEventListener() { logText = findViewById(R.id.logText); logText.setMovementMethod(new ScrollingMovementMethod()); - AdEvent.AdEventListener imaAdEventListener = - event -> { - AdEvent.AdEventType eventType = event.getType(); - if (eventType == AdEvent.AdEventType.AD_PROGRESS) { - return; - } - String log = "IMA event: " + eventType; - if (logText != null) { - logText.append(log + "\n"); - } - Log.i(LOG_TAG, log); - }; - - return imaAdEventListener; + return event -> { + AdEvent.AdEventType eventType = event.getType(); + if (eventType == AdEvent.AdEventType.AD_PROGRESS) { + return; + } + String log = "IMA event: " + eventType; + if (logText != null) { + logText.append(log + "\n"); + } + Log.i(LOG_TAG, log); + }; } @Override diff --git a/ExoPlayerExample/gradle/wrapper/gradle-wrapper.properties b/ExoPlayerExample/gradle/wrapper/gradle-wrapper.properties index 5d6560a4..5af0f539 100644 --- a/ExoPlayerExample/gradle/wrapper/gradle-wrapper.properties +++ b/ExoPlayerExample/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip diff --git a/audioplayerexample/app/build.gradle b/audioplayerexample/app/build.gradle index 858057a1..1b2e9e26 100644 --- a/audioplayerexample/app/build.gradle +++ b/audioplayerexample/app/build.gradle @@ -44,11 +44,11 @@ dependencies { implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0")) implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'androidx.media:media:1.7.0' - def media3_version = "1.3.1" + def media3_version = "1.4.1" implementation "androidx.media3:media3-ui:$media3_version" implementation "androidx.media3:media3-exoplayer:$media3_version" implementation "androidx.media3:media3-session:$media3_version" implementation 'com.google.guava:guava:32.1.3-android' - implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.34.0' + implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.35.0' } diff --git a/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/AudioPlayerService.java b/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/AudioPlayerService.java index 6e060ec0..9c09c6b4 100644 --- a/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/AudioPlayerService.java +++ b/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/AudioPlayerService.java @@ -142,7 +142,7 @@ public void onNotificationCancelled(int notificationId, boolean dismissedByUser) mediaSession = new MediaSession.Builder(context, player).build(); - playerNotificationManager.setMediaSessionToken(mediaSession.getSessionCompatToken()); + playerNotificationManager.setMediaSessionToken(mediaSession.getPlatformToken()); imaService = new ImaService(context, dataSourceFactory, new SharedAudioPlayer()); } diff --git a/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/Constants.java b/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/Constants.java index 14f98d3f..f7293f3e 100644 --- a/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/Constants.java +++ b/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/Constants.java @@ -4,7 +4,6 @@ public final class Constants { public static final String PLAYBACK_CHANNEL_ID = "playback_channel"; public static final int PLAYBACK_NOTIFICATION_ID = 1; - public static final String MEDIA_SESSION_TAG = "audio_demo"; private Constants() {} } diff --git a/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/ImaService.java b/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/ImaService.java index f237196b..496b6584 100644 --- a/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/ImaService.java +++ b/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/ImaService.java @@ -24,7 +24,6 @@ import com.google.ads.interactivemedia.v3.api.ImaSdkFactory; import com.google.ads.interactivemedia.v3.api.ImaSdkSettings; import com.google.ads.interactivemedia.v3.api.player.AdMediaInfo; -import com.google.ads.interactivemedia.v3.api.player.ContentProgressProvider; import com.google.ads.interactivemedia.v3.api.player.VideoAdPlayer; import com.google.ads.interactivemedia.v3.api.player.VideoAdPlayer.VideoAdPlayerCallback; import com.google.ads.interactivemedia.v3.api.player.VideoProgressUpdate; @@ -51,7 +50,6 @@ public final class ImaService private final ImaSdkFactory sdkFactory; private final ImaSdkSettings imaSdkSettings; private final DefaultDataSource.Factory dataSourceFactory; - public ImaVideoAdPlayer imaVideoAdPlayer = new ImaVideoAdPlayer(); @androidx.media3.common.util.UnstableApi @@ -86,12 +84,7 @@ public void requestAds(String adTagUrl) { request.setAdTagUrl(adTagUrl); // The ContentProgressProvider is only needed for scheduling ads with VMAP ad requests request.setContentProgressProvider( - new ContentProgressProvider() { - @Override - public VideoProgressUpdate getContentProgress() { - return new VideoProgressUpdate(exoPlayer.getCurrentPosition(), exoPlayer.getDuration()); - } - }); + () -> new VideoProgressUpdate(exoPlayer.getCurrentPosition(), exoPlayer.getDuration())); adsLoader.requestAds(request); } @@ -105,11 +98,7 @@ public void onAdsManagerLoaded(AdsManagerLoadedEvent adsManagerLoadedEvent) { @Override public void onAdError(AdErrorEvent adErrorEvent) { - if (adErrorEvent.getError().getMessage() != null) { - Log.e(LOGGING_TAG, "Ad Error: ".concat(adErrorEvent.getError().getMessage().toString())); - } else { - Log.e(LOGGING_TAG, "Ad Error: null"); - } + Log.e(LOGGING_TAG, "Ad Error: ".concat(adErrorEvent.getError().getMessage())); } @Override diff --git a/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/MainActivity.java b/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/MainActivity.java index 11368755..1999ffc7 100644 --- a/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/MainActivity.java +++ b/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/MainActivity.java @@ -7,11 +7,7 @@ import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; -import android.view.View; -import android.view.View.OnClickListener; import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; @@ -48,23 +44,17 @@ protected void onCreate(Bundle savedInstanceState) { ListView listView = findViewById(R.id.list_view); listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, sampleList)); listView.setOnItemClickListener( - new OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - if (serviceBound) { - binder.updateSong(position); - } + (parent, view, position, id) -> { + if (serviceBound) { + binder.updateSong(position); } }); Button requestAdButton = findViewById(R.id.requestAd); requestAdButton.setOnClickListener( - new OnClickListener() { - @Override - public void onClick(View v) { - if (serviceBound) { - binder.requestAd(AD_TAG_URL); - } + view -> { + if (serviceBound) { + binder.requestAd(AD_TAG_URL); } }); } @@ -72,9 +62,7 @@ public void onClick(View v) { @Override public void onDestroy() { super.onDestroy(); - if (connection != null) { - unbindService(connection); - } + unbindService(connection); } /** Defines callbacks for service binding, passed to bindService() */ diff --git a/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/Samples.java b/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/Samples.java index 722669e6..829a848c 100644 --- a/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/Samples.java +++ b/audioplayerexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/audioplayerexample/Samples.java @@ -8,6 +8,7 @@ import android.support.v4.media.MediaDescriptionCompat; import android.support.v4.media.MediaMetadataCompat; import androidx.annotation.DrawableRes; +import androidx.core.content.res.ResourcesCompat; /** Helper to provide a list of sample audio files for the app. */ public final class Samples { @@ -76,7 +77,9 @@ public static MediaDescriptionCompat getMediaDescription(Context context, Sample } public static Bitmap getBitmap(Context context, @DrawableRes int bitmapResource) { - return ((BitmapDrawable) context.getResources().getDrawable(bitmapResource)).getBitmap(); + return ((BitmapDrawable) + ResourcesCompat.getDrawable(context.getResources(), bitmapResource, context.getTheme())) + .getBitmap(); } private Samples() {} diff --git a/audioplayerexample/gradle/wrapper/gradle-wrapper.properties b/audioplayerexample/gradle/wrapper/gradle-wrapper.properties index 5d6560a4..348c409e 100644 --- a/audioplayerexample/gradle/wrapper/gradle-wrapper.properties +++ b/audioplayerexample/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip diff --git a/basicexample/app/build.gradle b/basicexample/app/build.gradle index 65294779..172d41ad 100644 --- a/basicexample/app/build.gradle +++ b/basicexample/app/build.gradle @@ -36,5 +36,5 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'androidx.browser:browser:1.8.0' implementation 'androidx.media:media:1.7.0' - implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.34.0' + implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.35.0' } diff --git a/basicexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/MyActivity.java b/basicexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/MyActivity.java index f03dbdf9..04352dba 100644 --- a/basicexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/MyActivity.java +++ b/basicexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/MyActivity.java @@ -10,7 +10,6 @@ import android.view.View; import android.widget.MediaController; import android.widget.VideoView; -import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import com.google.ads.interactivemedia.v3.api.AdDisplayContainer; import com.google.ads.interactivemedia.v3.api.AdErrorEvent; @@ -58,7 +57,6 @@ public class MyActivity extends AppCompatActivity { // the VideoView. private VideoView videoPlayer; private MediaController mediaController; - private View playButton; private VideoAdPlayerAdapter videoAdPlayerAdapter; @Override @@ -182,7 +180,7 @@ public void onAdEvent(AdEvent adEvent) { }); // When the play button is clicked, request ads and hide the button. - playButton = findViewById(R.id.playButton); + View playButton = findViewById(R.id.playButton); playButton.setOnClickListener( view -> { videoPlayer.setVideoPath(SAMPLE_VIDEO_URL); @@ -193,7 +191,7 @@ public void onAdEvent(AdEvent adEvent) { } @Override - public void onConfigurationChanged(@NonNull Configuration configuration) { + public void onConfigurationChanged(Configuration configuration) { super.onConfigurationChanged(configuration); // Hide the extra content when in landscape so the video is as large as possible. updateVideoDescriptionVisibility(); @@ -233,7 +231,7 @@ private void resumeContent() { mediaPlayer -> videoAdPlayerAdapter.notifyImaOnContentCompleted()); } - private void requestAds(@NonNull String adTagUrl) { + private void requestAds(String adTagUrl) { // Create the ads request. AdsRequest request = sdkFactory.createAdsRequest(); request.setAdTagUrl(adTagUrl); diff --git a/basicexample/gradle/wrapper/gradle-wrapper.properties b/basicexample/gradle/wrapper/gradle-wrapper.properties index 5d6560a4..348c409e 100644 --- a/basicexample/gradle/wrapper/gradle-wrapper.properties +++ b/basicexample/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip diff --git a/umpexample/app/build.gradle b/umpexample/app/build.gradle index 19ae58c7..9aa3700f 100644 --- a/umpexample/app/build.gradle +++ b/umpexample/app/build.gradle @@ -36,6 +36,6 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'androidx.browser:browser:1.8.0' implementation 'androidx.media:media:1.7.0' - implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.34.0' - implementation 'com.google.android.ump:user-messaging-platform:2.2.0' + implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.35.0' + implementation 'com.google.android.ump:user-messaging-platform:3.0.0' } diff --git a/umpexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/umpimaapp/ConsentManager.java b/umpexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/umpimaapp/ConsentManager.java index 6e00f764..ed7e52c8 100644 --- a/umpexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/umpimaapp/ConsentManager.java +++ b/umpexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/umpimaapp/ConsentManager.java @@ -1,7 +1,6 @@ package com.google.ads.interactivemedia.v3.samples.umpimaapp; import android.app.Activity; -import androidx.annotation.NonNull; import com.google.android.ump.ConsentDebugSettings; import com.google.android.ump.ConsentForm.OnConsentFormDismissedListener; import com.google.android.ump.ConsentInformation; @@ -27,7 +26,7 @@ public interface OnConsentGatheringCompleteListener { } /** Constructor */ - public ConsentManager(@NonNull Activity activity) { + public ConsentManager(Activity activity) { this.activity = activity; this.consentInformation = UserMessagingPlatform.getConsentInformation(activity); } @@ -72,13 +71,8 @@ public void gatherConsent(OnConsentGatheringCompleteListener onConsentGatheringC params, () -> UserMessagingPlatform.loadAndShowConsentFormIfRequired( - activity, - formError -> { - // Consent has been gathered. - onConsentGatheringCompleteListener.consentGatheringComplete(formError); - }), - requestConsentError -> - onConsentGatheringCompleteListener.consentGatheringComplete(requestConsentError)); + activity, onConsentGatheringCompleteListener::consentGatheringComplete), + onConsentGatheringCompleteListener::consentGatheringComplete); } /** Shows a form to app users for collecting their consent. */ diff --git a/umpexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/umpimaapp/MyActivity.java b/umpexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/umpimaapp/MyActivity.java index cfa0a7ea..3164df33 100644 --- a/umpexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/umpimaapp/MyActivity.java +++ b/umpexample/app/src/main/java/com/google/ads/interactivemedia/v3/samples/umpimaapp/MyActivity.java @@ -11,14 +11,12 @@ import android.widget.Button; import android.widget.MediaController; import android.widget.VideoView; -import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import com.google.ads.interactivemedia.v3.api.AdDisplayContainer; import com.google.ads.interactivemedia.v3.api.AdErrorEvent; import com.google.ads.interactivemedia.v3.api.AdEvent; import com.google.ads.interactivemedia.v3.api.AdsLoader; import com.google.ads.interactivemedia.v3.api.AdsManager; -import com.google.ads.interactivemedia.v3.api.AdsManagerLoadedEvent; import com.google.ads.interactivemedia.v3.api.AdsRenderingSettings; import com.google.ads.interactivemedia.v3.api.AdsRequest; import com.google.ads.interactivemedia.v3.api.ImaSdkFactory; @@ -145,89 +143,87 @@ public void onAdError(AdErrorEvent adErrorEvent) { resumeContent(); } }); + adsLoader.addAdsLoadedListener( - new AdsLoader.AdsLoadedListener() { - @Override - public void onAdsManagerLoaded(AdsManagerLoadedEvent adsManagerLoadedEvent) { - // Ads were successfully loaded, so get the AdsManager instance. AdsManager has - // events for ad playback and errors. - adsManager = adsManagerLoadedEvent.getAdsManager(); - - // Attach event and error event listeners. - adsManager.addAdErrorListener( - new AdErrorEvent.AdErrorListener() { - /** An event raised when there is an error loading or playing ads. */ - @Override - public void onAdError(AdErrorEvent adErrorEvent) { - Log.e(LOGTAG, "Ad Error: " + adErrorEvent.getError().getMessage()); - String universalAdIds = - Arrays.toString(adsManager.getCurrentAd().getUniversalAdIds()); - Log.i( - LOGTAG, - "Discarding the current ad break with universal " - + "ad Ids: " - + universalAdIds); - adsManager.discardAdBreak(); + adsManagerLoadedEvent -> { + // Ads were successfully loaded, so get the AdsManager instance. AdsManager has + // events for ad playback and errors. + adsManager = adsManagerLoadedEvent.getAdsManager(); + + // Attach event and error event listeners. + adsManager.addAdErrorListener( + new AdErrorEvent.AdErrorListener() { + /** An event raised when there is an error loading or playing ads. */ + @Override + public void onAdError(AdErrorEvent adErrorEvent) { + Log.e(LOGTAG, "Ad Error: " + adErrorEvent.getError().getMessage()); + String universalAdIds = + Arrays.toString(adsManager.getCurrentAd().getUniversalAdIds()); + Log.i( + LOGTAG, + "Discarding the current ad break with universal " + + "ad Ids: " + + universalAdIds); + adsManager.discardAdBreak(); + } + }); + adsManager.addAdEventListener( + new AdEvent.AdEventListener() { + /** Responds to AdEvents. */ + @Override + public void onAdEvent(AdEvent adEvent) { + if (adEvent.getType() != AdEvent.AdEventType.AD_PROGRESS) { + Log.i(LOGTAG, "Event: " + adEvent.getType()); } - }); - adsManager.addAdEventListener( - new AdEvent.AdEventListener() { - /** Responds to AdEvents. */ - @Override - public void onAdEvent(AdEvent adEvent) { - if (adEvent.getType() != AdEvent.AdEventType.AD_PROGRESS) { - Log.i(LOGTAG, "Event: " + adEvent.getType()); - } - // These are the suggested event types to handle. For full list of - // all ad event types, see AdEvent.AdEventType documentation. - switch (adEvent.getType()) { - case LOADED: - // AdEventType.LOADED is fired when ads are ready to play. - - // This sample app uses the sample tag - // single_preroll_skippable_ad_tag_url that requires calling - // AdsManager.start() to start ad playback. - // If you use a different ad tag URL that returns a VMAP or - // an ad rules playlist, the adsManager.init() function will - // trigger ad playback automatically and the IMA SDK will - // ignore the adsManager.start(). - // It is safe to always call adsManager.start() in the - // LOADED event. - adsManager.start(); - break; - case CONTENT_PAUSE_REQUESTED: - // AdEventType.CONTENT_PAUSE_REQUESTED is fired when you - // should pause your content and start playing an ad. - pauseContentForAds(); - break; - case CONTENT_RESUME_REQUESTED: - // AdEventType.CONTENT_RESUME_REQUESTED is fired when the ad - // you should play your content. - resumeContent(); - break; - case ALL_ADS_COMPLETED: - // Calling adsManager.destroy() triggers the function - // VideoAdPlayer.release(). - adsManager.destroy(); - adsManager = null; - break; - case CLICKED: - // When the user clicks on the Learn More button, the IMA SDK fires - // this event, pauses the ad, and opens the ad's click-through URL. - // When the user returns to the app, the IMA SDK calls the - // VideoAdPlayer.playAd() function automatically. - break; - default: - break; - } + // These are the suggested event types to handle. For full list of + // all ad event types, see AdEvent.AdEventType documentation. + switch (adEvent.getType()) { + case LOADED: + // AdEventType.LOADED is fired when ads are ready to play. + + // This sample app uses the sample tag + // single_preroll_skippable_ad_tag_url that requires calling + // AdsManager.start() to start ad playback. + // If you use a different ad tag URL that returns a VMAP or + // an ad rules playlist, the adsManager.init() function will + // trigger ad playback automatically and the IMA SDK will + // ignore the adsManager.start(). + // It is safe to always call adsManager.start() in the + // LOADED event. + adsManager.start(); + break; + case CONTENT_PAUSE_REQUESTED: + // AdEventType.CONTENT_PAUSE_REQUESTED is fired when you + // should pause your content and start playing an ad. + pauseContentForAds(); + break; + case CONTENT_RESUME_REQUESTED: + // AdEventType.CONTENT_RESUME_REQUESTED is fired when the ad + // you should play your content. + resumeContent(); + break; + case ALL_ADS_COMPLETED: + // Calling adsManager.destroy() triggers the function + // VideoAdPlayer.release(). + adsManager.destroy(); + adsManager = null; + break; + case CLICKED: + // When the user clicks on the Learn More button, the IMA SDK fires + // this event, pauses the ad, and opens the ad's click-through URL. + // When the user returns to the app, the IMA SDK calls the + // VideoAdPlayer.playAd() function automatically. + break; + default: + break; } - }); - AdsRenderingSettings adsRenderingSettings = - ImaSdkFactory.getInstance().createAdsRenderingSettings(); - // Add any ads rendering settings here. - // This init() only loads the UI rendering settings locally. - adsManager.init(adsRenderingSettings); - } + } + }); + AdsRenderingSettings adsRenderingSettings = + ImaSdkFactory.getInstance().createAdsRenderingSettings(); + // Add any ads rendering settings here. + // This init() only loads the UI rendering settings locally. + adsManager.init(adsRenderingSettings); }); } @@ -267,7 +263,7 @@ private void resumeContent() { mediaPlayer -> videoAdPlayerAdapter.notifyImaOnContentCompleted()); } - private void requestAds(@NonNull String adTagUrl) { + private void requestAds(String adTagUrl) { // Create the ads request. AdsRequest request = sdkFactory.createAdsRequest(); request.setAdTagUrl(adTagUrl); diff --git a/umpexample/gradle/wrapper/gradle-wrapper.properties b/umpexample/gradle/wrapper/gradle-wrapper.properties index 5d6560a4..348c409e 100644 --- a/umpexample/gradle/wrapper/gradle-wrapper.properties +++ b/umpexample/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip