- Added realracing3-community.apk (71.57 MB) - Removed 32-bit support (armeabi-v7a) - Only includes arm64-v8a libraries - Decompiled source code included - Added README-community.md with analysis
291 lines
11 KiB
Java
291 lines
11 KiB
Java
package com.firemint.realracing;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Context;
|
|
import android.media.MediaPlayer;
|
|
import android.net.Uri;
|
|
import android.os.Handler;
|
|
import android.util.Log;
|
|
import android.view.SurfaceHolder;
|
|
import android.view.SurfaceView;
|
|
import android.view.ViewGroup;
|
|
import android.widget.RelativeLayout;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public class MoviePlayer implements MediaPlayer.OnCompletionListener {
|
|
public static Activity mActivity;
|
|
public static Handler mUIThreadHandler;
|
|
public static ViewGroup mViewGroup;
|
|
public static MPHelper msMPHelper;
|
|
public RelativeLayout mLayout;
|
|
private long mThat;
|
|
|
|
public static void startup(Activity activity, ViewGroup viewGroup, Handler handler) {
|
|
mActivity = activity;
|
|
mViewGroup = viewGroup;
|
|
mUIThreadHandler = handler;
|
|
}
|
|
|
|
public native void OnCompletionNative(long j);
|
|
|
|
public class MPHelper extends SurfaceView implements SurfaceHolder.Callback, MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener, MediaPlayer.OnVideoSizeChangedListener {
|
|
public MediaPlayer.OnCompletionListener mCompletionListener;
|
|
public MediaPlayer mMediaPlayer;
|
|
public boolean mStartAfterCreating;
|
|
public SurfaceHolder mSurfaceHolder;
|
|
public Uri mUri;
|
|
|
|
public void setOnCompletionListener(MediaPlayer.OnCompletionListener onCompletionListener) {
|
|
this.mCompletionListener = onCompletionListener;
|
|
}
|
|
|
|
public MPHelper(Context context) {
|
|
super(context);
|
|
this.mSurfaceHolder = null;
|
|
this.mCompletionListener = null;
|
|
this.mStartAfterCreating = false;
|
|
this.mMediaPlayer = null;
|
|
getHolder().addCallback(this);
|
|
getHolder().setType(3);
|
|
setFocusable(true);
|
|
setFocusableInTouchMode(true);
|
|
requestFocus();
|
|
}
|
|
|
|
private void openVideo() {
|
|
if (this.mUri == null || this.mSurfaceHolder == null) {
|
|
return;
|
|
}
|
|
destroy();
|
|
try {
|
|
this.mMediaPlayer = new MediaPlayer();
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("opening video ");
|
|
sb.append(this.mUri);
|
|
this.mMediaPlayer.setDataSource(getContext(), this.mUri);
|
|
this.mMediaPlayer.setOnPreparedListener(this);
|
|
this.mMediaPlayer.setOnVideoSizeChangedListener(this);
|
|
this.mMediaPlayer.setOnCompletionListener(this.mCompletionListener);
|
|
this.mMediaPlayer.setOnErrorListener(this);
|
|
this.mMediaPlayer.setDisplay(this.mSurfaceHolder);
|
|
this.mMediaPlayer.setAudioStreamType(3);
|
|
this.mMediaPlayer.setScreenOnWhilePlaying(true);
|
|
this.mMediaPlayer.prepare();
|
|
} catch (Exception e) {
|
|
Log.w("RealRacing3", "error opening video " + this.mUri + " exception: " + e);
|
|
}
|
|
}
|
|
|
|
@Override // android.view.SurfaceHolder.Callback
|
|
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
|
|
this.mSurfaceHolder = null;
|
|
pause();
|
|
}
|
|
|
|
@Override // android.view.SurfaceHolder.Callback
|
|
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i2, int i3) {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("MPHelper surfaceChanged: ");
|
|
sb.append(i2);
|
|
sb.append(", ");
|
|
sb.append(i3);
|
|
MediaPlayer mediaPlayer = this.mMediaPlayer;
|
|
if (mediaPlayer != null) {
|
|
mediaPlayer.setDisplay(surfaceHolder);
|
|
resume();
|
|
}
|
|
}
|
|
|
|
@Override // android.view.SurfaceHolder.Callback
|
|
public void surfaceCreated(SurfaceHolder surfaceHolder) {
|
|
this.mSurfaceHolder = surfaceHolder;
|
|
MediaPlayer mediaPlayer = this.mMediaPlayer;
|
|
if (mediaPlayer != null) {
|
|
mediaPlayer.setDisplay(surfaceHolder);
|
|
} else {
|
|
openVideo();
|
|
}
|
|
}
|
|
|
|
public void start() {
|
|
MediaPlayer mediaPlayer = this.mMediaPlayer;
|
|
if (mediaPlayer != null) {
|
|
mediaPlayer.start();
|
|
} else {
|
|
this.mStartAfterCreating = true;
|
|
}
|
|
}
|
|
|
|
@Override // android.media.MediaPlayer.OnPreparedListener
|
|
public void onPrepared(MediaPlayer mediaPlayer) {
|
|
if (this.mStartAfterCreating) {
|
|
start();
|
|
this.mStartAfterCreating = false;
|
|
}
|
|
}
|
|
|
|
public void setVideoURL(String str) {
|
|
setVideoURI(Uri.parse(str));
|
|
}
|
|
|
|
public void setVideoURI(Uri uri) {
|
|
this.mUri = uri;
|
|
setup();
|
|
}
|
|
|
|
public void resume() {
|
|
MediaPlayer mediaPlayer = this.mMediaPlayer;
|
|
if (mediaPlayer == null) {
|
|
Log.e("MoviePlayer", "MPHelper.resume() Media Player is null");
|
|
return;
|
|
}
|
|
if (this.mSurfaceHolder == null) {
|
|
Log.e("MoviePlayer", "MPHelper.resume() surface is null");
|
|
return;
|
|
}
|
|
if (mediaPlayer.isPlaying()) {
|
|
Log.e("MoviePlayer", "MPHelper.resume() Media player is already playing");
|
|
} else if (this.mMediaPlayer.getCurrentPosition() <= 0) {
|
|
Log.e("MoviePlayer", "MPHelper.resume() Media player has not started");
|
|
} else {
|
|
this.mMediaPlayer.start();
|
|
}
|
|
}
|
|
|
|
public void pause() {
|
|
if (this.mMediaPlayer != null) {
|
|
this.mMediaPlayer.pause();
|
|
}
|
|
}
|
|
|
|
private void setup() {
|
|
openVideo();
|
|
requestLayout();
|
|
invalidate();
|
|
}
|
|
|
|
public void destroy() {
|
|
MediaPlayer mediaPlayer = this.mMediaPlayer;
|
|
if (mediaPlayer != null) {
|
|
mediaPlayer.reset();
|
|
this.mMediaPlayer.release();
|
|
this.mMediaPlayer = null;
|
|
}
|
|
}
|
|
|
|
@Override // android.media.MediaPlayer.OnErrorListener
|
|
public boolean onError(MediaPlayer mediaPlayer, int i, int i2) {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("onError what: ");
|
|
sb.append(i);
|
|
sb.append(" extra: ");
|
|
sb.append(i2);
|
|
return true;
|
|
}
|
|
|
|
@Override // android.media.MediaPlayer.OnVideoSizeChangedListener
|
|
public void onVideoSizeChanged(MediaPlayer mediaPlayer, int i, int i2) {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("onVideoSizeChanged. videoWidth (");
|
|
sb.append(i);
|
|
sb.append(") videoHeight (");
|
|
sb.append(i2);
|
|
sb.append(")");
|
|
if (mediaPlayer != null) {
|
|
int screenWidth = Platform.getScreenWidth();
|
|
Platform.getScreenHeight();
|
|
float f = screenWidth;
|
|
float f2 = (i2 / i) * f;
|
|
ViewGroup.LayoutParams layoutParams = getLayoutParams();
|
|
layoutParams.width = (int) f;
|
|
layoutParams.height = (int) f2;
|
|
setLayoutParams(layoutParams);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void play(final String str, long j) {
|
|
if (msMPHelper != null) {
|
|
Log.e("RealRacing3", "MoviePlayer Cannot play multiple movies simultaneously");
|
|
OnCompletionNative(j);
|
|
} else {
|
|
this.mThat = j;
|
|
mActivity.runOnUiThread(new Runnable() { // from class: com.firemint.realracing.MoviePlayer.1
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
MoviePlayer.this.mLayout = new RelativeLayout(MoviePlayer.mActivity);
|
|
MoviePlayer.this.mLayout.setGravity(17);
|
|
MoviePlayer.mViewGroup.addView(MoviePlayer.this.mLayout);
|
|
MPHelper mPHelper = MoviePlayer.this.new MPHelper(MoviePlayer.mActivity);
|
|
MoviePlayer.msMPHelper = mPHelper;
|
|
mPHelper.setOnCompletionListener(this);
|
|
MoviePlayer.msMPHelper.requestFocus();
|
|
MoviePlayer.msMPHelper.setZOrderOnTop(true);
|
|
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(Platform.getScreenWidth(), Platform.getScreenHeight());
|
|
layoutParams.leftMargin = 0;
|
|
layoutParams.topMargin = 0;
|
|
MoviePlayer.this.mLayout.addView(MoviePlayer.msMPHelper, layoutParams);
|
|
MoviePlayer.msMPHelper.setVideoURL(str);
|
|
MoviePlayer.msMPHelper.start();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
public void stop() {
|
|
mActivity.runOnUiThread(new Runnable() { // from class: com.firemint.realracing.MoviePlayer.2
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
MoviePlayer.this.clear();
|
|
}
|
|
});
|
|
}
|
|
|
|
public static void pause() {
|
|
mActivity.runOnUiThread(new Runnable() { // from class: com.firemint.realracing.MoviePlayer.3
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
MPHelper mPHelper = MoviePlayer.msMPHelper;
|
|
if (mPHelper != null) {
|
|
mPHelper.pause();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
public static void resume() {
|
|
mActivity.runOnUiThread(new Runnable() { // from class: com.firemint.realracing.MoviePlayer.4
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
MPHelper mPHelper = MoviePlayer.msMPHelper;
|
|
if (mPHelper != null) {
|
|
mPHelper.resume();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
public void clear() {
|
|
MPHelper mPHelper = msMPHelper;
|
|
if (mPHelper != null) {
|
|
mPHelper.destroy();
|
|
this.mLayout.removeView(msMPHelper);
|
|
mViewGroup.removeView(this.mLayout);
|
|
this.mLayout = null;
|
|
msMPHelper = null;
|
|
}
|
|
}
|
|
|
|
@Override // android.media.MediaPlayer.OnCompletionListener
|
|
public void onCompletion(MediaPlayer mediaPlayer) {
|
|
clear();
|
|
MainActivity.instance.getGLView().queueEvent(new Runnable() { // from class: com.firemint.realracing.MoviePlayer.5
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
MoviePlayer moviePlayer = MoviePlayer.this;
|
|
moviePlayer.OnCompletionNative(moviePlayer.mThat);
|
|
}
|
|
});
|
|
}
|
|
}
|