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; ...@@ -12,14 +12,41 @@ import android.media.AudioManager;
* Muting and unmuting streams must be invoke on the same AudioManager instance. * Muting and unmuting streams must be invoke on the same AudioManager instance.
*/ */
public class CastAudioManager { 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) {
public static AudioManager getAudioManager(Context context) { sInstance = new CastAudioManager(
if (sAudioManager == null) { (AudioManager) context.getApplicationContext().getSystemService(
sAudioManager = (AudioManager) context.getApplicationContext() Context.AUDIO_SERVICE));
.getSystemService(Context.AUDIO_SERVICE);
} }
return sAudioManager; 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);
}
// TODO(sanfin): Use the AudioFocusRequest version on O and above.
@SuppressWarnings("deprecation")
public int abandonAudioFocus(AudioManager.OnAudioFocusChangeListener l) {
return mAudioManager.abandonAudioFocus(l);
}
// 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 { ...@@ -51,7 +51,7 @@ public class CastWebContentsActivity extends Activity {
private BroadcastReceiver mWindowDestroyedBroadcastReceiver; private BroadcastReceiver mWindowDestroyedBroadcastReceiver;
private BroadcastReceiver mScreenOffBroadcastReceiver; private BroadcastReceiver mScreenOffBroadcastReceiver;
private FrameLayout mCastWebContentsLayout; private FrameLayout mCastWebContentsLayout;
private AudioManager mAudioManager; private CastAudioManager mAudioManager;
private ContentViewRenderView mContentViewRenderView; private ContentViewRenderView mContentViewRenderView;
private WindowAndroid mWindow; private WindowAndroid mWindow;
private ContentViewCore mContentViewCore; private ContentViewCore mContentViewCore;
...@@ -334,7 +334,7 @@ public class CastWebContentsActivity extends Activity { ...@@ -334,7 +334,7 @@ public class CastWebContentsActivity extends Activity {
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
private void releaseStreamMuteIfNecessary() { private void releaseStreamMuteIfNecessary() {
AudioManager audioManager = CastAudioManager.getAudioManager(this); AudioManager audioManager = mAudioManager.getInternal();
boolean isMuted = false; boolean isMuted = false;
try { try {
isMuted = (Boolean) audioManager.getClass() isMuted = (Boolean) audioManager.getClass()
......
...@@ -32,7 +32,7 @@ public class CastWebContentsService extends Service { ...@@ -32,7 +32,7 @@ public class CastWebContentsService extends Service {
private static final int CAST_NOTIFICATION_ID = 100; private static final int CAST_NOTIFICATION_ID = 100;
private String mInstanceId; private String mInstanceId;
private AudioManager mAudioManager; private CastAudioManager mAudioManager;
private WindowAndroid mWindow; private WindowAndroid mWindow;
private ContentViewCore mContentViewCore; private ContentViewCore mContentViewCore;
private ContentView mContentView; 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