Commit c5bc2d5f by aquilescanta Committed by Oliver Woodman

Add support for reporting AudioCapabilities changes on custom threads

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=208622197
parent 8854aa41
...@@ -20,6 +20,7 @@ import android.content.Context; ...@@ -20,6 +20,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.media.AudioManager; import android.media.AudioManager;
import android.os.Handler;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
...@@ -45,6 +46,7 @@ public final class AudioCapabilitiesReceiver { ...@@ -45,6 +46,7 @@ public final class AudioCapabilitiesReceiver {
} }
private final Context context; private final Context context;
private final @Nullable Handler handler;
private final Listener listener; private final Listener listener;
private final @Nullable BroadcastReceiver receiver; private final @Nullable BroadcastReceiver receiver;
...@@ -55,7 +57,18 @@ public final class AudioCapabilitiesReceiver { ...@@ -55,7 +57,18 @@ public final class AudioCapabilitiesReceiver {
* @param listener The listener to notify when audio capabilities change. * @param listener The listener to notify when audio capabilities change.
*/ */
public AudioCapabilitiesReceiver(Context context, Listener listener) { public AudioCapabilitiesReceiver(Context context, Listener listener) {
this(context, /* handler= */ null, listener);
}
/**
* @param context A context for registering the receiver.
* @param handler The handler to which {@link Listener} events will be posted. If null, listener
* methods are invoked on the main thread.
* @param listener The listener to notify when audio capabilities change.
*/
public AudioCapabilitiesReceiver(Context context, @Nullable Handler handler, Listener listener) {
this.context = Assertions.checkNotNull(context); this.context = Assertions.checkNotNull(context);
this.handler = handler;
this.listener = Assertions.checkNotNull(listener); this.listener = Assertions.checkNotNull(listener);
this.receiver = Util.SDK_INT >= 21 ? new HdmiAudioPlugBroadcastReceiver() : null; this.receiver = Util.SDK_INT >= 21 ? new HdmiAudioPlugBroadcastReceiver() : null;
} }
...@@ -69,8 +82,17 @@ public final class AudioCapabilitiesReceiver { ...@@ -69,8 +82,17 @@ public final class AudioCapabilitiesReceiver {
*/ */
@SuppressWarnings("InlinedApi") @SuppressWarnings("InlinedApi")
public AudioCapabilities register() { public AudioCapabilities register() {
Intent stickyIntent = receiver == null ? null Intent stickyIntent = null;
: context.registerReceiver(receiver, new IntentFilter(AudioManager.ACTION_HDMI_AUDIO_PLUG)); if (receiver != null) {
IntentFilter intentFilter = new IntentFilter(AudioManager.ACTION_HDMI_AUDIO_PLUG);
if (handler != null) {
stickyIntent =
context.registerReceiver(
receiver, intentFilter, /* broadcastPermission= */ null, handler);
} else {
stickyIntent = context.registerReceiver(receiver, intentFilter);
}
}
audioCapabilities = AudioCapabilities.getCapabilities(stickyIntent); audioCapabilities = AudioCapabilities.getCapabilities(stickyIntent);
return audioCapabilities; return audioCapabilities;
} }
......
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 sign in to comment