* 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>
1942 lines
79 KiB
Java
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();
|
|
}
|
|
}
|