|
|
|
@ -2,7 +2,6 @@ package org.easydarwin
|
|
|
|
|
|
|
|
|
|
import android.graphics.Bitmap
|
|
|
|
|
import android.graphics.Color
|
|
|
|
|
import android.text.TextUtils
|
|
|
|
|
import android.util.Log
|
|
|
|
|
import com.common.commonlib.db.entity.Gas
|
|
|
|
|
import com.common.commonlib.utils.forShowStr
|
|
|
|
@ -22,15 +21,6 @@ object TxtOverlay {
|
|
|
|
|
// 提示变化的监听
|
|
|
|
|
private var mTipChangeListener: (() -> Unit)? = null;
|
|
|
|
|
|
|
|
|
|
// 上一次展示的提示文字
|
|
|
|
|
private var mLastShowTip = ""
|
|
|
|
|
|
|
|
|
|
// 待展示的提示文字
|
|
|
|
|
private var mToDoShowTip = ""
|
|
|
|
|
|
|
|
|
|
// 上一次展示的时间
|
|
|
|
|
private var lastTipUpdateTime: Long = 0
|
|
|
|
|
|
|
|
|
|
private const val bmpWidth: Int = 600
|
|
|
|
|
private const val bmpHeight: Int = 330
|
|
|
|
|
|
|
|
|
@ -42,40 +32,26 @@ object TxtOverlay {
|
|
|
|
|
// 时间格式化字符串
|
|
|
|
|
private val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
|
|
|
|
|
|
|
|
|
|
private fun buildOverlayBitmap(currentTimeMillis: Long) {
|
|
|
|
|
if (TextUtils.isEmpty(mToDoShowTip)) {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
// 限制获取bitmap的频率,保证性能
|
|
|
|
|
if (TextUtils.isEmpty(mLastShowTip) || mToDoShowTip != mLastShowTip || currentTimeMillis - lastTipUpdateTime > 1000) {
|
|
|
|
|
// 记录更新时间和上一次的文字
|
|
|
|
|
lastTipUpdateTime = currentTimeMillis
|
|
|
|
|
mLastShowTip = mToDoShowTip
|
|
|
|
|
val timeFormat = dateFormat.format(lastTipUpdateTime)
|
|
|
|
|
// 文字转bitmap
|
|
|
|
|
YUVUtils.generateBitmap(
|
|
|
|
|
bmp,
|
|
|
|
|
"$timeFormat@$mToDoShowTip",
|
|
|
|
|
42,
|
|
|
|
|
Color.WHITE
|
|
|
|
|
)
|
|
|
|
|
yuv = YUVUtils.getYUVByBitmap(bmp)
|
|
|
|
|
mTipChangeListener?.invoke()
|
|
|
|
|
}
|
|
|
|
|
private fun buildOverlayBitmap(currentTimeMillis: Long, tipStr: String) {
|
|
|
|
|
// 记录更新时间和上一次的文字
|
|
|
|
|
val timeFormat = dateFormat.format(currentTimeMillis)
|
|
|
|
|
// 文字转bitmap
|
|
|
|
|
YUVUtils.generateBitmap(
|
|
|
|
|
bmp,
|
|
|
|
|
"$timeFormat@$tipStr",
|
|
|
|
|
42,
|
|
|
|
|
Color.WHITE
|
|
|
|
|
)
|
|
|
|
|
yuv = YUVUtils.getYUVByBitmap(bmp)
|
|
|
|
|
mTipChangeListener?.invoke()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun getOverlayBitmap(): Bitmap? {
|
|
|
|
|
if (!TextUtils.isEmpty(mToDoShowTip)) {
|
|
|
|
|
return bmp
|
|
|
|
|
}
|
|
|
|
|
return null
|
|
|
|
|
return bmp
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun getOverlayYuv(): ByteArray? {
|
|
|
|
|
if (!TextUtils.isEmpty(mToDoShowTip)) {
|
|
|
|
|
return yuv
|
|
|
|
|
}
|
|
|
|
|
return null
|
|
|
|
|
return yuv
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun setTipChangeListener(onChange: () -> Unit) {
|
|
|
|
@ -86,6 +62,7 @@ object TxtOverlay {
|
|
|
|
|
private var looping = false
|
|
|
|
|
|
|
|
|
|
private val gasMap = ConcurrentHashMap<String, Gas>()
|
|
|
|
|
|
|
|
|
|
// 外部调用,设置待显示水印文字
|
|
|
|
|
fun startShow(gas: Gas) {
|
|
|
|
|
gasMap[gas.gasName] = gas
|
|
|
|
@ -105,9 +82,12 @@ object TxtOverlay {
|
|
|
|
|
.append("@")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
mToDoShowTip = overlayBuilder.toString()
|
|
|
|
|
Log.i("cyy", "time = ${dateFormat.format(currentTimeMillis)} mToDoShowTip = $mToDoShowTip")
|
|
|
|
|
buildOverlayBitmap(currentTimeMillis)
|
|
|
|
|
val tipStr = overlayBuilder.toString()
|
|
|
|
|
Log.i(
|
|
|
|
|
"cyy",
|
|
|
|
|
"time = ${dateFormat.format(currentTimeMillis)} mToDoShowTip = $tipStr"
|
|
|
|
|
)
|
|
|
|
|
buildOverlayBitmap(currentTimeMillis, tipStr)
|
|
|
|
|
delay(1000)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|