111
This commit is contained in:
1 parent
aa39211aba
commit
76f97a2e7a
23 files changed
+226
-294
No files matched your search
@@ -22,8 +22,8 @@
|
||||
android:name="${applicationName}"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="智慧食堂"
|
||||
android:requestLegacyExternalStorage="true"
|
||||
android:requestRawExternalStorageAccess="true">
|
||||
android:largeHeap="true"
|
||||
android:requestLegacyExternalStorage="true">
|
||||
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
@@ -42,9 +42,9 @@
|
||||
<activity
|
||||
android:name="io.flutter.plugins.facediscern.ui.FaceDiscern"
|
||||
android:exported="false"
|
||||
android:hardwareAccelerated="true"
|
||||
android:hardwareAccelerated="false"
|
||||
android:launchMode="singleTop"
|
||||
android:theme="@style/Theme.AppCompat.NoActionBar" />
|
||||
android:theme="@style/Theme.AppCompat.NoActionBar" />
|
||||
|
||||
<meta-data
|
||||
android:name="flutterEmbedding"
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ import java.io.File;
|
||||
public class DatabaseHelper extends SQLiteOpenHelper {
|
||||
private static final String TAG = "DatabaseHelper";
|
||||
|
||||
private static final String DATABASE_PATH = "pj/database";
|
||||
private static final String DATABASE_PATH = "pj_cashier/database";
|
||||
private static final String DATABASE_NAME = "cash_register.db";
|
||||
private static final int DATABASE_VERSION = 1;
|
||||
|
||||
|
||||
+8
-1
@@ -5,6 +5,8 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
@@ -74,10 +76,15 @@ public class FlutterFaceDiscernPlugin implements FlutterPlugin, MethodChannel.Me
|
||||
switch (method) {
|
||||
case "jumpFaceDiscern":
|
||||
try {
|
||||
// Intent intent = new Intent(context, FaceDiscern.class);
|
||||
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
// intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
||||
// context.startActivity(intent);
|
||||
|
||||
Intent intent = new Intent(context, FaceDiscern.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
||||
context.startActivity(intent);
|
||||
new Handler(Looper.getMainLooper()).post(() -> context.startActivity(intent));
|
||||
result.success(true);
|
||||
} catch (Exception e) {
|
||||
result.success(false);
|
||||
|
||||
@@ -4,7 +4,10 @@ import android.Manifest;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Point;
|
||||
import android.hardware.Camera;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -15,10 +18,12 @@ import androidx.core.app.ActivityCompat;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import com.example.pj_supermarket_cloud.MainActivity;
|
||||
import com.example.pj_supermarket_cloud.R;
|
||||
import com.example.pj_supermarket_cloud.databinding.ActivityFaceDiscernBinding;
|
||||
|
||||
import io.flutter.Log;
|
||||
import io.flutter.embedding.android.FlutterActivity;
|
||||
import io.flutter.plugins.facediscern.flutter.FlutterFaceDiscernPlugin;
|
||||
import io.flutter.plugins.facediscern.tool.camera.DualCameraHelper;
|
||||
import io.flutter.plugins.facediscern.tool.camera.callback.CameraListener;
|
||||
@@ -40,10 +45,7 @@ public class FaceDiscern extends BaseActivity implements ViewTreeObserver.OnGlob
|
||||
|
||||
private static final String TAG = "人脸识别页面";
|
||||
|
||||
private static final String[] NEEDED_PERMISSIONS = new String[]{
|
||||
Manifest.permission.CAMERA,
|
||||
Manifest.permission.READ_PHONE_STATE
|
||||
};
|
||||
private static final String[] NEEDED_PERMISSIONS = new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_PHONE_STATE};
|
||||
|
||||
private FaceRectTransformer rgbFaceRectTransformer;
|
||||
|
||||
@@ -131,13 +133,10 @@ public class FaceDiscern extends BaseActivity implements ViewTreeObserver.OnGlob
|
||||
if (Objects.nonNull(channel)) {
|
||||
channel.invokeMethod("faceDiscernPageInit", null);
|
||||
}
|
||||
if (rgbCameraHelper != null) {
|
||||
rgbCameraHelper.resumePreview();
|
||||
}
|
||||
scheduler.schedule(() -> {
|
||||
try {
|
||||
if (viewModel != null) {
|
||||
viewModel.stop();
|
||||
if (rgbCameraHelper != null) {
|
||||
rgbCameraHelper.resumePreview();
|
||||
previewLock = false;
|
||||
Log.i(TAG, "相机开始识别");
|
||||
}
|
||||
@@ -156,17 +155,26 @@ public class FaceDiscern extends BaseActivity implements ViewTreeObserver.OnGlob
|
||||
}
|
||||
}
|
||||
|
||||
// 以前的方式
|
||||
// intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
||||
// 推荐的方式
|
||||
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
// intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
||||
|
||||
// 手机返回按钮
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
Log.e(TAG, "相机onBackPressed");
|
||||
|
||||
MethodChannel channel = FlutterFaceDiscernPlugin.staticChannel;
|
||||
if (Objects.nonNull(channel)) {
|
||||
channel.invokeMethod("faceDiscernBack", null);
|
||||
}
|
||||
|
||||
Intent intent = new Intent();
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
||||
intent.setClassName(this.getPackageName(), this.getPackageName() + ".MainActivity");
|
||||
this.startActivity(intent);
|
||||
MethodChannel channel = FlutterFaceDiscernPlugin.staticChannel;
|
||||
if (Objects.isNull(channel)) return;
|
||||
channel.invokeMethod("faceDiscernBack", null);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -187,25 +195,8 @@ public class FaceDiscern extends BaseActivity implements ViewTreeObserver.OnGlob
|
||||
public void onCameraOpened(Camera camera, int cameraId, int displayOrientation, boolean isMirror) {
|
||||
runOnUiThread(() -> {
|
||||
Camera.Size previewSizeRgb = camera.getParameters().getPreviewSize();
|
||||
ViewGroup.LayoutParams layoutParams = adjustPreviewViewSize(
|
||||
binding.dualCameraTexturePreviewRgb,
|
||||
binding.dualCameraTexturePreviewRgb,
|
||||
binding.dualCameraFaceRectView,
|
||||
previewSizeRgb,
|
||||
displayOrientation,
|
||||
1.0f
|
||||
);
|
||||
rgbFaceRectTransformer = new FaceRectTransformer(
|
||||
previewSizeRgb.width,
|
||||
previewSizeRgb.height,
|
||||
layoutParams.width,
|
||||
layoutParams.height,
|
||||
displayOrientation,
|
||||
cameraId,
|
||||
isMirror,
|
||||
true,
|
||||
true
|
||||
);
|
||||
ViewGroup.LayoutParams layoutParams = adjustPreviewViewSize(binding.dualCameraTexturePreviewRgb, binding.dualCameraTexturePreviewRgb, binding.dualCameraFaceRectView, previewSizeRgb, displayOrientation, 1.0f);
|
||||
rgbFaceRectTransformer = new FaceRectTransformer(previewSizeRgb.width, previewSizeRgb.height, layoutParams.width, layoutParams.height, displayOrientation, cameraId, isMirror, true, true);
|
||||
viewModel.onRgbCameraOpened(camera);
|
||||
viewModel.setRgbFaceRectTransformer(rgbFaceRectTransformer);
|
||||
Log.e(TAG, "相机打开,宽:" + previewSizeRgb.width + ",高:" + previewSizeRgb.height + ";layout宽:" + layoutParams.width + ",layout高:" + layoutParams.height + ";");
|
||||
@@ -249,16 +240,7 @@ public class FaceDiscern extends BaseActivity implements ViewTreeObserver.OnGlob
|
||||
}
|
||||
}
|
||||
Point previewSize = new Point(binding.dualCameraTexturePreviewRgb.getMeasuredWidth(), binding.dualCameraTexturePreviewRgb.getMeasuredHeight());
|
||||
rgbCameraHelper = new DualCameraHelper.Builder()
|
||||
.previewViewSize(previewSize)
|
||||
.previewSize(previewSize)
|
||||
.rotation(getWindowManager().getDefaultDisplay().getRotation())
|
||||
.additionalRotation(0)
|
||||
.specificCameraId(mCameraId)
|
||||
.isMirror(false)
|
||||
.previewOn(binding.dualCameraTexturePreviewRgb)
|
||||
.cameraListener(cameraListener)
|
||||
.build();
|
||||
rgbCameraHelper = new DualCameraHelper.Builder().previewViewSize(previewSize).previewSize(previewSize).rotation(getWindowManager().getDefaultDisplay().getRotation()).additionalRotation(0).specificCameraId(mCameraId).isMirror(false).previewOn(binding.dualCameraTexturePreviewRgb).cameraListener(cameraListener).build();
|
||||
rgbCameraHelper.init();
|
||||
rgbCameraHelper.start();
|
||||
viewModel.setRgbCameraHelper(rgbCameraHelper);
|
||||
|
||||
+8
-7
@@ -20,8 +20,10 @@ import com.arcsoft.face.LivenessInfo;
|
||||
import com.arcsoft.face.LivenessParam;
|
||||
import com.arcsoft.face.enums.DetectFaceOrientPriority;
|
||||
import com.arcsoft.face.enums.DetectMode;
|
||||
import com.example.pj_supermarket_cloud.MainActivity;
|
||||
import com.google.gson.Gson;
|
||||
|
||||
import io.flutter.embedding.android.FlutterActivity;
|
||||
import io.flutter.plugins.facediscern.tool.camera.DualCameraHelper;
|
||||
import io.flutter.plugins.facediscern.tool.camera.config.PreviewConfig;
|
||||
import io.flutter.plugins.facediscern.tool.face.constants.FaceBrodConstant;
|
||||
@@ -36,6 +38,7 @@ import io.flutter.plugins.facediscern.tool.face.model.FaceEntity;
|
||||
import io.flutter.plugins.facediscern.tool.face.model.FacePreviewInfo;
|
||||
import io.flutter.plugins.facediscern.tool.face.model.RecognizeConfiguration;
|
||||
import io.flutter.plugins.facediscern.tool.face.widget.FaceRectView;
|
||||
import io.flutter.plugins.facediscern.ui.FaceDiscern;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
@@ -290,17 +293,15 @@ public class FaceDiscernViewModel extends ViewModel implements RecognizeCallback
|
||||
if (flutterFaceCallbackIntent == null) {
|
||||
flutterFaceCallbackIntent = new Intent(FaceBrodConstant.FACE_GLOBAL_INTENT);
|
||||
}
|
||||
Log.i(TAG, "人脸识别成功json:" + new Gson().toJson(faceDiscern));
|
||||
flutterFaceCallbackIntent.putExtra("json", new Gson().toJson(faceDiscern));
|
||||
context.sendBroadcast(flutterFaceCallbackIntent);
|
||||
faceDiscern = null;
|
||||
Log.i(TAG, "人脸识别成功json:" + new Gson().toJson(faceDiscern));
|
||||
if (context instanceof Activity) {
|
||||
Thread.sleep(500);
|
||||
String packageName = context.getPackageName();
|
||||
Intent intent = new Intent();
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
||||
intent.setClassName(packageName, packageName + ".MainActivity");
|
||||
Intent intent = new Intent(context, MainActivity.class);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
||||
context.startActivity(intent);
|
||||
context.sendBroadcast(flutterFaceCallbackIntent);
|
||||
faceDiscern = null;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "提示文字变更的回调,错误error:" + e.getMessage(), e);
|
||||
|
||||
@@ -2,13 +2,19 @@ package com.example.pj_supermarket_cloud
|
||||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
import io.flutter.embedding.engine.FlutterEngine
|
||||
import io.flutter.plugins.GeneratedPluginRegistrant
|
||||
import io.flutter.plugins.facediscern.flutter.FlutterFaceDiscernPlugin
|
||||
|
||||
class MainActivity : FlutterActivity() {
|
||||
|
||||
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
|
||||
super.configureFlutterEngine(flutterEngine)
|
||||
|
||||
// 人脸识别插件
|
||||
val flutterFaceDiscernPlugin = FlutterFaceDiscernPlugin()
|
||||
flutterEngine.plugins.add(flutterFaceDiscernPlugin)
|
||||
|
||||
GeneratedPluginRegistrant.registerWith(flutterEngine)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user