|
|
|
@@ -53,6 +53,7 @@ import com.sw.platecabinet.model.response.EquipmentUserInfo
|
|
|
|
|
import com.sw.platecabinet.socket.LanServer
|
|
|
|
|
import com.sw.platecabinet.socket.LanServerListenerImpl
|
|
|
|
|
import com.sw.platecabinet.socket.TcpClient
|
|
|
|
|
import com.sw.platecabinet.utils.Debouncer
|
|
|
|
|
import com.sw.platecabinet.utils.IntervalExecutor
|
|
|
|
|
import com.sw.platecabinet.utils.PermissionHelper
|
|
|
|
|
import com.sw.platecabinet.utils.PlateUtils
|
|
|
|
@@ -99,8 +100,8 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private var logList: MutableList<String> = mutableListOf()
|
|
|
|
|
private val logAdapter by lazy { LogAdapter(logList) }
|
|
|
|
|
// private var logList: MutableList<String> = mutableListOf()
|
|
|
|
|
// private val logAdapter by lazy { LogAdapter(logList) }
|
|
|
|
|
|
|
|
|
|
override fun initialize() {
|
|
|
|
|
instance = this
|
|
|
|
@@ -126,23 +127,26 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
|
|
|
|
|
// binding.btnCollectFace.setOnClickListener { collectFace() }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
binding.rvLogInfo.let {
|
|
|
|
|
it.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, true)
|
|
|
|
|
it.adapter = logAdapter
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
binding.btnLogState.let {
|
|
|
|
|
it.tag = false
|
|
|
|
|
it.setImageResource(R.drawable.ic_log_show)
|
|
|
|
|
it.setOnClickListener { v ->
|
|
|
|
|
binding.rvLogInfo.visible()
|
|
|
|
|
val state = it.tag.toString().toBooleanStrictOrNull() ?: false
|
|
|
|
|
it.tag = state
|
|
|
|
|
it.setImageResource(
|
|
|
|
|
if (state) R.drawable.ic_log_hide else R.drawable.ic_log_show
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// binding.rvLogInfo.let {
|
|
|
|
|
// it.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, true)
|
|
|
|
|
// it.adapter = logAdapter
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// binding.btnLogState.let {
|
|
|
|
|
// it.tag = false
|
|
|
|
|
// it.setImageResource(R.drawable.ic_log_show)
|
|
|
|
|
// it.setOnClickListener { v ->
|
|
|
|
|
// binding.rvLogInfo.run {
|
|
|
|
|
// val state = it.tag.toString().toBooleanStrictOrNull() ?: false
|
|
|
|
|
// if (state) visible() else gone()
|
|
|
|
|
// }
|
|
|
|
|
// val state = it.tag.toString().toBooleanStrictOrNull() ?: false
|
|
|
|
|
// it.tag = state
|
|
|
|
|
// it.setImageResource(
|
|
|
|
|
// if (state) R.drawable.ic_log_hide else R.drawable.ic_log_show
|
|
|
|
|
// )
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun checkCameraPermission() {
|
|
|
|
@@ -230,6 +234,10 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
|
|
|
|
|
|
|
|
|
|
recognizeViewModel.recognizeUserId.observe(this, Observer { result: CompareResult? ->
|
|
|
|
|
Timber.i("recognizeUserId observe userId = ${result?.faceEntity?.userName}")
|
|
|
|
|
// if (result?.faceEntity == null) {
|
|
|
|
|
// collectFace()
|
|
|
|
|
// return@Observer
|
|
|
|
|
// }
|
|
|
|
|
currentUserId = result?.faceEntity?.userName
|
|
|
|
|
// viewModel.getUserInfoById(memberId = userId)
|
|
|
|
|
// ToastUtils.showToast(currentUserId)
|
|
|
|
@@ -263,33 +271,38 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private var currentPlateInfo: EquipmentUserInfo? = null
|
|
|
|
|
private var debouncer = Debouncer(5000)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 打开餐盘柜
|
|
|
|
|
*/
|
|
|
|
|
private fun openPlate(userId: String?) {
|
|
|
|
|
Log.d(TAG, "openPlate: userId=$userId")
|
|
|
|
|
getPlateData { items ->
|
|
|
|
|
Log.d(TAG, "openPlate: items:${Gson().toJson(items)}")
|
|
|
|
|
// 未查询到当前用户,查询第一个未绑定的餐盘
|
|
|
|
|
val item = items.firstOrNull { it.plateNumber.isNullOrEmpty().not() }
|
|
|
|
|
Log.d(TAG, "openPlate: item2:${item}")
|
|
|
|
|
if (item == null) {
|
|
|
|
|
//暂无餐盘
|
|
|
|
|
ToastUtils.showToast("暂无餐盘,请联系管理人员!")
|
|
|
|
|
goInitActivity()
|
|
|
|
|
return@getPlateData
|
|
|
|
|
}
|
|
|
|
|
Log.d(TAG, "openPlate: item3:${item}")
|
|
|
|
|
item.faceId = userId
|
|
|
|
|
item.updateTime = DateTimeUtils.getDateTimeString()
|
|
|
|
|
item.plateNumber = null
|
|
|
|
|
//打开柜子
|
|
|
|
|
PlateUtils.open(this, item.equipmentBoxCode, false)
|
|
|
|
|
debouncer.debounce {
|
|
|
|
|
Log.d(TAG, "openPlate: userId=$userId")
|
|
|
|
|
getPlateData { items ->
|
|
|
|
|
Log.d(TAG, "openPlate: items:${Gson().toJson(items)}")
|
|
|
|
|
// 未查询到当前用户,查询第一个未绑定的餐盘
|
|
|
|
|
val item = items.firstOrNull { it.plateNumber.isNullOrEmpty().not() }
|
|
|
|
|
Log.d(TAG, "openPlate: item2:${item}")
|
|
|
|
|
if (item == null) {
|
|
|
|
|
//暂无餐盘
|
|
|
|
|
ToastUtils.showToast("暂无餐盘,请联系管理人员!")
|
|
|
|
|
goInitActivity()
|
|
|
|
|
return@getPlateData
|
|
|
|
|
}
|
|
|
|
|
Log.d(TAG, "openPlate: item3:${item}")
|
|
|
|
|
item.faceId = userId
|
|
|
|
|
item.updateTime = DateTimeUtils.getDateTimeString()
|
|
|
|
|
item.plateNumber = null
|
|
|
|
|
//打开柜子
|
|
|
|
|
PlateUtils.open(this, item.equipmentBoxCode, false)
|
|
|
|
|
|
|
|
|
|
currentPlateInfo = item
|
|
|
|
|
MyApp.plateList = items
|
|
|
|
|
SpTool.savePlateData(items)
|
|
|
|
|
currentPlateInfo = item
|
|
|
|
|
MyApp.plateList = items
|
|
|
|
|
SpTool.savePlateData(items)
|
|
|
|
|
|
|
|
|
|
debouncer.reset()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -594,7 +607,6 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
|
|
|
|
|
loadLogInfo("collectFace: -----------1,开始采集人脸,开始时间:${DateTimeUtils.getDateTimeString()}----------")
|
|
|
|
|
if (isFirstOpen) return
|
|
|
|
|
loadLogInfo("collectFace: ----------2,isFirstOpen=false-----------")
|
|
|
|
|
logAdapter.addData("collectFace: ----------22222222,isFirstOpen=false-----------")
|
|
|
|
|
if (facePreviewInfoList.isNullOrEmpty()) {
|
|
|
|
|
loadLogInfo("collectFace: ----------3,未检测到人脸信息-----------")
|
|
|
|
|
return
|
|
|
|
@@ -605,8 +617,17 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
|
|
|
|
|
recognizeViewModel.updateRegisterStatus(REGISTER_STATUS_READY)
|
|
|
|
|
loadLogInfo("collectFace: ----------5,人脸采集中-----------")
|
|
|
|
|
getFaceData { faceData ->
|
|
|
|
|
userFaceInfo = null
|
|
|
|
|
saveFaceInfo(faceData)
|
|
|
|
|
// userFaceInfo = null
|
|
|
|
|
Thread {
|
|
|
|
|
val faceDao = FaceDatabase.getInstance(this).faceDao()
|
|
|
|
|
val entity = faceDao.queryByUserName(tempUserId)
|
|
|
|
|
if (entity != null) {
|
|
|
|
|
//已存在用户
|
|
|
|
|
loadLogInfo("collectFace,saveFaceInfo: ----------9,数据库已存在该人脸数据-----------")
|
|
|
|
|
return@Thread
|
|
|
|
|
}
|
|
|
|
|
saveFaceInfo(faceData)
|
|
|
|
|
}.start()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -628,12 +649,15 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
|
|
|
|
|
// toast("您已采集过人脸信息")
|
|
|
|
|
// return@startIntervalTask
|
|
|
|
|
// }
|
|
|
|
|
loadLogInfo("collectFace,getFaceData: ----------6,正在获人脸取特征数据")
|
|
|
|
|
// loadLogInfo("collectFace,getFaceData: ----------6,正在获人脸取特征数据")
|
|
|
|
|
if (userFaceInfo == null) {
|
|
|
|
|
return@startIntervalTask
|
|
|
|
|
}
|
|
|
|
|
loadLogInfo("collectFace,getFaceData: ----------7,拿到人脸取特征数据-----------")
|
|
|
|
|
val faceData = Base64.encode(userFaceInfo!!.faceFeature!!.featureData)
|
|
|
|
|
val faceData: String? = Base64.encode(userFaceInfo?.faceFeature?.featureData)
|
|
|
|
|
if (faceData.isNullOrBlank()) {
|
|
|
|
|
return@startIntervalTask
|
|
|
|
|
}
|
|
|
|
|
block(faceData)
|
|
|
|
|
checkFaceJob?.cancel()
|
|
|
|
|
job?.cancel()
|
|
|
|
@@ -643,7 +667,7 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
|
|
|
|
|
|
|
|
|
|
private fun loadLogInfo(msg: String) {
|
|
|
|
|
Log.d(TAG, msg)
|
|
|
|
|
logAdapter.addData(msg)
|
|
|
|
|
// logAdapter.addData(msg)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private var facePreviewInfoList: MutableList<FacePreviewInfo>? = null
|
|
|
|
@@ -673,43 +697,42 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun saveFaceInfo(faceData: String) {
|
|
|
|
|
Thread {
|
|
|
|
|
try {
|
|
|
|
|
loadLogInfo("collectFace,saveFaceInfo: ----------8,保存人脸取特征数据-----------")
|
|
|
|
|
val faceDao = FaceDatabase.getInstance(this).faceDao()
|
|
|
|
|
val entity = faceDao.queryByUserName(tempUserId)
|
|
|
|
|
if (entity != null) {
|
|
|
|
|
//已存在用户
|
|
|
|
|
loadLogInfo("collectFace,saveFaceInfo: ----------9,数据库已存在该人脸数据-----------")
|
|
|
|
|
return@Thread
|
|
|
|
|
}
|
|
|
|
|
val faceEntity = FaceEntity(
|
|
|
|
|
tempUserId,
|
|
|
|
|
null,
|
|
|
|
|
Base64.decode(faceData)
|
|
|
|
|
).also {
|
|
|
|
|
it.userType = "2"
|
|
|
|
|
}
|
|
|
|
|
faceDao.insert(faceEntity)
|
|
|
|
|
loadLogInfo("collectFace,saveFaceInfo: ----------10,人脸数据保存完成-----------")
|
|
|
|
|
recognizeViewModel.refreshFaceList()
|
|
|
|
|
loadLogInfo("collectFace,saveFaceInfo: ----------11,刷新人脸数据-----------")
|
|
|
|
|
sendFaceData(faceData)
|
|
|
|
|
loadLogInfo("collectFace,saveFaceInfo: ----------12,人脸数据发送完成时间:${DateTimeUtils.getDateTimeString()}-----------")
|
|
|
|
|
loadLogInfo("---------------------------------")
|
|
|
|
|
collectCount = 0
|
|
|
|
|
} catch (e: Exception) {
|
|
|
|
|
e.printStackTrace()
|
|
|
|
|
loadLogInfo("collectFace,saveFaceInfo: ----------13,人脸采集异常:${e.message}-----------")
|
|
|
|
|
collectCount++
|
|
|
|
|
if (collectCount <= 5) {
|
|
|
|
|
collectFace()
|
|
|
|
|
} else {
|
|
|
|
|
loadLogInfo("collectFace,saveFaceInfo: ----------14,${collectCount}次人脸采集异常:${e.message}-----------")
|
|
|
|
|
ToastUtils.showToast("人脸采集异常:${e.message}")
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
checkFaceJob?.cancel()
|
|
|
|
|
|
|
|
|
|
sendFaceData(faceData)
|
|
|
|
|
loadLogInfo("collectFace,saveFaceInfo: ----------12,人脸数据发送完成时间:${DateTimeUtils.getDateTimeString()}-----------")
|
|
|
|
|
|
|
|
|
|
runOnUiThread {
|
|
|
|
|
openPlate(tempUserId)
|
|
|
|
|
}
|
|
|
|
|
}.start()
|
|
|
|
|
|
|
|
|
|
loadLogInfo("collectFace,saveFaceInfo: ----------8,保存人脸取特征数据-----------")
|
|
|
|
|
val faceDao = FaceDatabase.getInstance(this).faceDao()
|
|
|
|
|
val faceEntity = FaceEntity(
|
|
|
|
|
tempUserId,
|
|
|
|
|
null,
|
|
|
|
|
Base64.decode(faceData)
|
|
|
|
|
).also {
|
|
|
|
|
it.userType = "2"
|
|
|
|
|
}
|
|
|
|
|
faceDao.insert(faceEntity)
|
|
|
|
|
loadLogInfo("collectFace,saveFaceInfo: ----------10,人脸数据保存完成-----------")
|
|
|
|
|
recognizeViewModel.refreshFaceList()
|
|
|
|
|
loadLogInfo("collectFace,saveFaceInfo: ----------11,刷新人脸数据-----------")
|
|
|
|
|
loadLogInfo("---------------------------------")
|
|
|
|
|
collectCount = 0
|
|
|
|
|
} catch (e: Exception) {
|
|
|
|
|
e.printStackTrace()
|
|
|
|
|
loadLogInfo("collectFace,saveFaceInfo: ----------13,人脸采集异常:${e.message}-----------")
|
|
|
|
|
collectCount++
|
|
|
|
|
if (collectCount <= 5) {
|
|
|
|
|
collectFace()
|
|
|
|
|
} else {
|
|
|
|
|
loadLogInfo("collectFace,saveFaceInfo: ----------14,${collectCount}次人脸采集异常:${e.message}-----------")
|
|
|
|
|
ToastUtils.showToast("人脸采集异常:${e.message}")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private var collectCount = 0;
|
|
|
|
|