update 消息类型textType识别
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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+)
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 群聊 提取发言人昵称
|
* 群聊 提取发言人昵称
|
||||||
* 适用于左侧发言者
|
* 适用于左侧发言者
|
||||||
|
|||||||
Reference in New Issue
Block a user