Files
rr3-apk/decompiled-community/sources/com/firemint/realracing/MoviePlayer.java
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- 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
2026-02-18 15:48:36 -08:00

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);
}
});
}
}