soul-browser/sources/java/android/support/v4/media/session/MediaControllerCompat.java
KaKi87 550ddb0413
Decompile and recreate Soul Browser v1.4.85 with APK CI builds (#1)
* Decompile and recreate Soul Browser v1.4.85 with APK CI builds

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix CI build: include bundled google.jks and remove PR trigger

The apktool build failed in CI because app/unknown/.../google.jks was
excluded by the *.jks gitignore rule. Whitelist app-bundled JKS files
and commit the missing resource.

Also remove the redundant pull_request workflow trigger.

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Change package ID to com.github.kaki87.soulbrowser

Rename the application ID so the rebuilt APK can be installed
alongside the original Soul Browser from Google Play.

- Update AndroidManifest package, permissions, providers, and actions
- Update R class references in smali (com/github/kaki87/soulbrowser/R)
- Update shortcuts.xml targetPackage
- Rename app label to "Soul Rebuild" for easy identification

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix install compatibility: remove split APK metadata and bundle native libs

The rebuilt APK still declared requiredSplitTypes and Play Store split
metadata, causing Android to reject standalone installs as incompatible.

- Remove requiredSplitTypes and split-related manifest meta-data
- Merge native libs from all ABI splits with uncompressed storage
- Page-align before signing for extractNativeLibs=false
- Add .so to apktool doNotCompress list

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix install failure: use apksigner v2/v3 and bundle arm64 native libs

Target SDK 36 requires APK Signature Scheme v2+, but jarsigner only
produces v1 signatures, causing Android to reject the install.

- Sign with apksigner (v1+v2+v3) instead of jarsigner
- Add arm64-v8a native libraries from universal Soul Browser 1.4.79
- Set extractNativeLibs=true for reliable sideload installs
- Commit stable debug keystore for consistent signatures across builds

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Add committed debug keystore for consistent APK signatures

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix startup crash: use original classes2.dex desugar libraries

Apktool recompiles smali_classes2 into a broken classes2.dex, causing
ClassNotFoundException for j$.com.android.tools.r8.a at ML Kit init.

Inject the original classes2.dex (Java 8+ desugar libs) after apktool
build instead of using the recompiled version.

Co-authored-by: KaKi87 <KaKi87@pm.me>

* Fix missing drawable resources from density split APKs

The base APK is an app bundle module; density-specific drawables like
seek_thumb_nor_b live in config.xhdpi.apk and were missing after rebuild,
causing Resources$NotFoundException at runtime.

- Merge non-9-patch resources from split APKs before apktool build
- Sync public.xml IDs from R smali only when backing files exist
- Add 713 density-specific resource IDs to public.xml

Co-authored-by: KaKi87 <KaKi87@pm.me>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-10 16:07:14 +02:00

1942 lines
79 KiB
Java

package android.support.v4.media.session;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.media.MediaMetadata;
import android.media.Rating;
import android.media.session.MediaController;
import android.media.session.MediaSession;
import android.media.session.PlaybackState;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.support.v4.media.MediaDescriptionCompat;
import android.support.v4.media.MediaMetadataCompat;
import android.support.v4.media.RatingCompat;
import android.support.v4.media.session.IMediaControllerCallback;
import android.support.v4.media.session.IMediaSession;
import android.support.v4.media.session.MediaSessionCompat;
import android.support.v4.media.session.PlaybackStateCompat;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import androidx.annotation.GuardedBy;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
import androidx.media.AudioAttributesCompat;
import androidx.media.R;
import androidx.versionedparcelable.ParcelUtils;
import androidx.versionedparcelable.VersionedParcelable;
import j$.util.DesugarCollections;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/* loaded from: classes.dex */
public final class MediaControllerCompat {
@RestrictTo
public static final String COMMAND_ADD_QUEUE_ITEM = "android.support.v4.media.session.command.ADD_QUEUE_ITEM";
@RestrictTo
public static final String COMMAND_ADD_QUEUE_ITEM_AT = "android.support.v4.media.session.command.ADD_QUEUE_ITEM_AT";
@RestrictTo
public static final String COMMAND_ARGUMENT_INDEX = "android.support.v4.media.session.command.ARGUMENT_INDEX";
@RestrictTo
public static final String COMMAND_ARGUMENT_MEDIA_DESCRIPTION = "android.support.v4.media.session.command.ARGUMENT_MEDIA_DESCRIPTION";
@RestrictTo
public static final String COMMAND_GET_EXTRA_BINDER = "android.support.v4.media.session.command.GET_EXTRA_BINDER";
@RestrictTo
public static final String COMMAND_REMOVE_QUEUE_ITEM = "android.support.v4.media.session.command.REMOVE_QUEUE_ITEM";
@RestrictTo
public static final String COMMAND_REMOVE_QUEUE_ITEM_AT = "android.support.v4.media.session.command.REMOVE_QUEUE_ITEM_AT";
static final String TAG = "MediaControllerCompat";
private final MediaControllerImpl mImpl;
private final Set<Callback> mRegisteredCallbacks;
private final MediaSessionCompat.Token mToken;
/* loaded from: classes.dex */
public static abstract class Callback implements IBinder.DeathRecipient {
final MediaController.Callback mCallbackFwk = new MediaControllerCallbackApi21(this);
MessageHandler mHandler;
IMediaControllerCallback mIControllerCallback;
@RequiresApi
/* loaded from: classes.dex */
public static class MediaControllerCallbackApi21 extends MediaController.Callback {
private final WeakReference<Callback> mCallback;
public MediaControllerCallbackApi21(Callback callback) {
this.mCallback = new WeakReference<>(callback);
}
@Override // android.media.session.MediaController.Callback
public void onAudioInfoChanged(MediaController.PlaybackInfo playbackInfo) {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.onAudioInfoChanged(new PlaybackInfo(playbackInfo.getPlaybackType(), AudioAttributesCompat.c(playbackInfo.getAudioAttributes()), playbackInfo.getVolumeControl(), playbackInfo.getMaxVolume(), playbackInfo.getCurrentVolume()));
}
}
@Override // android.media.session.MediaController.Callback
public void onExtrasChanged(Bundle bundle) {
MediaSessionCompat.ensureClassLoader(bundle);
Callback callback = this.mCallback.get();
if (callback != null) {
callback.onExtrasChanged(bundle);
}
}
@Override // android.media.session.MediaController.Callback
public void onMetadataChanged(MediaMetadata mediaMetadata) {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.onMetadataChanged(MediaMetadataCompat.fromMediaMetadata(mediaMetadata));
}
}
@Override // android.media.session.MediaController.Callback
public void onPlaybackStateChanged(PlaybackState playbackState) {
Callback callback = this.mCallback.get();
if (callback != null && callback.mIControllerCallback == null) {
callback.onPlaybackStateChanged(PlaybackStateCompat.fromPlaybackState(playbackState));
}
}
@Override // android.media.session.MediaController.Callback
public void onQueueChanged(List<MediaSession.QueueItem> list) {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.onQueueChanged(MediaSessionCompat.QueueItem.fromQueueItemList(list));
}
}
@Override // android.media.session.MediaController.Callback
public void onQueueTitleChanged(CharSequence charSequence) {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.onQueueTitleChanged(charSequence);
}
}
@Override // android.media.session.MediaController.Callback
public void onSessionDestroyed() {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.onSessionDestroyed();
}
}
@Override // android.media.session.MediaController.Callback
public void onSessionEvent(String str, Bundle bundle) {
MediaSessionCompat.ensureClassLoader(bundle);
Callback callback = this.mCallback.get();
if (callback != null) {
callback.onSessionEvent(str, bundle);
}
}
}
/* loaded from: classes.dex */
public class MessageHandler extends Handler {
private static final int MSG_DESTROYED = 8;
private static final int MSG_EVENT = 1;
private static final int MSG_SESSION_READY = 13;
private static final int MSG_UPDATE_CAPTIONING_ENABLED = 11;
private static final int MSG_UPDATE_EXTRAS = 7;
private static final int MSG_UPDATE_METADATA = 3;
private static final int MSG_UPDATE_PLAYBACK_STATE = 2;
private static final int MSG_UPDATE_QUEUE = 5;
private static final int MSG_UPDATE_QUEUE_TITLE = 6;
private static final int MSG_UPDATE_REPEAT_MODE = 9;
private static final int MSG_UPDATE_SHUFFLE_MODE = 12;
private static final int MSG_UPDATE_VOLUME = 4;
boolean mRegistered;
public MessageHandler(Looper looper) {
super(looper);
this.mRegistered = false;
}
@Override // android.os.Handler
public void handleMessage(Message message) {
if (!this.mRegistered) {
return;
}
switch (message.what) {
case 1:
Bundle data = message.getData();
MediaSessionCompat.ensureClassLoader(data);
Callback.this.onSessionEvent((String) message.obj, data);
return;
case 2:
Callback.this.onPlaybackStateChanged((PlaybackStateCompat) message.obj);
return;
case 3:
Callback.this.onMetadataChanged((MediaMetadataCompat) message.obj);
return;
case 4:
Callback.this.onAudioInfoChanged((PlaybackInfo) message.obj);
return;
case 5:
Callback.this.onQueueChanged((List) message.obj);
return;
case 6:
Callback.this.onQueueTitleChanged((CharSequence) message.obj);
return;
case 7:
Bundle bundle = (Bundle) message.obj;
MediaSessionCompat.ensureClassLoader(bundle);
Callback.this.onExtrasChanged(bundle);
return;
case 8:
Callback.this.onSessionDestroyed();
return;
case 9:
Callback.this.onRepeatModeChanged(((Integer) message.obj).intValue());
return;
case 10:
default:
return;
case 11:
Callback.this.onCaptioningEnabledChanged(((Boolean) message.obj).booleanValue());
return;
case 12:
Callback.this.onShuffleModeChanged(((Integer) message.obj).intValue());
return;
case 13:
Callback.this.onSessionReady();
return;
}
}
}
/* loaded from: classes.dex */
public static class StubCompat extends IMediaControllerCallback.Stub {
private final WeakReference<Callback> mCallback;
public StubCompat(Callback callback) {
this.mCallback = new WeakReference<>(callback);
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void onCaptioningEnabledChanged(boolean z) {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.postToHandler(11, Boolean.valueOf(z), null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void onEvent(String str, Bundle bundle) {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.postToHandler(1, str, bundle);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void onExtrasChanged(Bundle bundle) {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.postToHandler(7, bundle, null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void onMetadataChanged(MediaMetadataCompat mediaMetadataCompat) {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.postToHandler(3, mediaMetadataCompat, null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void onPlaybackStateChanged(PlaybackStateCompat playbackStateCompat) {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.postToHandler(2, playbackStateCompat, null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void onQueueChanged(List<MediaSessionCompat.QueueItem> list) {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.postToHandler(5, list, null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void onQueueTitleChanged(CharSequence charSequence) {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.postToHandler(6, charSequence, null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void onRepeatModeChanged(int i) {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.postToHandler(9, Integer.valueOf(i), null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void onSessionDestroyed() {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.postToHandler(8, null, null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void onSessionReady() {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.postToHandler(13, null, null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void onShuffleModeChanged(int i) {
Callback callback = this.mCallback.get();
if (callback != null) {
callback.postToHandler(12, Integer.valueOf(i), null);
}
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void onShuffleModeChangedRemoved(boolean z) {
}
@Override // android.support.v4.media.session.IMediaControllerCallback
public void onVolumeInfoChanged(ParcelableVolumeInfo parcelableVolumeInfo) {
PlaybackInfo playbackInfo;
Callback callback = this.mCallback.get();
if (callback != null) {
if (parcelableVolumeInfo != null) {
playbackInfo = new PlaybackInfo(parcelableVolumeInfo.volumeType, parcelableVolumeInfo.audioStream, parcelableVolumeInfo.controlType, parcelableVolumeInfo.maxVolume, parcelableVolumeInfo.currentVolume);
} else {
playbackInfo = null;
}
callback.postToHandler(4, playbackInfo, null);
}
}
}
@Override // android.os.IBinder.DeathRecipient
public void binderDied() {
postToHandler(8, null, null);
}
@RestrictTo
public IMediaControllerCallback getIControllerCallback() {
return this.mIControllerCallback;
}
public void onAudioInfoChanged(PlaybackInfo playbackInfo) {
}
public void onCaptioningEnabledChanged(boolean z) {
}
public void onExtrasChanged(Bundle bundle) {
}
public void onMetadataChanged(MediaMetadataCompat mediaMetadataCompat) {
}
public void onPlaybackStateChanged(PlaybackStateCompat playbackStateCompat) {
}
public void onQueueChanged(List<MediaSessionCompat.QueueItem> list) {
}
public void onQueueTitleChanged(CharSequence charSequence) {
}
public void onRepeatModeChanged(int i) {
}
public void onSessionDestroyed() {
}
public void onSessionEvent(String str, Bundle bundle) {
}
public void onSessionReady() {
}
public void onShuffleModeChanged(int i) {
}
public void postToHandler(int i, Object obj, Bundle bundle) {
MessageHandler messageHandler = this.mHandler;
if (messageHandler != null) {
Message obtainMessage = messageHandler.obtainMessage(i, obj);
obtainMessage.setData(bundle);
obtainMessage.sendToTarget();
}
}
public void setHandler(Handler handler) {
if (handler == null) {
MessageHandler messageHandler = this.mHandler;
if (messageHandler != null) {
messageHandler.mRegistered = false;
messageHandler.removeCallbacksAndMessages(null);
this.mHandler = null;
return;
}
return;
}
MessageHandler messageHandler2 = new MessageHandler(handler.getLooper());
this.mHandler = messageHandler2;
messageHandler2.mRegistered = true;
}
}
/* loaded from: classes.dex */
public interface MediaControllerImpl {
void addQueueItem(MediaDescriptionCompat mediaDescriptionCompat);
void addQueueItem(MediaDescriptionCompat mediaDescriptionCompat, int i);
void adjustVolume(int i, int i2);
boolean dispatchMediaButtonEvent(KeyEvent keyEvent);
Bundle getExtras();
long getFlags();
Object getMediaController();
MediaMetadataCompat getMetadata();
String getPackageName();
PlaybackInfo getPlaybackInfo();
PlaybackStateCompat getPlaybackState();
List<MediaSessionCompat.QueueItem> getQueue();
CharSequence getQueueTitle();
int getRatingType();
int getRepeatMode();
PendingIntent getSessionActivity();
Bundle getSessionInfo();
int getShuffleMode();
TransportControls getTransportControls();
boolean isCaptioningEnabled();
boolean isSessionReady();
void registerCallback(Callback callback, Handler handler);
void removeQueueItem(MediaDescriptionCompat mediaDescriptionCompat);
void sendCommand(String str, Bundle bundle, ResultReceiver resultReceiver);
void setVolumeTo(int i, int i2);
void unregisterCallback(Callback callback);
}
@RequiresApi
/* loaded from: classes.dex */
public static class MediaControllerImplApi21 implements MediaControllerImpl {
protected final MediaController mControllerFwk;
protected Bundle mSessionInfo;
final MediaSessionCompat.Token mSessionToken;
final Object mLock = new Object();
@GuardedBy
private final List<Callback> mPendingCallbacks = new ArrayList();
private HashMap<Callback, ExtraCallback> mCallbackMap = new HashMap<>();
/* loaded from: classes.dex */
public static class ExtraBinderRequestResultReceiver extends ResultReceiver {
private WeakReference<MediaControllerImplApi21> mMediaControllerImpl;
public ExtraBinderRequestResultReceiver(MediaControllerImplApi21 mediaControllerImplApi21) {
super(null);
this.mMediaControllerImpl = new WeakReference<>(mediaControllerImplApi21);
}
@Override // android.os.ResultReceiver
public void onReceiveResult(int i, Bundle bundle) {
MediaControllerImplApi21 mediaControllerImplApi21 = this.mMediaControllerImpl.get();
if (mediaControllerImplApi21 != null && bundle != null) {
synchronized (mediaControllerImplApi21.mLock) {
mediaControllerImplApi21.mSessionToken.setExtraBinder(IMediaSession.Stub.asInterface(bundle.getBinder(MediaSessionCompat.KEY_EXTRA_BINDER)));
mediaControllerImplApi21.mSessionToken.setSession2Token(ParcelUtils.a(bundle));
mediaControllerImplApi21.processPendingCallbacksLocked();
}
}
}
}
/* loaded from: classes.dex */
public static class ExtraCallback extends Callback.StubCompat {
public ExtraCallback(Callback callback) {
super(callback);
}
@Override // android.support.v4.media.session.MediaControllerCompat.Callback.StubCompat, android.support.v4.media.session.IMediaControllerCallback
public void onExtrasChanged(Bundle bundle) {
throw new AssertionError();
}
@Override // android.support.v4.media.session.MediaControllerCompat.Callback.StubCompat, android.support.v4.media.session.IMediaControllerCallback
public void onMetadataChanged(MediaMetadataCompat mediaMetadataCompat) {
throw new AssertionError();
}
@Override // android.support.v4.media.session.MediaControllerCompat.Callback.StubCompat, android.support.v4.media.session.IMediaControllerCallback
public void onQueueChanged(List<MediaSessionCompat.QueueItem> list) {
throw new AssertionError();
}
@Override // android.support.v4.media.session.MediaControllerCompat.Callback.StubCompat, android.support.v4.media.session.IMediaControllerCallback
public void onQueueTitleChanged(CharSequence charSequence) {
throw new AssertionError();
}
@Override // android.support.v4.media.session.MediaControllerCompat.Callback.StubCompat, android.support.v4.media.session.IMediaControllerCallback
public void onSessionDestroyed() {
throw new AssertionError();
}
@Override // android.support.v4.media.session.MediaControllerCompat.Callback.StubCompat, android.support.v4.media.session.IMediaControllerCallback
public void onVolumeInfoChanged(ParcelableVolumeInfo parcelableVolumeInfo) {
throw new AssertionError();
}
}
public MediaControllerImplApi21(Context context, MediaSessionCompat.Token token) {
this.mSessionToken = token;
this.mControllerFwk = new MediaController(context, (MediaSession.Token) token.getToken());
if (token.getExtraBinder() == null) {
requestExtraBinder();
}
}
private void requestExtraBinder() {
sendCommand(MediaControllerCompat.COMMAND_GET_EXTRA_BINDER, null, new ExtraBinderRequestResultReceiver(this));
}
public static void setMediaController(@NonNull Activity activity, @Nullable MediaControllerCompat mediaControllerCompat) {
MediaController mediaController;
if (mediaControllerCompat != null) {
mediaController = new MediaController(activity, (MediaSession.Token) mediaControllerCompat.getSessionToken().getToken());
} else {
mediaController = null;
}
activity.setMediaController(mediaController);
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public void addQueueItem(MediaDescriptionCompat mediaDescriptionCompat) {
if ((getFlags() & 4) != 0) {
Bundle bundle = new Bundle();
bundle.putParcelable(MediaControllerCompat.COMMAND_ARGUMENT_MEDIA_DESCRIPTION, mediaDescriptionCompat);
sendCommand(MediaControllerCompat.COMMAND_ADD_QUEUE_ITEM, bundle, null);
return;
}
throw new UnsupportedOperationException("This session doesn't support queue management operations");
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public void adjustVolume(int i, int i2) {
this.mControllerFwk.adjustVolume(i, i2);
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public boolean dispatchMediaButtonEvent(KeyEvent keyEvent) {
return this.mControllerFwk.dispatchMediaButtonEvent(keyEvent);
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public Bundle getExtras() {
return this.mControllerFwk.getExtras();
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public long getFlags() {
return this.mControllerFwk.getFlags();
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public Object getMediaController() {
return this.mControllerFwk;
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public MediaMetadataCompat getMetadata() {
MediaMetadata metadata = this.mControllerFwk.getMetadata();
if (metadata != null) {
return MediaMetadataCompat.fromMediaMetadata(metadata);
}
return null;
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public String getPackageName() {
return this.mControllerFwk.getPackageName();
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public PlaybackInfo getPlaybackInfo() {
MediaController.PlaybackInfo playbackInfo = this.mControllerFwk.getPlaybackInfo();
if (playbackInfo != null) {
return new PlaybackInfo(playbackInfo.getPlaybackType(), AudioAttributesCompat.c(playbackInfo.getAudioAttributes()), playbackInfo.getVolumeControl(), playbackInfo.getMaxVolume(), playbackInfo.getCurrentVolume());
}
return null;
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public PlaybackStateCompat getPlaybackState() {
if (this.mSessionToken.getExtraBinder() != null) {
try {
return this.mSessionToken.getExtraBinder().getPlaybackState();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getPlaybackState.", e);
}
}
PlaybackState playbackState = this.mControllerFwk.getPlaybackState();
if (playbackState != null) {
return PlaybackStateCompat.fromPlaybackState(playbackState);
}
return null;
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public List<MediaSessionCompat.QueueItem> getQueue() {
List<MediaSession.QueueItem> queue = this.mControllerFwk.getQueue();
if (queue != null) {
return MediaSessionCompat.QueueItem.fromQueueItemList(queue);
}
return null;
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public CharSequence getQueueTitle() {
return this.mControllerFwk.getQueueTitle();
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public int getRatingType() {
return this.mControllerFwk.getRatingType();
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public int getRepeatMode() {
if (this.mSessionToken.getExtraBinder() != null) {
try {
return this.mSessionToken.getExtraBinder().getRepeatMode();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getRepeatMode.", e);
return -1;
}
}
return -1;
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public PendingIntent getSessionActivity() {
return this.mControllerFwk.getSessionActivity();
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public Bundle getSessionInfo() {
if (this.mSessionInfo != null) {
return new Bundle(this.mSessionInfo);
}
if (this.mSessionToken.getExtraBinder() != null) {
try {
this.mSessionInfo = this.mSessionToken.getExtraBinder().getSessionInfo();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getSessionInfo.", e);
this.mSessionInfo = Bundle.EMPTY;
}
}
Bundle unparcelWithClassLoader = MediaSessionCompat.unparcelWithClassLoader(this.mSessionInfo);
this.mSessionInfo = unparcelWithClassLoader;
if (unparcelWithClassLoader == null) {
return Bundle.EMPTY;
}
return new Bundle(this.mSessionInfo);
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public int getShuffleMode() {
if (this.mSessionToken.getExtraBinder() != null) {
try {
return this.mSessionToken.getExtraBinder().getShuffleMode();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getShuffleMode.", e);
return -1;
}
}
return -1;
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public TransportControls getTransportControls() {
MediaController.TransportControls transportControls = this.mControllerFwk.getTransportControls();
int i = Build.VERSION.SDK_INT;
if (i >= 29) {
return new TransportControlsApi29(transportControls);
}
if (i >= 24) {
return new TransportControlsApi24(transportControls);
}
return new TransportControlsApi23(transportControls);
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public boolean isCaptioningEnabled() {
if (this.mSessionToken.getExtraBinder() != null) {
try {
return this.mSessionToken.getExtraBinder().isCaptioningEnabled();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in isCaptioningEnabled.", e);
return false;
}
}
return false;
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public boolean isSessionReady() {
if (this.mSessionToken.getExtraBinder() != null) {
return true;
}
return false;
}
@GuardedBy
public void processPendingCallbacksLocked() {
if (this.mSessionToken.getExtraBinder() == null) {
return;
}
for (Callback callback : this.mPendingCallbacks) {
ExtraCallback extraCallback = new ExtraCallback(callback);
this.mCallbackMap.put(callback, extraCallback);
callback.mIControllerCallback = extraCallback;
try {
this.mSessionToken.getExtraBinder().registerCallbackListener(extraCallback);
callback.postToHandler(13, null, null);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in registerCallback.", e);
}
}
this.mPendingCallbacks.clear();
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public final void registerCallback(Callback callback, Handler handler) {
this.mControllerFwk.registerCallback(callback.mCallbackFwk, handler);
synchronized (this.mLock) {
if (this.mSessionToken.getExtraBinder() != null) {
ExtraCallback extraCallback = new ExtraCallback(callback);
this.mCallbackMap.put(callback, extraCallback);
callback.mIControllerCallback = extraCallback;
try {
this.mSessionToken.getExtraBinder().registerCallbackListener(extraCallback);
callback.postToHandler(13, null, null);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in registerCallback.", e);
}
} else {
callback.mIControllerCallback = null;
this.mPendingCallbacks.add(callback);
}
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public void removeQueueItem(MediaDescriptionCompat mediaDescriptionCompat) {
if ((getFlags() & 4) != 0) {
Bundle bundle = new Bundle();
bundle.putParcelable(MediaControllerCompat.COMMAND_ARGUMENT_MEDIA_DESCRIPTION, mediaDescriptionCompat);
sendCommand(MediaControllerCompat.COMMAND_REMOVE_QUEUE_ITEM, bundle, null);
return;
}
throw new UnsupportedOperationException("This session doesn't support queue management operations");
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public void sendCommand(String str, Bundle bundle, ResultReceiver resultReceiver) {
this.mControllerFwk.sendCommand(str, bundle, resultReceiver);
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public void setVolumeTo(int i, int i2) {
this.mControllerFwk.setVolumeTo(i, i2);
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public final void unregisterCallback(Callback callback) {
this.mControllerFwk.unregisterCallback(callback.mCallbackFwk);
synchronized (this.mLock) {
if (this.mSessionToken.getExtraBinder() != null) {
try {
ExtraCallback remove = this.mCallbackMap.remove(callback);
if (remove != null) {
callback.mIControllerCallback = null;
this.mSessionToken.getExtraBinder().unregisterCallbackListener(remove);
}
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in unregisterCallback.", e);
}
} else {
this.mPendingCallbacks.remove(callback);
}
}
}
@Nullable
public static MediaControllerCompat getMediaController(@NonNull Activity activity) {
MediaController mediaController = activity.getMediaController();
if (mediaController == null) {
return null;
}
return new MediaControllerCompat(activity, MediaSessionCompat.Token.fromToken(mediaController.getSessionToken()));
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public void addQueueItem(MediaDescriptionCompat mediaDescriptionCompat, int i) {
if ((getFlags() & 4) != 0) {
Bundle bundle = new Bundle();
bundle.putParcelable(MediaControllerCompat.COMMAND_ARGUMENT_MEDIA_DESCRIPTION, mediaDescriptionCompat);
bundle.putInt(MediaControllerCompat.COMMAND_ARGUMENT_INDEX, i);
sendCommand(MediaControllerCompat.COMMAND_ADD_QUEUE_ITEM_AT, bundle, null);
return;
}
throw new UnsupportedOperationException("This session doesn't support queue management operations");
}
}
@RequiresApi
/* loaded from: classes.dex */
public static class MediaControllerImplApi29 extends MediaControllerImplApi21 {
public MediaControllerImplApi29(Context context, MediaSessionCompat.Token token) {
super(context, token);
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImplApi21, android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public Bundle getSessionInfo() {
if (this.mSessionInfo != null) {
return new Bundle(this.mSessionInfo);
}
Bundle sessionInfo = this.mControllerFwk.getSessionInfo();
this.mSessionInfo = sessionInfo;
Bundle unparcelWithClassLoader = MediaSessionCompat.unparcelWithClassLoader(sessionInfo);
this.mSessionInfo = unparcelWithClassLoader;
if (unparcelWithClassLoader == null) {
return Bundle.EMPTY;
}
return new Bundle(this.mSessionInfo);
}
}
/* loaded from: classes.dex */
public static abstract class TransportControls {
@Deprecated
public static final String EXTRA_LEGACY_STREAM_TYPE = "android.media.session.extra.LEGACY_STREAM_TYPE";
public abstract void fastForward();
public abstract void pause();
public abstract void play();
public abstract void playFromMediaId(String str, Bundle bundle);
public abstract void playFromSearch(String str, Bundle bundle);
public abstract void playFromUri(Uri uri, Bundle bundle);
public abstract void prepare();
public abstract void prepareFromMediaId(String str, Bundle bundle);
public abstract void prepareFromSearch(String str, Bundle bundle);
public abstract void prepareFromUri(Uri uri, Bundle bundle);
public abstract void rewind();
public abstract void seekTo(long j);
public abstract void sendCustomAction(PlaybackStateCompat.CustomAction customAction, Bundle bundle);
public abstract void sendCustomAction(String str, Bundle bundle);
public abstract void setCaptioningEnabled(boolean z);
public void setPlaybackSpeed(float f) {
}
public abstract void setRating(RatingCompat ratingCompat);
public abstract void setRating(RatingCompat ratingCompat, Bundle bundle);
public abstract void setRepeatMode(int i);
public abstract void setShuffleMode(int i);
public abstract void skipToNext();
public abstract void skipToPrevious();
public abstract void skipToQueueItem(long j);
public abstract void stop();
}
@RequiresApi
/* loaded from: classes.dex */
public static class TransportControlsApi21 extends TransportControls {
protected final MediaController.TransportControls mControlsFwk;
public TransportControlsApi21(MediaController.TransportControls transportControls) {
this.mControlsFwk = transportControls;
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void fastForward() {
this.mControlsFwk.fastForward();
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void pause() {
this.mControlsFwk.pause();
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void play() {
this.mControlsFwk.play();
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void playFromMediaId(String str, Bundle bundle) {
this.mControlsFwk.playFromMediaId(str, bundle);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void playFromSearch(String str, Bundle bundle) {
this.mControlsFwk.playFromSearch(str, bundle);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void playFromUri(Uri uri, Bundle bundle) {
if (uri != null && !Uri.EMPTY.equals(uri)) {
Bundle bundle2 = new Bundle();
bundle2.putParcelable(MediaSessionCompat.ACTION_ARGUMENT_URI, uri);
bundle2.putBundle(MediaSessionCompat.ACTION_ARGUMENT_EXTRAS, bundle);
sendCustomAction(MediaSessionCompat.ACTION_PLAY_FROM_URI, bundle2);
return;
}
throw new IllegalArgumentException("You must specify a non-empty Uri for playFromUri.");
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void prepare() {
sendCustomAction(MediaSessionCompat.ACTION_PREPARE, (Bundle) null);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void prepareFromMediaId(String str, Bundle bundle) {
Bundle bundle2 = new Bundle();
bundle2.putString(MediaSessionCompat.ACTION_ARGUMENT_MEDIA_ID, str);
bundle2.putBundle(MediaSessionCompat.ACTION_ARGUMENT_EXTRAS, bundle);
sendCustomAction(MediaSessionCompat.ACTION_PREPARE_FROM_MEDIA_ID, bundle2);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void prepareFromSearch(String str, Bundle bundle) {
Bundle bundle2 = new Bundle();
bundle2.putString(MediaSessionCompat.ACTION_ARGUMENT_QUERY, str);
bundle2.putBundle(MediaSessionCompat.ACTION_ARGUMENT_EXTRAS, bundle);
sendCustomAction(MediaSessionCompat.ACTION_PREPARE_FROM_SEARCH, bundle2);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void prepareFromUri(Uri uri, Bundle bundle) {
Bundle bundle2 = new Bundle();
bundle2.putParcelable(MediaSessionCompat.ACTION_ARGUMENT_URI, uri);
bundle2.putBundle(MediaSessionCompat.ACTION_ARGUMENT_EXTRAS, bundle);
sendCustomAction(MediaSessionCompat.ACTION_PREPARE_FROM_URI, bundle2);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void rewind() {
this.mControlsFwk.rewind();
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void seekTo(long j) {
this.mControlsFwk.seekTo(j);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void sendCustomAction(PlaybackStateCompat.CustomAction customAction, Bundle bundle) {
MediaControllerCompat.validateCustomAction(customAction.getAction(), bundle);
this.mControlsFwk.sendCustomAction(customAction.getAction(), bundle);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void setCaptioningEnabled(boolean z) {
Bundle bundle = new Bundle();
bundle.putBoolean(MediaSessionCompat.ACTION_ARGUMENT_CAPTIONING_ENABLED, z);
sendCustomAction(MediaSessionCompat.ACTION_SET_CAPTIONING_ENABLED, bundle);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void setPlaybackSpeed(float f) {
if (f != 0.0f) {
Bundle bundle = new Bundle();
bundle.putFloat(MediaSessionCompat.ACTION_ARGUMENT_PLAYBACK_SPEED, f);
sendCustomAction(MediaSessionCompat.ACTION_SET_PLAYBACK_SPEED, bundle);
return;
}
throw new IllegalArgumentException("speed must not be zero");
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void setRating(RatingCompat ratingCompat) {
this.mControlsFwk.setRating(ratingCompat != null ? (Rating) ratingCompat.getRating() : null);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void setRepeatMode(int i) {
Bundle bundle = new Bundle();
bundle.putInt(MediaSessionCompat.ACTION_ARGUMENT_REPEAT_MODE, i);
sendCustomAction(MediaSessionCompat.ACTION_SET_REPEAT_MODE, bundle);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void setShuffleMode(int i) {
Bundle bundle = new Bundle();
bundle.putInt(MediaSessionCompat.ACTION_ARGUMENT_SHUFFLE_MODE, i);
sendCustomAction(MediaSessionCompat.ACTION_SET_SHUFFLE_MODE, bundle);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void skipToNext() {
this.mControlsFwk.skipToNext();
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void skipToPrevious() {
this.mControlsFwk.skipToPrevious();
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void skipToQueueItem(long j) {
this.mControlsFwk.skipToQueueItem(j);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void stop() {
this.mControlsFwk.stop();
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void setRating(RatingCompat ratingCompat, Bundle bundle) {
Bundle bundle2 = new Bundle();
bundle2.putParcelable(MediaSessionCompat.ACTION_ARGUMENT_RATING, ratingCompat);
bundle2.putBundle(MediaSessionCompat.ACTION_ARGUMENT_EXTRAS, bundle);
sendCustomAction(MediaSessionCompat.ACTION_SET_RATING, bundle2);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void sendCustomAction(String str, Bundle bundle) {
MediaControllerCompat.validateCustomAction(str, bundle);
this.mControlsFwk.sendCustomAction(str, bundle);
}
}
@RequiresApi
/* loaded from: classes.dex */
public static class TransportControlsApi23 extends TransportControlsApi21 {
public TransportControlsApi23(MediaController.TransportControls transportControls) {
super(transportControls);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControlsApi21, android.support.v4.media.session.MediaControllerCompat.TransportControls
public void playFromUri(Uri uri, Bundle bundle) {
this.mControlsFwk.playFromUri(uri, bundle);
}
}
@RequiresApi
/* loaded from: classes.dex */
public static class TransportControlsApi24 extends TransportControlsApi23 {
public TransportControlsApi24(MediaController.TransportControls transportControls) {
super(transportControls);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControlsApi21, android.support.v4.media.session.MediaControllerCompat.TransportControls
public void prepare() {
this.mControlsFwk.prepare();
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControlsApi21, android.support.v4.media.session.MediaControllerCompat.TransportControls
public void prepareFromMediaId(String str, Bundle bundle) {
this.mControlsFwk.prepareFromMediaId(str, bundle);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControlsApi21, android.support.v4.media.session.MediaControllerCompat.TransportControls
public void prepareFromSearch(String str, Bundle bundle) {
this.mControlsFwk.prepareFromSearch(str, bundle);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControlsApi21, android.support.v4.media.session.MediaControllerCompat.TransportControls
public void prepareFromUri(Uri uri, Bundle bundle) {
this.mControlsFwk.prepareFromUri(uri, bundle);
}
}
@RequiresApi
/* loaded from: classes.dex */
public static class TransportControlsApi29 extends TransportControlsApi24 {
public TransportControlsApi29(MediaController.TransportControls transportControls) {
super(transportControls);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControlsApi21, android.support.v4.media.session.MediaControllerCompat.TransportControls
public void setPlaybackSpeed(float f) {
if (f != 0.0f) {
this.mControlsFwk.setPlaybackSpeed(f);
return;
}
throw new IllegalArgumentException("speed must not be zero");
}
}
/* loaded from: classes.dex */
public static class TransportControlsBase extends TransportControls {
private IMediaSession mBinder;
public TransportControlsBase(IMediaSession iMediaSession) {
this.mBinder = iMediaSession;
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void fastForward() {
try {
this.mBinder.fastForward();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in fastForward.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void pause() {
try {
this.mBinder.pause();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in pause.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void play() {
try {
this.mBinder.play();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in play.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void playFromMediaId(String str, Bundle bundle) {
try {
this.mBinder.playFromMediaId(str, bundle);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in playFromMediaId.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void playFromSearch(String str, Bundle bundle) {
try {
this.mBinder.playFromSearch(str, bundle);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in playFromSearch.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void playFromUri(Uri uri, Bundle bundle) {
try {
this.mBinder.playFromUri(uri, bundle);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in playFromUri.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void prepare() {
try {
this.mBinder.prepare();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in prepare.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void prepareFromMediaId(String str, Bundle bundle) {
try {
this.mBinder.prepareFromMediaId(str, bundle);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in prepareFromMediaId.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void prepareFromSearch(String str, Bundle bundle) {
try {
this.mBinder.prepareFromSearch(str, bundle);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in prepareFromSearch.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void prepareFromUri(Uri uri, Bundle bundle) {
try {
this.mBinder.prepareFromUri(uri, bundle);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in prepareFromUri.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void rewind() {
try {
this.mBinder.rewind();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in rewind.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void seekTo(long j) {
try {
this.mBinder.seekTo(j);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in seekTo.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void sendCustomAction(PlaybackStateCompat.CustomAction customAction, Bundle bundle) {
sendCustomAction(customAction.getAction(), bundle);
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void setCaptioningEnabled(boolean z) {
try {
this.mBinder.setCaptioningEnabled(z);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in setCaptioningEnabled.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void setPlaybackSpeed(float f) {
if (f != 0.0f) {
try {
this.mBinder.setPlaybackSpeed(f);
return;
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in setPlaybackSpeed.", e);
return;
}
}
throw new IllegalArgumentException("speed must not be zero");
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void setRating(RatingCompat ratingCompat) {
try {
this.mBinder.rate(ratingCompat);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in setRating.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void setRepeatMode(int i) {
try {
this.mBinder.setRepeatMode(i);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in setRepeatMode.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void setShuffleMode(int i) {
try {
this.mBinder.setShuffleMode(i);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in setShuffleMode.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void skipToNext() {
try {
this.mBinder.next();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in skipToNext.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void skipToPrevious() {
try {
this.mBinder.previous();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in skipToPrevious.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void skipToQueueItem(long j) {
try {
this.mBinder.skipToQueueItem(j);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in skipToQueueItem.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void stop() {
try {
this.mBinder.stop();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in stop.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void sendCustomAction(String str, Bundle bundle) {
MediaControllerCompat.validateCustomAction(str, bundle);
try {
this.mBinder.sendCustomAction(str, bundle);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in sendCustomAction.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.TransportControls
public void setRating(RatingCompat ratingCompat, Bundle bundle) {
try {
this.mBinder.rateWithExtras(ratingCompat, bundle);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in setRating.", e);
}
}
}
public MediaControllerCompat(Context context, @NonNull MediaSessionCompat mediaSessionCompat) {
this(context, mediaSessionCompat.getSessionToken());
}
public static MediaControllerCompat getMediaController(@NonNull Activity activity) {
Object tag = activity.getWindow().getDecorView().getTag(R.id.media_controller_compat_view_tag);
if (tag instanceof MediaControllerCompat) {
return (MediaControllerCompat) tag;
}
return MediaControllerImplApi21.getMediaController(activity);
}
public static void setMediaController(@NonNull Activity activity, MediaControllerCompat mediaControllerCompat) {
activity.getWindow().getDecorView().setTag(R.id.media_controller_compat_view_tag, mediaControllerCompat);
MediaControllerImplApi21.setMediaController(activity, mediaControllerCompat);
}
public static void validateCustomAction(String str, Bundle bundle) {
if (str != null) {
if (str.equals(MediaSessionCompat.ACTION_FOLLOW) || str.equals(MediaSessionCompat.ACTION_UNFOLLOW)) {
if (bundle != null && bundle.containsKey(MediaSessionCompat.ARGUMENT_MEDIA_ATTRIBUTE)) {
} else {
throw new IllegalArgumentException(android.support.v4.media.a.l("An extra field android.support.v4.media.session.ARGUMENT_MEDIA_ATTRIBUTE is required for this action ", str, "."));
}
}
}
}
public void addQueueItem(MediaDescriptionCompat mediaDescriptionCompat) {
this.mImpl.addQueueItem(mediaDescriptionCompat);
}
public void adjustVolume(int i, int i2) {
this.mImpl.adjustVolume(i, i2);
}
public boolean dispatchMediaButtonEvent(KeyEvent keyEvent) {
if (keyEvent != null) {
return this.mImpl.dispatchMediaButtonEvent(keyEvent);
}
throw new IllegalArgumentException("KeyEvent may not be null");
}
public Bundle getExtras() {
return this.mImpl.getExtras();
}
public long getFlags() {
return this.mImpl.getFlags();
}
public MediaMetadataCompat getMetadata() {
return this.mImpl.getMetadata();
}
public String getPackageName() {
return this.mImpl.getPackageName();
}
public PlaybackInfo getPlaybackInfo() {
return this.mImpl.getPlaybackInfo();
}
public PlaybackStateCompat getPlaybackState() {
return this.mImpl.getPlaybackState();
}
public List<MediaSessionCompat.QueueItem> getQueue() {
return this.mImpl.getQueue();
}
public CharSequence getQueueTitle() {
return this.mImpl.getQueueTitle();
}
public int getRatingType() {
return this.mImpl.getRatingType();
}
public int getRepeatMode() {
return this.mImpl.getRepeatMode();
}
@Nullable
@RestrictTo
public VersionedParcelable getSession2Token() {
return this.mToken.getSession2Token();
}
public PendingIntent getSessionActivity() {
return this.mImpl.getSessionActivity();
}
@NonNull
public Bundle getSessionInfo() {
return this.mImpl.getSessionInfo();
}
public MediaSessionCompat.Token getSessionToken() {
return this.mToken;
}
public int getShuffleMode() {
return this.mImpl.getShuffleMode();
}
public TransportControls getTransportControls() {
return this.mImpl.getTransportControls();
}
public boolean isCaptioningEnabled() {
return this.mImpl.isCaptioningEnabled();
}
public boolean isSessionReady() {
return this.mImpl.isSessionReady();
}
public void registerCallback(@NonNull Callback callback) {
registerCallback(callback, null);
}
public void removeQueueItem(MediaDescriptionCompat mediaDescriptionCompat) {
this.mImpl.removeQueueItem(mediaDescriptionCompat);
}
@Deprecated
public void removeQueueItemAt(int i) {
MediaSessionCompat.QueueItem queueItem;
List<MediaSessionCompat.QueueItem> queue = getQueue();
if (queue != null && i >= 0 && i < queue.size() && (queueItem = queue.get(i)) != null) {
removeQueueItem(queueItem.getDescription());
}
}
public void sendCommand(@NonNull String str, @Nullable Bundle bundle, @Nullable ResultReceiver resultReceiver) {
if (!TextUtils.isEmpty(str)) {
this.mImpl.sendCommand(str, bundle, resultReceiver);
return;
}
throw new IllegalArgumentException("command must neither be null nor empty");
}
public void setVolumeTo(int i, int i2) {
this.mImpl.setVolumeTo(i, i2);
}
public void unregisterCallback(@NonNull Callback callback) {
if (callback != null) {
if (!this.mRegisteredCallbacks.remove(callback)) {
Log.w(TAG, "the callback has never been registered");
return;
}
try {
this.mImpl.unregisterCallback(callback);
return;
} finally {
callback.setHandler(null);
}
}
throw new IllegalArgumentException("callback must not be null");
}
public MediaControllerCompat(Context context, @NonNull MediaSessionCompat.Token token) {
if (token != null) {
this.mRegisteredCallbacks = DesugarCollections.synchronizedSet(new HashSet());
this.mToken = token;
if (Build.VERSION.SDK_INT >= 29) {
this.mImpl = new MediaControllerImplApi29(context, token);
return;
} else {
this.mImpl = new MediaControllerImplApi21(context, token);
return;
}
}
throw new IllegalArgumentException("sessionToken must not be null");
}
public void addQueueItem(MediaDescriptionCompat mediaDescriptionCompat, int i) {
this.mImpl.addQueueItem(mediaDescriptionCompat, i);
}
public void registerCallback(@NonNull Callback callback, Handler handler) {
if (callback != null) {
if (!this.mRegisteredCallbacks.add(callback)) {
Log.w(TAG, "the callback has already been registered");
return;
}
if (handler == null) {
handler = new Handler();
}
callback.setHandler(handler);
this.mImpl.registerCallback(callback, handler);
return;
}
throw new IllegalArgumentException("callback must not be null");
}
/* loaded from: classes.dex */
public static final class PlaybackInfo {
public static final int PLAYBACK_TYPE_LOCAL = 1;
public static final int PLAYBACK_TYPE_REMOTE = 2;
private final AudioAttributesCompat mAudioAttrsCompat;
private final int mCurrentVolume;
private final int mMaxVolume;
private final int mPlaybackType;
private final int mVolumeControl;
/* JADX WARN: Illegal instructions before constructor call */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public PlaybackInfo(int r8, int r9, int r10, int r11, int r12) {
/*
r7 = this;
androidx.media.AudioAttributesCompat$Builder r0 = new androidx.media.AudioAttributesCompat$Builder
r0.<init>()
r0.a(r9)
androidx.media.AudioAttributesCompat r3 = new androidx.media.AudioAttributesCompat
androidx.media.AudioAttributesImpl$Builder r9 = r0.f1255a
androidx.media.AudioAttributesImpl r9 = r9.build()
r3.<init>(r9)
r1 = r7
r2 = r8
r4 = r10
r5 = r11
r6 = r12
r1.<init>(r2, r3, r4, r5, r6)
return
*/
throw new UnsupportedOperationException("Method not decompiled: android.support.v4.media.session.MediaControllerCompat.PlaybackInfo.<init>(int, int, int, int, int):void");
}
@NonNull
public AudioAttributesCompat getAudioAttributes() {
return this.mAudioAttrsCompat;
}
@Deprecated
public int getAudioStream() {
return this.mAudioAttrsCompat.f1254a.a();
}
public int getCurrentVolume() {
return this.mCurrentVolume;
}
public int getMaxVolume() {
return this.mMaxVolume;
}
public int getPlaybackType() {
return this.mPlaybackType;
}
public int getVolumeControl() {
return this.mVolumeControl;
}
public PlaybackInfo(int i, @NonNull AudioAttributesCompat audioAttributesCompat, int i2, int i3, int i4) {
this.mPlaybackType = i;
this.mAudioAttrsCompat = audioAttributesCompat;
this.mVolumeControl = i2;
this.mMaxVolume = i3;
this.mCurrentVolume = i4;
}
}
/* loaded from: classes.dex */
public static class MediaControllerImplBase implements MediaControllerImpl {
private IMediaSession mBinder;
private Bundle mSessionInfo;
private TransportControls mTransportControls;
public MediaControllerImplBase(MediaSessionCompat.Token token) {
this.mBinder = IMediaSession.Stub.asInterface((IBinder) token.getToken());
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public void addQueueItem(MediaDescriptionCompat mediaDescriptionCompat) {
try {
if ((this.mBinder.getFlags() & 4) != 0) {
this.mBinder.addQueueItem(mediaDescriptionCompat);
return;
}
throw new UnsupportedOperationException("This session doesn't support queue management operations");
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in addQueueItem.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public void adjustVolume(int i, int i2) {
try {
this.mBinder.adjustVolume(i, i2, null);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in adjustVolume.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public boolean dispatchMediaButtonEvent(KeyEvent keyEvent) {
if (keyEvent != null) {
try {
this.mBinder.sendMediaButton(keyEvent);
return false;
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in dispatchMediaButtonEvent.", e);
return false;
}
}
throw new IllegalArgumentException("event may not be null.");
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public Bundle getExtras() {
try {
return this.mBinder.getExtras();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getExtras.", e);
return null;
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public long getFlags() {
try {
return this.mBinder.getFlags();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getFlags.", e);
return 0L;
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public Object getMediaController() {
return null;
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public MediaMetadataCompat getMetadata() {
try {
return this.mBinder.getMetadata();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getMetadata.", e);
return null;
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public String getPackageName() {
try {
return this.mBinder.getPackageName();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getPackageName.", e);
return null;
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public PlaybackInfo getPlaybackInfo() {
try {
ParcelableVolumeInfo volumeAttributes = this.mBinder.getVolumeAttributes();
return new PlaybackInfo(volumeAttributes.volumeType, volumeAttributes.audioStream, volumeAttributes.controlType, volumeAttributes.maxVolume, volumeAttributes.currentVolume);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getPlaybackInfo.", e);
return null;
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public PlaybackStateCompat getPlaybackState() {
try {
return this.mBinder.getPlaybackState();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getPlaybackState.", e);
return null;
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public List<MediaSessionCompat.QueueItem> getQueue() {
try {
return this.mBinder.getQueue();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getQueue.", e);
return null;
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public CharSequence getQueueTitle() {
try {
return this.mBinder.getQueueTitle();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getQueueTitle.", e);
return null;
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public int getRatingType() {
try {
return this.mBinder.getRatingType();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getRatingType.", e);
return 0;
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public int getRepeatMode() {
try {
return this.mBinder.getRepeatMode();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getRepeatMode.", e);
return -1;
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public PendingIntent getSessionActivity() {
try {
return this.mBinder.getLaunchPendingIntent();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getSessionActivity.", e);
return null;
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public Bundle getSessionInfo() {
try {
this.mSessionInfo = this.mBinder.getSessionInfo();
} catch (RemoteException e) {
Log.d(MediaControllerCompat.TAG, "Dead object in getSessionInfo.", e);
}
Bundle unparcelWithClassLoader = MediaSessionCompat.unparcelWithClassLoader(this.mSessionInfo);
this.mSessionInfo = unparcelWithClassLoader;
if (unparcelWithClassLoader == null) {
return Bundle.EMPTY;
}
return new Bundle(this.mSessionInfo);
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public int getShuffleMode() {
try {
return this.mBinder.getShuffleMode();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in getShuffleMode.", e);
return -1;
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public TransportControls getTransportControls() {
if (this.mTransportControls == null) {
this.mTransportControls = new TransportControlsBase(this.mBinder);
}
return this.mTransportControls;
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public boolean isCaptioningEnabled() {
try {
return this.mBinder.isCaptioningEnabled();
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in isCaptioningEnabled.", e);
return false;
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public boolean isSessionReady() {
return true;
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public void registerCallback(Callback callback, Handler handler) {
if (callback != null) {
try {
this.mBinder.asBinder().linkToDeath(callback, 0);
this.mBinder.registerCallbackListener(callback.mIControllerCallback);
callback.postToHandler(13, null, null);
return;
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in registerCallback.", e);
callback.postToHandler(8, null, null);
return;
}
}
throw new IllegalArgumentException("callback may not be null.");
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public void removeQueueItem(MediaDescriptionCompat mediaDescriptionCompat) {
try {
if ((this.mBinder.getFlags() & 4) != 0) {
this.mBinder.removeQueueItem(mediaDescriptionCompat);
return;
}
throw new UnsupportedOperationException("This session doesn't support queue management operations");
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in removeQueueItem.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public void sendCommand(String str, Bundle bundle, ResultReceiver resultReceiver) {
MediaSessionCompat.ResultReceiverWrapper resultReceiverWrapper;
try {
IMediaSession iMediaSession = this.mBinder;
if (resultReceiver == null) {
resultReceiverWrapper = null;
} else {
resultReceiverWrapper = new MediaSessionCompat.ResultReceiverWrapper(resultReceiver);
}
iMediaSession.sendCommand(str, bundle, resultReceiverWrapper);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in sendCommand.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public void setVolumeTo(int i, int i2) {
try {
this.mBinder.setVolumeTo(i, i2, null);
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in setVolumeTo.", e);
}
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public void unregisterCallback(Callback callback) {
if (callback != null) {
try {
this.mBinder.unregisterCallbackListener(callback.mIControllerCallback);
this.mBinder.asBinder().unlinkToDeath(callback, 0);
return;
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in unregisterCallback.", e);
return;
}
}
throw new IllegalArgumentException("callback may not be null.");
}
@Override // android.support.v4.media.session.MediaControllerCompat.MediaControllerImpl
public void addQueueItem(MediaDescriptionCompat mediaDescriptionCompat, int i) {
try {
if ((this.mBinder.getFlags() & 4) != 0) {
this.mBinder.addQueueItemAt(mediaDescriptionCompat, i);
return;
}
throw new UnsupportedOperationException("This session doesn't support queue management operations");
} catch (RemoteException e) {
Log.e(MediaControllerCompat.TAG, "Dead object in addQueueItemAt.", e);
}
}
}
public Object getMediaController() {
return this.mImpl.getMediaController();
}
}