Commit 83be0201 authored by liuyang's avatar liuyang

APK抓包>从频道1开始依次抓取, 截图epg逻辑优化

#BYLSERVER-1693
parent 64b86c31
...@@ -211,14 +211,15 @@ class Task : Thread, IAppBaseCallback { ...@@ -211,14 +211,15 @@ class Task : Thread, IAppBaseCallback {
Log.i(TAG, "processChannels") Log.i(TAG, "processChannels")
step() step()
quitCapture() quitCapture()
AdbUtil.sendMultiKey(this.apkInfo.channelKeyEvent)
for (i in index + 1 until this.apkInfo.channelCount) { for (i in index + 1 until this.apkInfo.channelCount) {
if (this.status == State.MANUAL_STOP) if (this.status == State.MANUAL_STOP)
return false return false
// 模拟按键事件. 切换频道进行抓取 // 模拟按键事件. 切换频道进行抓取
this.channelIndex = i this.channelIndex = i
capture(apkInfo.captureDelay) capture(apkInfo.captureDelay)
AdbUtil.sendMultiKey(this.apkInfo.channelKeyEvent)
if (!AppUtil.isAppForeground(context, this.apkInfo.packageName)) { if (!AppUtil.isAppForeground(context, this.apkInfo.packageName)) {
Log.i(TAG, "target app crashed?") Log.i(TAG, "target app crashed?")
...@@ -226,6 +227,8 @@ class Task : Thread, IAppBaseCallback { ...@@ -226,6 +227,8 @@ class Task : Thread, IAppBaseCallback {
} }
step() step()
AdbUtil.sendMultiKey(this.apkInfo.channelKeyEvent)
} }
return true return true
...@@ -237,26 +240,19 @@ class Task : Thread, IAppBaseCallback { ...@@ -237,26 +240,19 @@ class Task : Thread, IAppBaseCallback {
*/ */
private fun step() { private fun step() {
Log.i(TAG, "step channel ${this.channelIndex}") Log.i(TAG, "step channel ${this.channelIndex}")
doCapture()
doScreenShot()
}
private fun doCapture() {
var playUrlItems = analysisCapture() var playUrlItems = analysisCapture()
// 如果没有抓取到地址,再次尝试 // 如果没有抓取到地址,再次尝试
if (playUrlItems.size <= 0) { if (playUrlItems.size <= 0) {
capture(this.apkInfo.captureDelay) capture(this.apkInfo.captureDelay)
playUrlItems = analysisCapture() playUrlItems = analysisCapture()
} }
// 截图保存
val screenShots = saveScreenShot()
if (screenShots.size > 0)
uploadImages.addAll(screenShots)
val channels = this.reportJson.optJSONArray("channels") val channels = this.reportJson.optJSONArray("channels")
val channelJson = JSONObject() val channelJson = JSONObject()
val channelImageFile = File(screenShots[0])
channelJson.putOpt("channelImage", channelImageFile.name)
val channelEpgImageFile = File(screenShots[1])
channelJson.putOpt("channelEpgImage", channelEpgImageFile.name)
channelJson.putOpt("channelId", this.channelIndex) channelJson.putOpt("channelId", this.channelIndex)
val playUrls = JSONArray() val playUrls = JSONArray()
...@@ -281,7 +277,8 @@ class Task : Thread, IAppBaseCallback { ...@@ -281,7 +277,8 @@ class Task : Thread, IAppBaseCallback {
if (quit) { if (quit) {
Log.i(TAG, "capture sleep $delay seconds") Log.i(TAG, "capture sleep $delay seconds")
Thread.sleep(delay * 1000L)
sleepBySeconds(delay.toLong())
quitCapture() quitCapture()
} }
} }
...@@ -358,7 +355,7 @@ class Task : Thread, IAppBaseCallback { ...@@ -358,7 +355,7 @@ class Task : Thread, IAppBaseCallback {
} }
// 截取一张频道图+一张显示频道节目的图 // 截取一张频道图+一张显示频道节目的图
private fun saveScreenShot(): ArrayList<String> { private fun doScreenShot() {
val screenImages = ArrayList<String>() val screenImages = ArrayList<String>()
var time = imageDateFormat.format(Date()) var time = imageDateFormat.format(Date())
...@@ -372,7 +369,27 @@ class Task : Thread, IAppBaseCallback { ...@@ -372,7 +369,27 @@ class Task : Thread, IAppBaseCallback {
screenShot(absOkName) screenShot(absOkName)
screenImages.add("$absOkName.jpg") screenImages.add("$absOkName.jpg")
return screenImages AdbUtil.sendMultiKey("back")
if (screenImages.size > 0)
uploadImages.addAll(screenImages)
val channelJson = JSONObject()
val channelImageFile = File(screenImages[0])
channelJson.putOpt("channelImage", channelImageFile.name)
val channelEpgImageFile = File(screenImages[1])
channelJson.putOpt("channelEpgImage", channelEpgImageFile.name)
channelJson.putOpt("channelId", this.channelIndex)
}
private fun sleepBySeconds(seconds: Long) {
try {
Thread.sleep(seconds * 1000)
} catch (e: Exception) {
e.printStackTrace()
}
} }
// 截图处理,转成jpg // 截图处理,转成jpg
......
...@@ -9,7 +9,7 @@ import java.io.IOException ...@@ -9,7 +9,7 @@ import java.io.IOException
import java.io.InputStreamReader import java.io.InputStreamReader
object AdbUtil { object AdbUtil {
const val TAG = "AdbUtil" const val TAG = "TaskAdbUtil"
const val SHELL = "sh" const val SHELL = "sh"
const val ROOT_SHELL = "su" const val ROOT_SHELL = "su"
const val LINE_BREAK = "\n" const val LINE_BREAK = "\n"
...@@ -209,6 +209,7 @@ object AdbUtil { ...@@ -209,6 +209,7 @@ object AdbUtil {
} }
fun sendMultiKey(keyPath: String) { fun sendMultiKey(keyPath: String) {
Log.i(TAG, "sendMultiKey:$keyPath")
val keyEvents = ArrayList<EmulateKey>() val keyEvents = ArrayList<EmulateKey>()
val keys = keyPath.split(Constants.SLASH) val keys = keyPath.split(Constants.SLASH)
for (stepKey in keys) { for (stepKey in keys) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment