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