CrackMe.apk

Download file
    package expo.modules.av.player;

import android.content.Context;
import android.media.MediaPlayer;
import android.media.PlaybackParams;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.util.Pair;
import android.view.Surface;
import com.google.common.net.HttpHeaders;
import expo.modules.av.AVManagerInterface;
import expo.modules.av.AudioFocusNotAcquiredException;
import expo.modules.av.player.PlayerData;
import expo.modules.core.ModuleRegistry;
import java.io.IOException;
import java.net.CookieHandler;
import java.net.HttpCookie;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.IOUtils;

class MediaPlayerData extends PlayerData implements MediaPlayer.OnBufferingUpdateListener, MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener, MediaPlayer.OnInfoListener, MediaPlayer.OnSeekCompleteListener, MediaPlayer.OnVideoSizeChangedListener {
    static final String IMPLEMENTATION_NAME = "MediaPlayer";
    private boolean mIsBuffering = false;
    /* access modifiers changed from: private */
    public MediaPlayer mMediaPlayer = null;
    private boolean mMediaPlayerHasStartedEver = false;
    private ModuleRegistry mModuleRegistry = null;
    private Integer mPlayableDurationMillis = null;

    /* access modifiers changed from: package-private */
    public String getImplementationName() {
        return IMPLEMENTATION_NAME;
    }

    MediaPlayerData(AVManagerInterface aVManagerInterface, Context context, Uri uri, Map<String, Object> map) {
        super(aVManagerInterface, uri, map);
        this.mModuleRegistry = aVManagerInterface.getModuleRegistry();
    }

    public void load(final Bundle bundle, final PlayerData.LoadCompletionListener loadCompletionListener) {
        if (this.mMediaPlayer != null) {
            loadCompletionListener.onLoadError("Load encountered an error: MediaPlayerData cannot be loaded twice.");
            return;
        }
        MediaPlayer mediaPlayer = new MediaPlayer();
        try {
            Uri uri = this.mUri;
            if (uri.getScheme() == null) {
                int identifier = this.mAVModule.getContext().getResources().getIdentifier(uri.toString(), "raw", this.mAVModule.getContext().getPackageName());
                uri = Uri.parse("android.resource://" + this.mAVModule.getContext().getPackageName() + "/" + identifier);
            }
            if (Build.VERSION.SDK_INT >= 26) {
                mediaPlayer.setDataSource(this.mAVModule.getContext(), uri, (Map) null, getHttpCookiesList());
            } else {
                HashMap hashMap = new HashMap(1);
                StringBuilder sb = new StringBuilder();
                for (HttpCookie next : getHttpCookiesList()) {
                    sb.append(next.getName());
                    sb.append("=");
                    sb.append(next.getValue());
                    sb.append("; ");
                }
                sb.append(IOUtils.LINE_SEPARATOR_WINDOWS);
                hashMap.put(HttpHeaders.COOKIE, sb.toString());
                if (this.mRequestHeaders != null) {
                    for (Map.Entry entry : this.mRequestHeaders.entrySet()) {
                        if (entry.getValue() instanceof String) {
                            hashMap.put((String) entry.getKey(), (String) entry.getValue());
                        }
                    }
                }
                mediaPlayer.setDataSource(this.mAVModule.getContext(), uri, hashMap);
            }
            mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
                public boolean onError(MediaPlayer mediaPlayer, int i, int i2) {
                    PlayerData.LoadCompletionListener loadCompletionListener = loadCompletionListener;
                    loadCompletionListener.onLoadError("Load encountered an error: the OnErrorListener was called with 'what' code " + i + " and 'extra' code " + i2 + ".");
                    return true;
                }
            });
            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                public void onPrepared(MediaPlayer mediaPlayer) {
                    MediaPlayerData.this.mMediaPlayer = mediaPlayer;
                    MediaPlayerData.this.mMediaPlayer.setOnBufferingUpdateListener(MediaPlayerData.this);
                    MediaPlayerData.this.mMediaPlayer.setOnCompletionListener(MediaPlayerData.this);
                    MediaPlayerData.this.mMediaPlayer.setOnErrorListener(MediaPlayerData.this);
                    MediaPlayerData.this.mMediaPlayer.setOnInfoListener(MediaPlayerData.this);
                    MediaPlayerData.this.setStatusWithListener(bundle, new PlayerData.SetStatusCompletionListener() {
                        public void onSetStatusComplete() {
                            loadCompletionListener.onLoadSuccess(MediaPlayerData.this.getStatus());
                        }

                        public void onSetStatusError(String str) {
                            loadCompletionListener.onLoadSuccess(MediaPlayerData.this.getStatus());
                        }
                    });
                }
            });
            try {
                mediaPlayer.prepareAsync();
            } catch (Throwable th) {
                loadCompletionListener.onLoadError("Load encountered an error: an exception was thrown from prepareAsync() with message: " + th.toString());
            }
        } catch (Throwable th2) {
            loadCompletionListener.onLoadError("Load encountered an error: setDataSource() threw an exception was thrown with message: " + th2.toString());
        }
    }

    public synchronized void release() {
        super.release();
        stopUpdatingProgressIfNecessary();
        MediaPlayer mediaPlayer = this.mMediaPlayer;
        if (mediaPlayer != null) {
            mediaPlayer.setOnBufferingUpdateListener((MediaPlayer.OnBufferingUpdateListener) null);
            this.mMediaPlayer.setOnCompletionListener((MediaPlayer.OnCompletionListener) null);
            this.mMediaPlayer.setOnErrorListener((MediaPlayer.OnErrorListener) null);
            this.mMediaPlayer.setOnInfoListener((MediaPlayer.OnInfoListener) null);
            this.mMediaPlayer.stop();
            this.mMediaPlayer.release();
            this.mMediaPlayer = null;
        }
    }

    /* access modifiers changed from: protected */
    public double getCurrentPositionSeconds() {
        return ((double) this.mMediaPlayer.getCurrentPosition()) / 1000.0d;
    }

    /* access modifiers changed from: package-private */
    public boolean shouldContinueUpdatingProgress() {
        return this.mMediaPlayer != null && !this.mIsBuffering;
    }

    private void playMediaPlayerWithRateMAndHigher(float f) {
        PlaybackParams playbackParams = this.mMediaPlayer.getPlaybackParams();
        playbackParams.setPitch(this.mShouldCorrectPitch ? 1.0f : f);
        playbackParams.setSpeed(f);
        playbackParams.setAudioFallbackMode(0);
        this.mMediaPlayer.setPlaybackParams(playbackParams);
        this.mMediaPlayer.start();
    }

    /* access modifiers changed from: package-private */
    public void playPlayerWithRateAndMuteIfNecessary() throws AudioFocusNotAcquiredException {
        if (this.mMediaPlayer != null && shouldPlayerPlay()) {
            if (!this.mIsMuted) {
                this.mAVModule.acquireAudioFocus();
            }
            updateVolumeMuteAndDuck();
            if (Build.VERSION.SDK_INT >= 23) {
                boolean z = false;
                try {
                    PlaybackParams playbackParams = this.mMediaPlayer.getPlaybackParams();
                    float speed = playbackParams.getSpeed();
                    boolean z2 = playbackParams.getPitch() == 1.0f;
                    if (speed == this.mRate && z2 == this.mShouldCorrectPitch) {
                        z = true;
                    }
                } catch (Throwable unused) {
                }
                if (this.mRate != 0.0f && (!this.mMediaPlayer.isPlaying() || !z)) {
                    if (Build.VERSION.SDK_INT >= 24) {
                        playMediaPlayerWithRateMAndHigher(this.mRate);
                    } else if (Build.VERSION.SDK_INT >= 23) {
                        playMediaPlayerWithRateMAndHigher(2.0f);
                        this.mMediaPlayer.pause();
                        playMediaPlayerWithRateMAndHigher(this.mRate);
                    }
                    this.mMediaPlayerHasStartedEver = true;
                }
            } else if (!this.mMediaPlayer.isPlaying()) {
                this.mMediaPlayer.start();
                this.mMediaPlayerHasStartedEver = true;
            }
            beginUpdatingProgressIfNecessary();
        }
    }

    /* access modifiers changed from: package-private */
    public void applyNewStatus(Integer num, Boolean bool) throws AudioFocusNotAcquiredException, IllegalStateException {
        if (this.mMediaPlayer != null) {
            if (Build.VERSION.SDK_INT < 23 && this.mRate != 1.0f) {
                Log.w("Expo MediaPlayerData", "Cannot set audio/video playback rate for Android SDK < 23.");
                this.mRate = 1.0f;
            }
            if (bool != null) {
                this.mMediaPlayer.setLooping(bool.booleanValue());
            }
            if (!shouldPlayerPlay()) {
                if (this.mMediaPlayerHasStartedEver) {
                    this.mMediaPlayer.pause();
                }
                stopUpdatingProgressIfNecessary();
            }
            updateVolumeMuteAndDuck();
            if (!(num == null || num.intValue() == this.mMediaPlayer.getCurrentPosition())) {
                this.mMediaPlayer.seekTo(num.intValue());
            }
            playPlayerWithRateAndMuteIfNecessary();
            return;
        }
        throw new IllegalStateException("mMediaPlayer is null!");
    }

    /* access modifiers changed from: package-private */
    public boolean isLoaded() {
        return this.mMediaPlayer != null;
    }

    /* access modifiers changed from: package-private */
    public void getExtraStatusFields(Bundle bundle) {
        Integer valueOf = Integer.valueOf(this.mMediaPlayer.getDuration());
        if (valueOf.intValue() < 0) {
            valueOf = null;
        }
        if (valueOf != null) {
            bundle.putInt("durationMillis", valueOf.intValue());
        }
        bundle.putInt("positionMillis", getClippedIntegerForValue(Integer.valueOf(this.mMediaPlayer.getCurrentPosition()), 0, valueOf));
        Integer num = this.mPlayableDurationMillis;
        if (num != null) {
            bundle.putInt("playableDurationMillis", getClippedIntegerForValue(num, 0, valueOf));
        }
        bundle.putBoolean(PlayerData.STATUS_IS_PLAYING_KEY_PATH, this.mMediaPlayer.isPlaying());
        bundle.putBoolean("isBuffering", this.mIsBuffering);
        bundle.putBoolean("isLooping", this.mMediaPlayer.isLooping());
    }

    public Pair<Integer, Integer> getVideoWidthHeight() {
        return this.mMediaPlayer == null ? new Pair<>(0, 0) : new Pair<>(Integer.valueOf(this.mMediaPlayer.getVideoWidth()), Integer.valueOf(this.mMediaPlayer.getVideoHeight()));
    }

    public void tryUpdateVideoSurface(Surface surface) {
        MediaPlayer mediaPlayer = this.mMediaPlayer;
        if (mediaPlayer != null) {
            mediaPlayer.setSurface(surface);
            if (!this.mMediaPlayerHasStartedEver && !this.mShouldPlay) {
                this.mMediaPlayer.start();
                this.mMediaPlayer.pause();
                this.mMediaPlayerHasStartedEver = true;
            }
        }
    }

    public int getAudioSessionId() {
        MediaPlayer mediaPlayer = this.mMediaPlayer;
        if (mediaPlayer != null) {
            return mediaPlayer.getAudioSessionId();
        }
        return 0;
    }

    public void pauseImmediately() {
        MediaPlayer mediaPlayer = this.mMediaPlayer;
        if (mediaPlayer != null && this.mMediaPlayerHasStartedEver) {
            mediaPlayer.pause();
        }
        stopUpdatingProgressIfNecessary();
    }

    public boolean requiresAudioFocus() {
        MediaPlayer mediaPlayer = this.mMediaPlayer;
        return mediaPlayer != null && (mediaPlayer.isPlaying() || shouldPlayerPlay()) && !this.mIsMuted;
    }

    public void updateVolumeMuteAndDuck() {
        float f;
        if (this.mMediaPlayer != null) {
            float volumeForDuckAndFocus = this.mAVModule.getVolumeForDuckAndFocus(this.mIsMuted, this.mVolume);
            if (this.mPan > 0.0f) {
                f = volumeForDuckAndFocus;
                volumeForDuckAndFocus = (1.0f - this.mPan) * volumeForDuckAndFocus;
            } else {
                f = this.mPan < 0.0f ? (this.mPan + 1.0f) * volumeForDuckAndFocus : volumeForDuckAndFocus;
            }
            this.mMediaPlayer.setVolume(volumeForDuckAndFocus, f);
        }
    }

    public void onBufferingUpdate(MediaPlayer mediaPlayer, int i) {
        if (mediaPlayer.getDuration() >= 0) {
            this.mPlayableDurationMillis = Integer.valueOf((int) (((double) mediaPlayer.getDuration()) * (((double) i) / 100.0d)));
        } else {
            this.mPlayableDurationMillis = null;
        }
        callStatusUpdateListener();
    }

    public void onCompletion(MediaPlayer mediaPlayer) {
        callStatusUpdateListenerWithDidJustFinish();
        if (!mediaPlayer.isLooping()) {
            this.mAVModule.abandonAudioFocusIfUnused();
            stopUpdatingProgressIfNecessary();
        }
    }

    public boolean onError(MediaPlayer mediaPlayer, int i, int i2) {
        release();
        if (this.mErrorListener == null) {
            return true;
        }
        PlayerData.ErrorListener errorListener = this.mErrorListener;
        errorListener.onError("MediaPlayer failed with 'what' code " + i + " and 'extra' code " + i2 + ".");
        return true;
    }

    public boolean onInfo(MediaPlayer mediaPlayer, int i, int i2) {
        if (i != 3) {
            if (i == 701) {
                this.mIsBuffering = true;
            } else if (i == 702) {
                this.mIsBuffering = false;
                beginUpdatingProgressIfNecessary();
            }
        } else if (this.mVideoSizeUpdateListener != null) {
            this.mVideoSizeUpdateListener.onVideoSizeUpdate(new Pair(Integer.valueOf(mediaPlayer.getVideoWidth()), Integer.valueOf(mediaPlayer.getVideoHeight())));
        }
        callStatusUpdateListener();
        return true;
    }

    public void onSeekComplete(MediaPlayer mediaPlayer) {
        callStatusUpdateListener();
    }

    public void onVideoSizeChanged(MediaPlayer mediaPlayer, int i, int i2) {
        if (this.mVideoSizeUpdateListener != null) {
            this.mVideoSizeUpdateListener.onVideoSizeUpdate(new Pair(Integer.valueOf(i), Integer.valueOf(i2)));
        }
    }

    private List<HttpCookie> getHttpCookiesList() {
        CookieHandler cookieHandler;
        ModuleRegistry moduleRegistry = this.mModuleRegistry;
        if (!(moduleRegistry == null || (cookieHandler = (CookieHandler) moduleRegistry.getModule(CookieHandler.class)) == null)) {
            try {
                List<String> list = cookieHandler.get(URI.create(this.mUri.toString()), (Map) null).get(HttpHeaders.COOKIE);
                if (list == null) {
                    return Collections.emptyList();
                }
                ArrayList arrayList = new ArrayList();
                for (String parse : list) {
                    arrayList.addAll(HttpCookie.parse(parse));
                }
                return arrayList;
            } catch (IOException unused) {
            }
        }
        return Collections.emptyList();
    }
}
    
Download file