处理人脸数据不同步
This commit is contained in:
@@ -98,4 +98,6 @@ dependencies {
|
||||
|
||||
implementation(libs.core)
|
||||
implementation(libs.android.core)
|
||||
|
||||
implementation("org.greenrobot:eventbus:3.3.1")
|
||||
}
|
||||
@@ -1,7 +1,12 @@
|
||||
package com.sw.platecabinet.activity
|
||||
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.sw.plate.utils.arcface.FaceApi
|
||||
import com.sw.plate.utils.arcface.faceserver.FaceServer
|
||||
import com.sw.platecabinet.databinding.ActivityInitBinding
|
||||
import com.sw.platecabinet.databinding.ItemTitleTimeBinding
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
/**
|
||||
* 待机界面
|
||||
@@ -19,6 +24,14 @@ class InitActivity : BaseActivity<ActivityInitBinding>() {
|
||||
binding.main.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
// binding.takeButton.setOnClickListener {
|
||||
//
|
||||
// lifecycleScope.launch(Dispatchers.IO) {
|
||||
// FaceApi().deleteByUserName("288")
|
||||
// }
|
||||
//
|
||||
// finish()
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.sw.plate.utils.arcface.camera.DualCameraHelper
|
||||
import com.sw.plate.utils.arcface.face.constants.LivenessType
|
||||
import com.sw.plate.utils.arcface.face.model.FacePreviewInfo
|
||||
import com.sw.plate.utils.arcface.face.model.RecognizeConfiguration
|
||||
import com.sw.plate.utils.arcface.facedb.entity.FaceEntity
|
||||
import com.sw.plate.utils.arcface.viewmodel.RecognizeViewModel
|
||||
import com.sw.platecabinet.R
|
||||
import com.sw.platecabinet.databinding.ActivityLoginFaceBinding
|
||||
@@ -33,6 +34,9 @@ import com.sw.platecabinet.databinding.ItemTitleTimeBinding
|
||||
import com.sw.platecabinet.model.response.EquipmentUserInfo
|
||||
import com.sw.platecabinet.network.task.TaskManager
|
||||
import com.sw.platecabinet.utils.PermissionHelper
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
import timber.log.Timber
|
||||
|
||||
/**
|
||||
@@ -83,6 +87,8 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
|
||||
|
||||
// TODO: 测试请求
|
||||
TaskManager.startTask()
|
||||
|
||||
EventBus.getDefault().register(this)
|
||||
}
|
||||
|
||||
private fun checkCameraPermission() {
|
||||
@@ -101,6 +107,13 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
|
||||
permissionHelper.checkAndRequest()
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun getFaceEntity(insertEntity: FaceEntity) {
|
||||
Timber.tag("performSync").e("-time=%s", insertEntity.registerTime)
|
||||
recognizeViewModel.addFace(insertEntity)
|
||||
Timber.tag("performSync over").e("-time=%s", insertEntity.registerTime)
|
||||
}
|
||||
|
||||
override fun onLeftDoubleClick() {
|
||||
finish()
|
||||
}
|
||||
@@ -180,6 +193,7 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
|
||||
|
||||
recognizeViewModel.destroy()
|
||||
|
||||
EventBus.getDefault().unregister(this)
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.sw.platecabinet.network.ApiClient
|
||||
import com.sw.platecabinet.repository.RemoteRepository
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import timber.log.Timber
|
||||
|
||||
class HeartBeatTask(appContext: Context, workerParams: WorkerParameters) :
|
||||
@@ -84,11 +85,14 @@ class HeartBeatTask(appContext: Context, workerParams: WorkerParameters) :
|
||||
}
|
||||
} else if (it.faceType == "0") {
|
||||
//新增人脸数据
|
||||
val featureData = Base64.decode(it.faceFeatureString)
|
||||
val featureData = Base64.decode(it.faceFeature)
|
||||
val insertEntity = FaceEntity(it.userId, null, featureData)
|
||||
val faceId = faceApi.insert(insertEntity)
|
||||
insertEntity.faceId = faceId
|
||||
faceServer.registerFaceFeatureInfoFromDb(insertEntity, faceEngine)
|
||||
// faceServer.registerFaceFeatureInfoFromDb(insertEntity, faceEngine)
|
||||
|
||||
EventBus.getDefault().post(insertEntity)
|
||||
// callback(insertEntity)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
|
||||
@@ -1,20 +1,34 @@
|
||||
package com.sw.platecabinet.network.task
|
||||
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.work.ExistingWorkPolicy
|
||||
import androidx.work.OneTimeWorkRequestBuilder
|
||||
import androidx.work.WorkInfo
|
||||
import androidx.work.WorkManager
|
||||
import com.sw.plate.App
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
object TaskManager {
|
||||
private const val TASK_NAME = "SmartPlateCabinetTask"
|
||||
|
||||
// private var owner: LifecycleOwner?=null
|
||||
// fun setOwner(owner: LifecycleOwner) {
|
||||
// this.owner = owner
|
||||
// }
|
||||
fun startTask() {
|
||||
val nextRequest = OneTimeWorkRequestBuilder<HeartBeatTask>()
|
||||
.setInitialDelay(1, TimeUnit.MINUTES)
|
||||
// .setInputData(inputData)
|
||||
.build()
|
||||
WorkManager.getInstance(App.getContext())
|
||||
// .apply{
|
||||
// getWorkInfoByIdLiveData(nextRequest.id)
|
||||
// .observe(owner) { workInfo ->
|
||||
// if (workInfo?.state == WorkInfo.State.SUCCEEDED) {
|
||||
// val result = workInfo.outputData.getString("RESULT_KEY")
|
||||
// // 使用返回的结果
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
.enqueueUniqueWork(TASK_NAME, ExistingWorkPolicy.REPLACE, nextRequest)
|
||||
}
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
<!-- android:layout_marginTop="20dp"-->
|
||||
<!-- android:src="@drawable/ic_init_press" />-->
|
||||
|
||||
<TextView
|
||||
<TextView android:id="@+id/takeButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
android:text="点击取盘"
|
||||
|
||||
@@ -33,6 +33,7 @@ import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
@@ -345,6 +346,7 @@ public class FaceServer {
|
||||
*/
|
||||
public void registerFaceFeatureInfoFromDb(FaceEntity faceEntity, FaceEngine faceEngine) {
|
||||
if (faceEntity != null && faceEngine != null) {
|
||||
Log.i(TAG, "registerFaceFeature:" + faceEntity.getFaceId()+"==="+ Arrays.toString(faceEntity.getFeatureData()));
|
||||
FaceFeatureInfo faceFeatureInfo = new FaceFeatureInfo((int) faceEntity.getFaceId(), faceEntity.getFeatureData());
|
||||
int res = faceEngine.registerFaceFeature(faceFeatureInfo);
|
||||
Log.i(TAG, "registerFaceFeature:" + res);
|
||||
|
||||
@@ -337,8 +337,10 @@ public class RecognizeViewModel extends ViewModel implements RecognizeCallback {
|
||||
}
|
||||
|
||||
public void addFace(FaceEntity faceEntity) {
|
||||
if (frEngine != null)
|
||||
if (frEngine != null) {
|
||||
Log.e("performSync", "addFace=" + faceEntity.getRegisterTime());
|
||||
FaceServer.getInstance().registerFaceFeatureInfoFromDb(faceEntity, frEngine);
|
||||
}
|
||||
}
|
||||
|
||||
public void refreshFaceList() {
|
||||
|
||||
Reference in New Issue
Block a user