From c381da79470b6ac2f31ae285b2a5c58b3b9d17a2 Mon Sep 17 00:00:00 2001 From: Matthew Date: Wed, 18 Sep 2024 17:43:09 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=9F=AD=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E5=BD=95=E5=88=B6=E7=BB=93=E6=9D=9F=E5=90=8E=E7=9A=84=E9=80=9A?= =?UTF-8?q?=E4=BF=A1=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xypower/mpapp/BridgeActivity.java | 4 ++-- .../com/xypower/mpapp/BridgeProvider.java | 4 ++-- .../com/xypower/mpapp/MicroPhotoService.java | 9 +++++++-- .../mpapp/v2/Camera2VideoActivity.java | 20 ++++++++++++++----- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/xypower/mpapp/BridgeActivity.java b/app/src/main/java/com/xypower/mpapp/BridgeActivity.java index 07d3f79f..22a40e17 100644 --- a/app/src/main/java/com/xypower/mpapp/BridgeActivity.java +++ b/app/src/main/java/com/xypower/mpapp/BridgeActivity.java @@ -230,12 +230,12 @@ public class BridgeActivity extends AppCompatActivity { Intent recordingIntent = MicroPhotoService.makeRecordingIntent(getApplicationContext(), false, cameraId, videoId, duration, width, height, quality, orientation, - leftTopOsd, rightTopOsd, rightBottomOsd, leftBottomOsd); + leftTopOsd, rightTopOsd, rightBottomOsd, leftBottomOsd, null); mVideoFilePath = path; mAutoClose = false; - recordingIntent.putExtra("ActivityResult", true); + recordingIntent.putExtra("resultType", 1); startActivityForResult(recordingIntent, REQUEST_CODE_RECORDING); } } diff --git a/app/src/main/java/com/xypower/mpapp/BridgeProvider.java b/app/src/main/java/com/xypower/mpapp/BridgeProvider.java index 332c58dc..6274f474 100644 --- a/app/src/main/java/com/xypower/mpapp/BridgeProvider.java +++ b/app/src/main/java/com/xypower/mpapp/BridgeProvider.java @@ -345,9 +345,9 @@ public class BridgeProvider extends ContentProvider { Intent recordingIntent = MicroPhotoService.makeRecordingIntent(context, false, cameraId, videoId, duration, width, height, quality, orientation, - leftTopOsd, rightTopOsd, rightBottomOsd, leftBottomOsd); + leftTopOsd, rightTopOsd, rightBottomOsd, leftBottomOsd, path); - recordingIntent.putExtra("ActivityResult", false); + recordingIntent.putExtra("resultType", 0); context.startActivity(recordingIntent); return 1; diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index 39d2be6b..44a62b41 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -534,23 +534,28 @@ public class MicroPhotoService extends Service { registerPhotoTimer(getApplicationContext(), scheduleTime, scheduleTime, timeout, schedules); } + // From Native public void startRecording(boolean photoOrVideo, int cameraId, long videoId, int duration, int width, int height, int quality, int orientation, String leftTopOsd, String rightTopOsd, String rightBottomOsd, String leftBottomOsd) { Context context = getApplicationContext(); Intent intent = makeRecordingIntent(context, photoOrVideo, cameraId, videoId, duration, width, height, quality, orientation, - leftTopOsd, rightTopOsd, rightBottomOsd, leftBottomOsd); + leftTopOsd, rightTopOsd, rightBottomOsd, leftBottomOsd, null); + intent.putExtra("resultType", 2); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } - public static Intent makeRecordingIntent(Context context, boolean photoOrVideo, int cameraId, long videoId, int duration, int width, int height, int quality, int orientation, String leftTopOsd, String rightTopOsd, String rightBottomOsd, String leftBottomOsd) { + public static Intent makeRecordingIntent(Context context, boolean photoOrVideo, int cameraId, long videoId, int duration, int width, int height, int quality, int orientation, String leftTopOsd, String rightTopOsd, String rightBottomOsd, String leftBottomOsd, String path) { // Intent intent = new Intent(this, VideoActivity.class); Intent intent = photoOrVideo ? new Intent(context, RawActivity.class) : new Intent(context, Camera2VideoActivity.class); intent.putExtra("cameraId", cameraId); intent.putExtra("videoId", videoId); + if (!TextUtils.isEmpty(path)) { + intent.putExtra("path", path); + } intent.putExtra("duration", duration); intent.putExtra("width", width); intent.putExtra("height", height); diff --git a/app/src/main/java/com/xypower/mpapp/v2/Camera2VideoActivity.java b/app/src/main/java/com/xypower/mpapp/v2/Camera2VideoActivity.java index b0375913..30e21a09 100644 --- a/app/src/main/java/com/xypower/mpapp/v2/Camera2VideoActivity.java +++ b/app/src/main/java/com/xypower/mpapp/v2/Camera2VideoActivity.java @@ -60,6 +60,10 @@ public class Camera2VideoActivity extends AppCompatActivity { public static final String ACTION_FINISH = "com.xypower.mvapp.ACT_FINISH"; public static final String ACTION_MP_VIDEO_FINISHED = "com.xypower.mpapp.ACT_V_FINISHED"; + public static final int RESULT_TYPE_NONE = 0; + public static final int RESULT_TYPE_ACTIVITY_RESULT = 1; + public static final int RESULT_TYPE_BROADCAST = 2; + public final static int REQUEST_CODE_RECORDING = 2; private static final int DEFAULT_FONT_SIZE = 32; @@ -104,7 +108,7 @@ public class Camera2VideoActivity extends AppCompatActivity { private int mTimeMask = 0; private int mStatusBarHeight = -1; - private boolean mActivityResult = false; + private int mResultType = RESULT_TYPE_NONE; private static class OSD_ITEM { @@ -257,7 +261,7 @@ public class Camera2VideoActivity extends AppCompatActivity { mOSDRightTop = intent.getStringExtra("rightTopOsd"); mOSDMargin = intent.getIntExtra("margin", 12); - mActivityResult = intent.getBooleanExtra("ActivityResult", false); + mResultType = intent.getIntExtra("resultType", RESULT_TYPE_BROADCAST); mCameraWidth = mVideoWidth; mCameraHeight = mVideoHeight; @@ -330,7 +334,9 @@ public class Camera2VideoActivity extends AppCompatActivity { mHandler.postDelayed(new Runnable() { @Override public void run() { - mNextVideoAbsolutePath = getVideoFilePath(); + if (TextUtils.isEmpty(mNextVideoAbsolutePath)) { + mNextVideoAbsolutePath = getVideoFilePath(); + } if (mGPUCameraRecorder != null) { mGPUCameraRecorder.start(mNextVideoAbsolutePath); } else { @@ -735,7 +741,7 @@ public class Camera2VideoActivity extends AppCompatActivity { private void setUpCamera() { setUpCameraView(); - if (mNextVideoAbsolutePath == null || mNextVideoAbsolutePath.isEmpty()) { + if (TextUtils.isEmpty(mNextVideoAbsolutePath)) { mNextVideoAbsolutePath = getVideoFilePath(this); } @@ -832,6 +838,10 @@ public class Camera2VideoActivity extends AppCompatActivity { return; } + if (mResultType == RESULT_TYPE_NONE) { + return; + } + Context context = getApplicationContext(); String receiverName = MicroPhotoService.AlarmReceiver.class.getName(); String packageName = context.getPackageName(); @@ -845,7 +855,7 @@ public class Camera2VideoActivity extends AppCompatActivity { // intent.setComponent(new ComponentName(packageName, receiverName)); - if (mActivityResult) { + if (mResultType == RESULT_TYPE_ACTIVITY_RESULT) { setResult(RESULT_OK, intent); } else { // Log.i(TAG, "Notify recording videoId=" + Long.toString(mVideoId) + " " + path);