jimu-decompiled/sources/android/support/v4/media/session/MediaControllerCompat.java
2025-05-13 19:24:51 +02:00

443 lines
17 KiB
Java

package android.support.v4.media.session;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.support.v4.media.MediaMetadataCompat;
import android.support.v4.media.session.IMediaControllerCallback;
import android.support.v4.media.session.IMediaSession;
import android.support.v4.media.session.MediaControllerCompatApi21;
import android.support.v4.media.session.MediaSessionCompat;
import android.util.Log;
import android.view.KeyEvent;
import androidx.core.app.BundleCompat;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
/* loaded from: classes.dex */
public final class MediaControllerCompat {
private final MediaControllerImpl a;
public static abstract class Callback implements IBinder.DeathRecipient {
MessageHandler a;
IMediaControllerCallback b;
private class MessageHandler extends Handler {
}
public Callback() {
if (Build.VERSION.SDK_INT >= 21) {
MediaControllerCompatApi21.a(new StubApi21(this));
} else {
this.b = new StubCompat(this);
}
}
public void a() {
}
void a(int i, Object obj, Bundle bundle) {
MessageHandler messageHandler = this.a;
if (messageHandler != null) {
Message obtainMessage = messageHandler.obtainMessage(i, obj);
obtainMessage.setData(bundle);
obtainMessage.sendToTarget();
}
}
public void a(Bundle bundle) {
}
public void a(MediaMetadataCompat mediaMetadataCompat) {
}
public void a(PlaybackInfo playbackInfo) {
}
public void a(PlaybackStateCompat playbackStateCompat) {
}
public void a(CharSequence charSequence) {
}
public void a(String str, Bundle bundle) {
}
public void a(List<MediaSessionCompat.QueueItem> list) {
}
@Override // android.os.IBinder.DeathRecipient
public void binderDied() {
a(8, null, null);
}
private static class StubApi21 implements MediaControllerCompatApi21.Callback {
private final WeakReference<Callback> a;
StubApi21(Callback callback) {
this.a = new WeakReference<>(callback);
}
@Override // android.support.v4.media.session.MediaControllerCompatApi21.Callback
public void a(String str, Bundle bundle) {
Callback callback = this.a.get();
if (callback != null) {
if (callback.b == null || Build.VERSION.SDK_INT >= 23) {
callback.a(str, bundle);
}
}
}
@Override // android.support.v4.media.session.MediaControllerCompatApi21.Callback
public void b() {
Callback callback = this.a.get();
if (callback != null) {
callback.a();
}
}
@Override // android.support.v4.media.session.MediaControllerCompatApi21.Callback
public void b(Object obj) {
Callback callback = this.a.get();
if (callback == null || callback.b != null) {
return;
}
callback.a(PlaybackStateCompat.fromPlaybackState(obj));
}
@Override // android.support.v4.media.session.MediaControllerCompatApi21.Callback
public void a(Object obj) {
Callback callback = this.a.get();
if (callback != null) {
callback.a(MediaMetadataCompat.fromMediaMetadata(obj));
}
}
@Override // android.support.v4.media.session.MediaControllerCompatApi21.Callback
public void a(List<?> list) {
Callback callback = this.a.get();
if (callback != null) {
callback.a(MediaSessionCompat.QueueItem.fromQueueItemList(list));
}
}
@Override // android.support.v4.media.session.MediaControllerCompatApi21.Callback
public void a(CharSequence charSequence) {
Callback callback = this.a.get();
if (callback != null) {
callback.a(charSequence);
}
}
@Override // android.support.v4.media.session.MediaControllerCompatApi21.Callback
public void a(Bundle bundle) {
Callback callback = this.a.get();
if (callback != null) {
callback.a(bundle);
}
}
@Override // android.support.v4.media.session.MediaControllerCompatApi21.Callback
public void a(int i, int i2, int i3, int i4, int i5) {
Callback callback = this.a.get();
if (callback != null) {
callback.a(new PlaybackInfo(i, i2, i3, i4, i5));
}
}
}
private static class StubCompat extends IMediaControllerCallback.Stub {
private final WeakReference<Callback> a;
StubCompat(Callback callback) {
this.a = new WeakReference<>(callback);
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void a(PlaybackStateCompat playbackStateCompat) throws RemoteException {
Callback callback = this.a.get();
if (callback != null) {
callback.a(2, playbackStateCompat, null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void b() throws RemoteException {
Callback callback = this.a.get();
if (callback != null) {
callback.a(8, null, null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void c(String str, Bundle bundle) throws RemoteException {
Callback callback = this.a.get();
if (callback != null) {
callback.a(1, str, bundle);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void c(boolean z) throws RemoteException {
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void f() throws RemoteException {
Callback callback = this.a.get();
if (callback != null) {
callback.a(13, null, null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void g(int i) throws RemoteException {
Callback callback = this.a.get();
if (callback != null) {
callback.a(9, Integer.valueOf(i), null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void h(int i) throws RemoteException {
Callback callback = this.a.get();
if (callback != null) {
callback.a(12, Integer.valueOf(i), null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void a(MediaMetadataCompat mediaMetadataCompat) throws RemoteException {
Callback callback = this.a.get();
if (callback != null) {
callback.a(3, mediaMetadataCompat, null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void b(boolean z) throws RemoteException {
Callback callback = this.a.get();
if (callback != null) {
callback.a(11, Boolean.valueOf(z), null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void a(List<MediaSessionCompat.QueueItem> list) throws RemoteException {
Callback callback = this.a.get();
if (callback != null) {
callback.a(5, list, null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void a(CharSequence charSequence) throws RemoteException {
Callback callback = this.a.get();
if (callback != null) {
callback.a(6, charSequence, null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void a(Bundle bundle) throws RemoteException {
Callback callback = this.a.get();
if (callback != null) {
callback.a(7, bundle, null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void a(ParcelableVolumeInfo parcelableVolumeInfo) throws RemoteException {
Callback callback = this.a.get();
if (callback != null) {
callback.a(4, parcelableVolumeInfo != null ? new PlaybackInfo(parcelableVolumeInfo.volumeType, parcelableVolumeInfo.audioStream, parcelableVolumeInfo.controlType, parcelableVolumeInfo.maxVolume, parcelableVolumeInfo.currentVolume) : null, null);
}
}
}
}
interface MediaControllerImpl {
boolean a(KeyEvent keyEvent);
}
static class MediaControllerImplApi21 implements MediaControllerImpl {
protected final Object a;
final Object b = new Object();
private final List<Callback> c = new ArrayList();
private HashMap<Callback, ExtraCallback> d = new HashMap<>();
final MediaSessionCompat.Token e;
private static class ExtraBinderRequestResultReceiver extends ResultReceiver {
private WeakReference<MediaControllerImplApi21> mMediaControllerImpl;
ExtraBinderRequestResultReceiver(MediaControllerImplApi21 mediaControllerImplApi21) {
super(null);
this.mMediaControllerImpl = new WeakReference<>(mediaControllerImplApi21);
}
@Override // android.os.ResultReceiver
protected void onReceiveResult(int i, Bundle bundle) {
MediaControllerImplApi21 mediaControllerImplApi21 = this.mMediaControllerImpl.get();
if (mediaControllerImplApi21 == null || bundle == null) {
return;
}
synchronized (mediaControllerImplApi21.b) {
mediaControllerImplApi21.e.setExtraBinder(IMediaSession.Stub.a(BundleCompat.a(bundle, "android.support.v4.media.session.EXTRA_BINDER")));
mediaControllerImplApi21.e.setSessionToken2Bundle(bundle.getBundle("android.support.v4.media.session.SESSION_TOKEN2_BUNDLE"));
mediaControllerImplApi21.a();
}
}
}
private static class ExtraCallback extends Callback.StubCompat {
ExtraCallback(Callback callback) {
super(callback);
}
@Override // android.support.v4.media.session.MediaControllerCompat.Callback.StubCompat, android.support.v4.media.session.IMediaControllerCallback
public void a(MediaMetadataCompat mediaMetadataCompat) throws RemoteException {
throw new AssertionError();
}
@Override // android.support.v4.media.session.MediaControllerCompat.Callback.StubCompat, android.support.v4.media.session.IMediaControllerCallback
public void b() throws RemoteException {
throw new AssertionError();
}
@Override // android.support.v4.media.session.MediaControllerCompat.Callback.StubCompat, android.support.v4.media.session.IMediaControllerCallback
public void a(List<MediaSessionCompat.QueueItem> list) throws RemoteException {
throw new AssertionError();
}
@Override // android.support.v4.media.session.MediaControllerCompat.Callback.StubCompat, android.support.v4.media.session.IMediaControllerCallback
public void a(CharSequence charSequence) throws RemoteException {
throw new AssertionError();
}
@Override // android.support.v4.media.session.MediaControllerCompat.Callback.StubCompat, android.support.v4.media.session.IMediaControllerCallback
public void a(Bundle bundle) throws RemoteException {
throw new AssertionError();
}
@Override // android.support.v4.media.session.MediaControllerCompat.Callback.StubCompat, android.support.v4.media.session.IMediaControllerCallback
public void a(ParcelableVolumeInfo parcelableVolumeInfo) throws RemoteException {
throw new AssertionError();
}
}
public MediaControllerImplApi21(Context context, MediaSessionCompat.Token token) throws RemoteException {
this.e = token;
this.a = MediaControllerCompatApi21.a(context, this.e.getToken());
if (this.a == null) {
throw new RemoteException();
}
if (this.e.getExtraBinder() == null) {
b();
}
}
private void b() {
a("android.support.v4.media.session.command.GET_EXTRA_BINDER", null, new ExtraBinderRequestResultReceiver(this));
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public boolean a(KeyEvent keyEvent) {
return MediaControllerCompatApi21.a(this.a, keyEvent);
}
public void a(String str, Bundle bundle, ResultReceiver resultReceiver) {
MediaControllerCompatApi21.a(this.a, str, bundle, resultReceiver);
}
void a() {
if (this.e.getExtraBinder() == null) {
return;
}
for (Callback callback : this.c) {
ExtraCallback extraCallback = new ExtraCallback(callback);
this.d.put(callback, extraCallback);
callback.b = extraCallback;
try {
this.e.getExtraBinder().a(extraCallback);
callback.a(13, null, null);
} catch (RemoteException e) {
Log.e("MediaControllerCompat", "Dead object in registerCallback.", e);
}
}
this.c.clear();
}
}
static class MediaControllerImplApi23 extends MediaControllerImplApi21 {
public MediaControllerImplApi23(Context context, MediaSessionCompat.Token token) throws RemoteException {
super(context, token);
}
}
static class MediaControllerImplApi24 extends MediaControllerImplApi23 {
public MediaControllerImplApi24(Context context, MediaSessionCompat.Token token) throws RemoteException {
super(context, token);
}
}
static class MediaControllerImplBase implements MediaControllerImpl {
private IMediaSession a;
public MediaControllerImplBase(MediaSessionCompat.Token token) {
this.a = IMediaSession.Stub.a((IBinder) token.getToken());
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public boolean a(KeyEvent keyEvent) {
if (keyEvent == null) {
throw new IllegalArgumentException("event may not be null.");
}
try {
this.a.a(keyEvent);
return false;
} catch (RemoteException e) {
Log.e("MediaControllerCompat", "Dead object in dispatchMediaButtonEvent.", e);
return false;
}
}
}
public static final class PlaybackInfo {
PlaybackInfo(int i, int i2, int i3, int i4, int i5) {
}
}
public MediaControllerCompat(Context context, MediaSessionCompat.Token token) throws RemoteException {
new HashSet();
if (token == null) {
throw new IllegalArgumentException("sessionToken must not be null");
}
int i = Build.VERSION.SDK_INT;
if (i >= 24) {
this.a = new MediaControllerImplApi24(context, token);
return;
}
if (i >= 23) {
this.a = new MediaControllerImplApi23(context, token);
} else if (i >= 21) {
this.a = new MediaControllerImplApi21(context, token);
} else {
this.a = new MediaControllerImplBase(token);
}
}
public boolean a(KeyEvent keyEvent) {
if (keyEvent != null) {
return this.a.a(keyEvent);
}
throw new IllegalArgumentException("KeyEvent may not be null");
}
}