123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550 |
- package com.epson.cameracopy.ui;
- import android.app.Service;
- import android.content.Intent;
- import android.hardware.Camera;
- import android.hardware.SensorManager;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.view.LayoutInflater;
- import android.view.Menu;
- import android.view.MenuInflater;
- import android.view.MenuItem;
- import android.view.View;
- import android.view.ViewGroup;
- import android.view.WindowManager;
- import android.widget.Button;
- import androidx.fragment.app.Fragment;
- import com.epson.cameracopy.alt.FileUtils;
- import com.epson.cameracopy.alt.UiCommon;
- import com.epson.cameracopy.device.AptSensorAdapter;
- import com.epson.cameracopy.device.CameraFile;
- import com.epson.cameracopy.device.CameraPreviewControl;
- import com.epson.cameracopy.device.OpenCvCameraView;
- import com.epson.cameracopy.device.RectangleDetector;
- import epson.print.R;
- import epson.print.imgsel.CameraCopyImageSelectActivity;
- import java.util.Date;
- import java.util.Iterator;
- import java.util.List;
- import org.opencv.android.CameraBridgeViewBase;
- import org.opencv.android.OpenCVLoader;
- import org.opencv.core.CvType;
- import org.opencv.core.Mat;
- import org.opencv.core.Point;
- import org.opencv.core.Scalar;
- import org.opencv.core.Size;
- import org.opencv.imgproc.Imgproc;
- /* renamed from: com.epson.cameracopy.ui.CameraPreviewFragment */
- public class CameraPreviewFragment extends Fragment implements CameraBridgeViewBase.CvCameraViewListener2, OpenCvCameraView.AutoFocusCallBack {
- private static final Scalar COLOR_BLACK = new Scalar(0.0d, 0.0d, 0.0d, 255.0d);
- private static final Scalar[] PAPER_SQUARE_COLOR = {new Scalar(255.0d, 0.0d, 0.0d, 255.0d), new Scalar(0.0d, 255.0d, 0.0d, 255.0d)};
- private static final Point POSITION_0_0 = new Point(0.0d, 0.0d);
- private static final double REFERENCE_ACCELARATION = 0.45d;
- private static final String TAG = "CameraPreviewFragment";
- private final double AUTO_PICTURE_RANGE_VALUE = AptSensorAdapter.getRangeCompValue(20);
- private final int INIT_SPAN = 2;
- private final double PAPER_DETECT_VALUE = AptSensorAdapter.getRangeCompValue(45);
- private boolean isFragmentVisible;
- private boolean mAutoPhotoMode;
- private final long mAutoPictureStillTime = 3000;
- private SimpleMessageDialogFragment mCameraPictureLowResolutionDialog;
- private CameraPreviewControl mCameraPreviewControl;
- private boolean mDisableSettingsButton = false;
- private float mDisplayDensity;
- private int mDisplayRotation;
- private View mFunctionBarView;
- private final Scalar mGridColor = new Scalar(255.0d, 163.0d, 0.0d, 255.0d);
- private final int mGridColorWidth = 1;
- private boolean mHasCamera;
- private int mInitCount;
- private OpenCvCameraView mOpenCvCameraView;
- private long mPAfTime;
- private final int mPaperSquareCircleSize = 20;
- private Button mPhotoSelectButton;
- private Button mPhtographButton;
- private volatile boolean mPictureTaking;
- private final Scalar mPositionCursorColor = new Scalar(255.0d, 0.0d, 0.0d, 255.0d);
- private final float mPositionCursorDispRate = 0.05098581f;
- private volatile boolean mPreviewActivityStarted;
- private Mat mRgba;
- private final Point mScreenSize = new Point();
- private final AptSensorAdapter mSensorEventListener = new AptSensorAdapter();
- private TakePictureTask mTakePictureTask;
- private boolean noCameraDialog;
- private void startInformationActivity() {
- }
- static {
- OpenCVLoader.initDebug();
- }
- public void setAppInitFlag(boolean z) {
- if (z) {
- noCameraDialog = true;
- }
- }
- public boolean isPreviewActivityStarted() {
- return mPreviewActivityStarted;
- }
- public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) {
- View inflate = layoutInflater.inflate(R.layout.fragment_camera_preview, viewGroup, false);
- setHasOptionsMenu(true);
- setButtonListener(inflate);
- mOpenCvCameraView = (OpenCvCameraView) inflate.findViewById(R.id.view1);
- if (CameraPreviewControl.hasBackCamera()) {
- mHasCamera = true;
- mOpenCvCameraView.setCvCameraViewListener((CameraBridgeViewBase.CvCameraViewListener2) this);
- } else {
- mHasCamera = false;
- UiCommon.setButtonEnabled(mPhtographButton, false);
- if (bundle == null && noCameraDialog) {
- noCameraDialog = false;
- SimpleMessageDialogFragment.newInstance(R.string.back_camera_not_exists_message).show(getFragmentManager(), "error-dialog");
- }
- }
- mOpenCvCameraView.setVisibility(View.VISIBLE);
- mDisplayRotation = ((WindowManager) getActivity().getSystemService(Service.WINDOW_SERVICE)).getDefaultDisplay().getRotation();
- mSensorEventListener.setDisplayRotation(mDisplayRotation);
- mSensorEventListener.setSensorManager((SensorManager) getActivity().getSystemService("sensor"));
- mSensorEventListener.setReferenceAccelaration(REFERENCE_ACCELARATION);
- mFunctionBarView = inflate.findViewById(R.id.function_bar);
- mDisplayDensity = getActivity().getResources().getDisplayMetrics().density;
- return inflate;
- }
- private void setButtonListener(View view) {
- mPhotoSelectButton = (Button) view.findViewById(R.id.photo_select_button);
- mPhotoSelectButton.setOnClickListener(new View.OnClickListener() {
- public void onClick(View view) {
- if (!CameraPreviewFragment.mPictureTaking) {
- CameraPreviewFragment.this.startPhotoSelectActivity();
- }
- }
- });
- mPhtographButton = (Button) view.findViewById(R.id.photograph_button);
- mPhtographButton.setOnClickListener(new View.OnClickListener() {
- public void onClick(View view) {
- if (!CameraPreviewFragment.mPictureTaking) {
- CameraPreviewFragment.this.takePicture();
- }
- }
- });
- }
- private void startSettingActivity() {
- startActivity(new Intent(getActivity(), CameraPreviewOptionActivity.class));
- }
- private void startPhotoSelectActivity() {
- startActivity(new Intent(getActivity(), CameraCopyImageSelectActivity.class));
- }
- public void onCameraViewStarted(int i, int i2) {
- mRgba = new Mat(i, i2, CvType.CV_8UC4);
- savePictureSizeList();
- checkPictureSize();
- }
- private void savePictureSizeList() {
- List<Camera.Size> pictureSizeList;
- OpenCvCameraView openCvCameraView = mOpenCvCameraView;
- if (openCvCameraView != null && (pictureSizeList = openCvCameraView.getPictureSizeList()) != null) {
- Iterator<Camera.Size> it = pictureSizeList.iterator();
- while (it.hasNext()) {
- Camera.Size next = it.next();
- if (next.width * next.height < 1000000) {
- it.remove();
- }
- }
- CameraPreviewControl.getInstance(getActivity()).setCameraPictureSizes(pictureSizeList);
- }
- }
- private void checkPictureSize() {
- OpenCvCameraView openCvCameraView;
- Camera.Size cameraPictureSize;
- CameraPreviewControl instance = CameraPreviewControl.getInstance(getActivity());
- if (instance.getPictureResolutionMode() == 0 && (openCvCameraView = mOpenCvCameraView) != null && (cameraPictureSize = openCvCameraView.getCameraPictureSize()) != null && cameraPictureSize.width * cameraPictureSize.height < 1000000) {
- int i = R.string.camera_picture_low_message;
- List<android.graphics.Point> cameraPictureSizes = instance.getCameraPictureSizes();
- if (cameraPictureSizes == null || cameraPictureSizes.size() <= 0) {
- i = R.string.has_no_hireso_picture_message;
- }
- mCameraPictureLowResolutionDialog = SimpleMessageDialogFragment.newInstance(i);
- mCameraPictureLowResolutionDialog.show(getFragmentManager(), "camera-resolution-warning-dialog");
- }
- }
- public void onCameraViewStopped() {
- mRgba.release();
- SimpleMessageDialogFragment simpleMessageDialogFragment = mCameraPictureLowResolutionDialog;
- if (simpleMessageDialogFragment != null) {
- simpleMessageDialogFragment.dismiss();
- mCameraPictureLowResolutionDialog = null;
- }
- }
- private void drawSensorPos(Mat mat, boolean z) {
- int i;
- int height = mat.height();
- if (height > 0) {
- double scale = (1.0f / mOpenCvCameraView.getScale());
- int height2 = ((mFunctionBarView.getHeight()) * scale);
- int height3 = ((mOpenCvCameraView.getHeight()) * scale);
- double d = height;
- if (height2 + 0 + height > height3) {
- i = ((0) - (((height3 - height)) / 2.0d));
- d = ((height3 - 0) - height2);
- } else {
- i = 0;
- }
- Size size = mRgba.size();
- double d2 = size.width / 2.0d;
- double d3 = d / 10.0d;
- double d4 = scale;
- double d5 = i;
- Point point = new Point();
- double d6 = d / 2.0d;
- Point point2 = new Point();
- double d7 = size.width / 10.0d;
- double d8 = d2 - 1.0d;
- point.f432x = d8;
- point.f433y = d5 + d3;
- point2.f432x = d8;
- double d9 = d5 + d;
- point2.f433y = d9 - d3;
- Imgproc.line(mRgba, point, point2, mGridColor, 1);
- double d10 = d7;
- point.f432x = d10;
- double d11 = d5 + d6;
- point.f433y = d11;
- Size size2 = size;
- double d12 = d2;
- point2.f432x = size2.width - d10;
- point2.f433y = d11;
- Imgproc.line(mRgba, point, point2, mGridColor, 1);
- double d13 = size2.width / 20.0d;
- double d14 = d / 20.0d;
- double d15 = d13 * 3.0d;
- double d16 = d14 + d5;
- double d17 = 3.0d * d14;
- double d18 = size2.width - d13;
- double d19 = d5 + d17;
- double d20 = d5;
- double d21 = d9 - d17;
- double d22 = d9 - d14;
- point.f432x = d13;
- double d23 = d16;
- point.f433y = d23;
- point2.f432x = d15;
- point2.f433y = d23;
- double d24 = d21;
- Imgproc.line(mRgba, point, point2, mGridColor, 2);
- double d25 = size2.width - d15;
- point.f432x = d25;
- point.f433y = d23;
- double d26 = d19;
- double d27 = d18;
- point2.f432x = d27;
- point2.f433y = d23;
- Imgproc.line(mRgba, point, point2, mGridColor, 2);
- point.f432x = d13;
- double d28 = d23;
- double d29 = d22;
- point.f433y = d29;
- point2.f432x = d15;
- point2.f433y = d29;
- Imgproc.line(mRgba, point, point2, mGridColor, 2);
- point.f432x = d25;
- point.f433y = d29;
- point2.f432x = d27;
- point2.f433y = d29;
- Imgproc.line(mRgba, point, point2, mGridColor, 2);
- point.f432x = d13;
- double d30 = d28;
- point.f433y = d30;
- point2.f432x = d13;
- double d31 = d26;
- point2.f433y = d31;
- Imgproc.line(mRgba, point, point2, mGridColor, 2);
- point.f432x = d13;
- double d32 = d24;
- point.f433y = d32;
- point2.f432x = d13;
- point2.f433y = d29;
- Imgproc.line(mRgba, point, point2, mGridColor, 2);
- point.f432x = d27;
- point.f433y = d30;
- point2.f432x = d27;
- point2.f433y = d31;
- Imgproc.line(mRgba, point, point2, mGridColor, 2);
- point.f432x = d27;
- point.f433y = d32;
- point2.f432x = d27;
- point2.f433y = d29;
- Imgproc.line(mRgba, point, point2, mGridColor, 2);
- if (z) {
- double posX = d12 - (((mSensorEventListener.getPosX() * 0.05098581f)) * d12);
- double posY = d6 + (((mSensorEventListener.getPosY() * 0.05098581f)) * d6) + d20;
- int i2 = (d4 * 20.0d * (mDisplayDensity));
- Imgproc.circle(mRgba, new Point(posX, posY), i2, mPositionCursorColor, 1);
- double d33 = i2;
- Imgproc.line(mRgba, new Point(posX, posY - d33), new Point(posX, posY + d33), mPositionCursorColor);
- Imgproc.line(mRgba, new Point(posX - d33, posY), new Point(posX + d33, posY), mPositionCursorColor);
- }
- }
- }
- private void myDrawRect(Mat mat, Point[] pointArr, boolean z) {
- if (pointArr != null && pointArr.length >= 1 && pointArr.length >= 2) {
- Scalar[] scalarArr = PAPER_SQUARE_COLOR;
- Scalar scalar = scalarArr[0];
- if (z) {
- scalar = scalarArr[1];
- }
- Imgproc.line(mat, pointArr[0], pointArr[1], scalar, 2);
- if (pointArr.length >= 3) {
- Imgproc.line(mat, pointArr[1], pointArr[2], scalar, 2);
- if (pointArr.length >= 4) {
- Imgproc.line(mat, pointArr[0], pointArr[3], scalar, 2);
- Imgproc.line(mat, pointArr[2], pointArr[3], scalar, 2);
- }
- }
- }
- }
- private boolean checkAutoPictureAngle() {
- return mSensorEventListener.isTerminalAngleInRange(this.AUTO_PICTURE_RANGE_VALUE);
- }
- private boolean checkAccelerrationTime() {
- long lastOverTime2 = mSensorEventListener.getLastOverTime2();
- if (lastOverTime2 > 0 && System.currentTimeMillis() - lastOverTime2 >= 3000) {
- return true;
- }
- return false;
- }
- private boolean autofousTime() {
- return System.currentTimeMillis() - mSensorEventListener.getLastOverTime2() >= 500;
- }
- private void sensorAndCamera() {
- if (this.isFragmentVisible) {
- long currentTimeMillis = System.currentTimeMillis();
- if (mAutoPhotoMode && mSensorEventListener.isTerminalAngleInRange(this.PAPER_DETECT_VALUE)) {
- boolean checkAutoPictureAngle = checkAutoPictureAngle();
- int detectAndDrawRectangle2 = RectangleDetector.detectAndDrawRectangle2(mRgba.getNativeObjAddr(), 0, mFunctionBarView.getHeight(), checkAutoPictureAngle);
- if (checkAutoPictureAngle && detectAndDrawRectangle2 == 1 && checkAccelerrationTime()) {
- takePicture();
- return;
- } else if (detectAndDrawRectangle2 != 0) {
- mPAfTime = currentTimeMillis;
- }
- }
- if (!mPictureTaking && !mAutoPhotoMode && !mPictureTaking && currentTimeMillis - mPAfTime > 4000 && !mOpenCvCameraView.isInAutofocus() && autofousTime()) {
- mOpenCvCameraView.doAutofocus(this);
- mPAfTime = currentTimeMillis;
- }
- }
- }
- public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame cvCameraViewFrame) {
- mRgba = cvCameraViewFrame.rgba();
- if (!mHasCamera || mPictureTaking) {
- return mRgba;
- }
- int i = mInitCount;
- if (i < 2) {
- mInitCount = i + 1;
- mScreenSize.f432x = mRgba.width();
- mScreenSize.f433y = mRgba.height();
- Imgproc.rectangle(mRgba, POSITION_0_0, mScreenSize, COLOR_BLACK, -1);
- }
- sensorAndCamera();
- if (mCameraPreviewControl.getGuideMode()) {
- drawSensorPos(mRgba, mSensorEventListener.isTerminalAngleInRange(this.PAPER_DETECT_VALUE));
- }
- return mRgba;
- }
- public void onCreate(Bundle bundle) {
- super.onCreate(bundle);
- mCameraPreviewControl = CameraPreviewControl.getInstance(getActivity());
- mPictureTaking = false;
- }
- public void onResume() {
- super.onResume();
- if (mHasCamera) {
- enableAllButton();
- if (mOpenCvCameraView.checkBackCamera()) {
- mOpenCvCameraView.enableView();
- mSensorEventListener.start();
- mPAfTime = 0;
- } else {
- UiCommon.setButtonEnabled(mPhtographButton, false);
- disableSettingButton(true);
- SimpleMessageDialogFragment.newInstance(R.string.back_camera_not_exists_message).show(getFragmentManager(), "error-dialog");
- }
- mPictureTaking = false;
- }
- mInitCount = 0;
- if (mPreviewActivityStarted) {
- mPreviewActivityStarted = false;
- mPictureTaking = false;
- enableAllButton();
- }
- mAutoPhotoMode = mCameraPreviewControl.getAutoPictureMode();
- isFragmentVisible = true;
- }
- public void onPause() {
- isFragmentVisible = false;
- mSensorEventListener.stop();
- TakePictureTask takePictureTask = mTakePictureTask;
- if (takePictureTask != null) {
- takePictureTask.cancel(false);
- mTakePictureTask = null;
- }
- OpenCvCameraView openCvCameraView = mOpenCvCameraView;
- if (openCvCameraView != null) {
- openCvCameraView.cancelAutofocus();
- mOpenCvCameraView.disableView();
- }
- mPictureTaking = false;
- super.onPause();
- }
- public void onDestroy() {
- OpenCvCameraView openCvCameraView = mOpenCvCameraView;
- if (openCvCameraView != null) {
- openCvCameraView.cancelAutofocus();
- mOpenCvCameraView.disableView();
- mOpenCvCameraView.setCvCameraViewListener((CameraBridgeViewBase.CvCameraViewListener2) null);
- mOpenCvCameraView = null;
- }
- super.onDestroy();
- }
- private void showErrorDialog() {
- SimpleMessageDialogFragment.newInstance(R.string.file_save_error_message).show(getFragmentManager(), "error-dialog");
- }
- public void takePicture() {
- if (!mPictureTaking) {
- mPictureTaking = true;
- getActivity().runOnUiThread(new Runnable() {
- public void run() {
- CameraPreviewFragment.this.disableAllButton();
- }
- });
- mSensorEventListener.stop();
- mTakePictureTask = new TakePictureTask(mOpenCvCameraView);
- mTakePictureTask.execute(new Void[0]);
- }
- }
- private void takePictureStep2() {
- mOpenCvCameraView.takePicture(FileUtils.getNewTemporaryJpegFile(getActivity()).getPath(), new OpenCvCameraView.MyPictureTakeCallback() {
- public void onMyPictureTaken(boolean z, String str) {
- if (!z || str == null) {
- CameraPreviewFragment.this.enableAllButton();
- CameraPreviewFragment.mSensorEventListener.start();
- boolean unused = CameraPreviewFragment.mPictureTaking = false;
- CameraPreviewFragment.this.showErrorDialog();
- return;
- }
- CameraPreviewFragment.this.startPictureViewActivity(str);
- }
- });
- }
- private void enableAllButton() {
- if (CameraPreviewControl.hasBackCamera()) {
- UiCommon.setButtonEnabled(mPhtographButton, true);
- disableSettingButton(false);
- }
- UiCommon.setButtonEnabled(mPhotoSelectButton, true);
- }
- private void disableAllButton() {
- UiCommon.setButtonEnabled(mPhtographButton, false);
- disableSettingButton(true);
- UiCommon.setButtonEnabled(mPhotoSelectButton, false);
- }
- private void startPictureViewActivity(String str) {
- Intent intent = new Intent(getActivity(), ImagePreviewActivity.class);
- intent.putExtra(ImagePreviewActivity.PARAM_CAMERA_FILE, new CameraFile(new Date(), str));
- startActivity(intent);
- mPreviewActivityStarted = true;
- }
- public void onAutoFocusCompleted(boolean z) {
- mPAfTime = System.currentTimeMillis();
- }
- private void disableSettingButton(boolean z) {
- mDisableSettingsButton = z;
- getActivity().invalidateOptionsMenu();
- }
- public void onCreateOptionsMenu(Menu menu, MenuInflater menuInflater) {
- if (!mDisableSettingsButton) {
- menuInflater.inflate(R.menu.camera_menu, menu);
- }
- super.onCreateOptionsMenu(menu, menuInflater);
- }
- public boolean onOptionsItemSelected(MenuItem menuItem) {
- if (menuItem.getItemId() != R.id.camera_setting) {
- return super.onOptionsItemSelected(menuItem);
- }
- if (mPictureTaking) {
- return false;
- }
- startSettingActivity();
- return true;
- }
- public boolean onBackPressed() {
- return !mPictureTaking;
- }
- /* renamed from: com.epson.cameracopy.ui.CameraPreviewFragment$TakePictureTask */
- class TakePictureTask extends AsyncTask<Void, Void, Void> {
- private OpenCvCameraView mMyOpenCvCameraView;
- public TakePictureTask(OpenCvCameraView openCvCameraView) {
- mMyOpenCvCameraView = openCvCameraView;
- }
- protected Void doInBackground(Void... voidArr) {
- System.currentTimeMillis();
- while (!isCancelled() && mMyOpenCvCameraView.isInAutofocus()) {
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- return null;
- }
- protected void onPostExecute(Void voidR) {
- CameraPreviewFragment.this.takePictureStep2();
- }
- }
- }
|