update 消息类型textType识别

This commit is contained in:
gallonyin
2023-01-09 16:57:31 +08:00
parent 481c19251a
commit 1321c0387e
3 changed files with 54 additions and 3 deletions

View File

@@ -76,7 +76,7 @@ object WeworkController {
*/ */
@RequestMapping @RequestMapping
fun replyMessage(message: WeworkMessageBean): Boolean { fun replyMessage(message: WeworkMessageBean): Boolean {
LogUtils.d("replyMessage(): ${message.receivedName} ${message.originalContent} ${message.receivedContent}") LogUtils.d("replyMessage(): ${message.receivedName} ${message.originalContent} ${message.textType} ${message.receivedContent}")
return WeworkOperationImpl.replyMessage( return WeworkOperationImpl.replyMessage(
message, message,
message.titleList, message.titleList,

View File

@@ -387,6 +387,7 @@ object AccessibilityUtil {
while (nodeInfo != null) { while (nodeInfo != null) {
if (nodeInfo.isLongClickable) { if (nodeInfo.isLongClickable) {
nodeInfo.performAction(AccessibilityNodeInfo.ACTION_LONG_CLICK) nodeInfo.performAction(AccessibilityNodeInfo.ACTION_LONG_CLICK)
LogUtils.d("performLongClickWithSon: text: ${nodeInfo.text} desc: ${nodeInfo.contentDescription}")
return true return true
} }
if (nodeInfo.childCount > 0) { if (nodeInfo.childCount > 0) {
@@ -1133,6 +1134,37 @@ object AccessibilityUtil {
}, null) }, null)
} }
/**
* Gesture手势实现点击(Android7+)
* 解决 longClickable=false 无法点击问题
*/
fun longClickByNode(
service: AccessibilityService,
nodeInfo: AccessibilityNodeInfo?
): Boolean {
if (nodeInfo == null) return false
nodeInfo.refresh()
val rect = Rect()
nodeInfo.getBoundsInScreen(rect)
val x: Int = (rect.left + rect.right) / 2
val y: Int = (rect.top + rect.bottom) / 2
val point = Point(x, y)
val builder = GestureDescription.Builder()
val path = Path()
path.moveTo(point.x.toFloat(), point.y.toFloat())
builder.addStroke(StrokeDescription(path, 0L, 500L))
val gesture = builder.build()
return service.dispatchGesture(gesture, object : GestureResultCallback() {
override fun onCompleted(gestureDescription: GestureDescription) {
LogUtils.v("longClick ok onCompleted")
}
override fun onCancelled(gestureDescription: GestureDescription) {
LogUtils.v("longClick ok onCancelled")
}
}, null)
}
/** /**
* 向下滚动 * 向下滚动
* Gesture手势实现滚动(Android7+) * Gesture手势实现滚动(Android7+)

View File

@@ -190,6 +190,9 @@ object WeworkTextUtil {
视频 2tv 2iv (视频大小、视频时长、缩略图、播放按钮) 视频 2tv 2iv (视频大小、视频时长、缩略图、播放按钮)
链接 3tv 1iv (标题、副标题、下方来源、图标) 链接 3tv 1iv (标题、副标题、下方来源、图标)
文件 3tv 1iv (文件名、文件大小、下方来源、图标) (需要和链接区分) 文件 3tv 1iv (文件名、文件大小、下方来源、图标) (需要和链接区分)
链接 2tv 1iv (文件名、副标题、图标) (微信*用户发的链接不带下方来源 需要和接龙和链接区分)
链接 1tv 1iv (文件名、图标) (微信*用户发的链接不带副标题和下方来源)
文件 2tv 1iv (文件名、文件大小、图标) (微信*用户发的文件不带下方来源 需要和接龙和链接区分)
小程序 3tv 2iv (标题、副标题、下方来源、小程序icon、图标) 小程序 3tv 2iv (标题、副标题、下方来源、小程序icon、图标)
合并聊天记录 2tv 0iv (标题、摘要) 合并聊天记录 2tv 0iv (标题、摘要)
收集表 6tv 0iv (标题、副标题、行1、行2、行3、下方来源) 收集表 6tv 0iv (标题、副标题、行1、行2、行3、下方来源)
@@ -209,8 +212,10 @@ object WeworkTextUtil {
val tvList = findAllOnceByClazz(node, Views.TextView) val tvList = findAllOnceByClazz(node, Views.TextView)
val tvCount = tvList.size val tvCount = tvList.size
val ivCount = findAllOnceByClazz(node, Views.ImageView).size val ivCount = findAllOnceByClazz(node, Views.ImageView).size
LogUtils.v("tvCount: $tvCount ivCount: $ivCount")
return when { return when {
tvCount == 1 && ivCount == 0 -> WeworkMessageBean.TEXT_TYPE_PLAIN tvCount == 1 && ivCount == 0 -> WeworkMessageBean.TEXT_TYPE_PLAIN
tvCount == 1 && ivCount == 1 -> WeworkMessageBean.TEXT_TYPE_LINK
tvCount == 0 && ivCount == 1 -> WeworkMessageBean.TEXT_TYPE_IMAGE tvCount == 0 && ivCount == 1 -> WeworkMessageBean.TEXT_TYPE_IMAGE
tvCount == 2 && ivCount == 2 -> { tvCount == 2 && ivCount == 2 -> {
val parent = tvList[0].parent val parent = tvList[0].parent
@@ -227,11 +232,18 @@ object WeworkTextUtil {
WeworkMessageBean.TEXT_TYPE_LINK WeworkMessageBean.TEXT_TYPE_LINK
} }
} }
tvCount == 3 && ivCount == 1 -> WeworkMessageBean.TEXT_TYPE_FILE
tvCount == 3 && ivCount == 2 -> WeworkMessageBean.TEXT_TYPE_MICROPROGRAM tvCount == 3 && ivCount == 2 -> WeworkMessageBean.TEXT_TYPE_MICROPROGRAM
tvCount == 2 && ivCount == 0 -> WeworkMessageBean.TEXT_TYPE_CHAT_RECORD tvCount == 2 && ivCount == 0 -> WeworkMessageBean.TEXT_TYPE_CHAT_RECORD
tvCount == 6 && ivCount == 0 -> WeworkMessageBean.TEXT_TYPE_COLLECTION tvCount == 6 && ivCount == 0 -> WeworkMessageBean.TEXT_TYPE_COLLECTION
tvCount == 2 && ivCount == 1 -> WeworkMessageBean.TEXT_TYPE_SOLITAIRE tvCount == 2 && ivCount == 1 -> {
if (isSolitaire(tvList[1].text?.toString())) {
WeworkMessageBean.TEXT_TYPE_SOLITAIRE
} else if (isFileSize(tvList[1].text?.toString())) {
WeworkMessageBean.TEXT_TYPE_FILE
} else {
WeworkMessageBean.TEXT_TYPE_LINK
}
}
tvCount == 4 && ivCount == 2 -> WeworkMessageBean.TEXT_TYPE_VOICE tvCount == 4 && ivCount == 2 -> WeworkMessageBean.TEXT_TYPE_VOICE
tvCount == 5 && ivCount == 1 -> WeworkMessageBean.TEXT_TYPE_CARD tvCount == 5 && ivCount == 1 -> WeworkMessageBean.TEXT_TYPE_CARD
tvCount == 1 && ivCount == 2 -> WeworkMessageBean.TEXT_TYPE_LOCATION tvCount == 1 && ivCount == 2 -> WeworkMessageBean.TEXT_TYPE_LOCATION
@@ -254,6 +266,13 @@ object WeworkTextUtil {
return size?.matches("[0-9\\.]+[BKMG]".toRegex()) ?: false return size?.matches("[0-9\\.]+[BKMG]".toRegex()) ?: false
} }
/**
* 是否为接龙
*/
fun isSolitaire(text: String?): Boolean {
return text?.contains("参与接龙") ?: false
}
/** /**
* 群聊 提取发言人昵称 * 群聊 提取发言人昵称
* 适用于左侧发言者 * 适用于左侧发言者