Commit 036b0501 authored by Simeon Anfinrud's avatar Simeon Anfinrud Committed by Commit Bot

[Chromecast] Encapsulate request/abandonAudioFocus.

This allows all users of CastAudioManager to use
request/abandonAudioFocus() without a @SuppressWarnings
annotation.

This paves the way for encapsulating SDK-dependent
implementation details for AudioManager in CastAudioManager,
reducing the number of SDK version checks that need to be
performed throughout the codebase.

Bug: Internal b/70158727
Test: build cast_shell_java
      Run internal junit tests
Merge-With: eureka-internal/127089

Change-Id: Iacd88d1d2e298ddd3b9ae6eb2749f0a43b5ede77
Reviewed-on: https://chromium-review.googlesource.com/806929
Commit-Queue: Simeon Anfinrud <sanfin@chromium.org>
Reviewed-by: default avatarLuke Halliwell <halliwell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#521547}
parent e5df6cff
......@@ -12,14 +12,41 @@ import android.media.AudioManager;
* Muting and unmuting streams must be invoke on the same AudioManager instance.
*/
public class CastAudioManager {
// TODO(sanfin): This class should encapsulate SDK-dependent implementation details of
// android.media.AudioManager.
private static CastAudioManager sInstance = null;
private static AudioManager sAudioManager = null;
public static CastAudioManager getAudioManager(Context context) {
if (sInstance == null) {
sInstance = new CastAudioManager(
(AudioManager) context.getApplicationContext().getSystemService(
Context.AUDIO_SERVICE));
}
return sInstance;
}
private final AudioManager mAudioManager;
private CastAudioManager(AudioManager audioManager) {
mAudioManager = audioManager;
}
// TODO(sanfin): Use the AudioFocusRequest version on O and above.
@SuppressWarnings("deprecation")
public int requestAudioFocus(
AudioManager.OnAudioFocusChangeListener l, int streamType, int durationHint) {
return mAudioManager.requestAudioFocus(l, streamType, durationHint);
}
public static AudioManager getAudioManager(Context context) {
if (sAudioManager == null) {
sAudioManager = (AudioManager) context.getApplicationContext()
.getSystemService(Context.AUDIO_SERVICE);
// TODO(sanfin): Use the AudioFocusRequest version on O and above.
@SuppressWarnings("deprecation")
public int abandonAudioFocus(AudioManager.OnAudioFocusChangeListener l) {
return mAudioManager.abandonAudioFocus(l);
}
return sAudioManager;
// TODO(sanfin): Do not expose this. All needed AudioManager methods can be adapted with
// CastAudioManager.
public AudioManager getInternal() {
return mAudioManager;
}
}
......@@ -51,7 +51,7 @@ public class CastWebContentsActivity extends Activity {
private BroadcastReceiver mWindowDestroyedBroadcastReceiver;
private BroadcastReceiver mScreenOffBroadcastReceiver;
private FrameLayout mCastWebContentsLayout;
private AudioManager mAudioManager;
private CastAudioManager mAudioManager;
private ContentViewRenderView mContentViewRenderView;
private WindowAndroid mWindow;
private ContentViewCore mContentViewCore;
......@@ -334,7 +334,7 @@ public class CastWebContentsActivity extends Activity {
@SuppressWarnings("deprecation")
private void releaseStreamMuteIfNecessary() {
AudioManager audioManager = CastAudioManager.getAudioManager(this);
AudioManager audioManager = mAudioManager.getInternal();
boolean isMuted = false;
try {
isMuted = (Boolean) audioManager.getClass()
......
......@@ -32,7 +32,7 @@ public class CastWebContentsService extends Service {
private static final int CAST_NOTIFICATION_ID = 100;
private String mInstanceId;
private AudioManager mAudioManager;
private CastAudioManager mAudioManager;
private WindowAndroid mWindow;
private ContentViewCore mContentViewCore;
private ContentView mContentView;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment