diff --git a/app/src/main/java/com/duolebo/blyrobot/data/Task.kt b/app/src/main/java/com/duolebo/blyrobot/data/Task.kt index dd8bff231c304f1059dd23221b4a03aeff456008..11500ecb0094b32265d7c3f71b77578d53bb6c92 100644 --- a/app/src/main/java/com/duolebo/blyrobot/data/Task.kt +++ b/app/src/main/java/com/duolebo/blyrobot/data/Task.kt @@ -211,14 +211,15 @@ class Task : Thread, IAppBaseCallback { Log.i(TAG, "processChannels") step() quitCapture() + AdbUtil.sendMultiKey(this.apkInfo.channelKeyEvent) for (i in index + 1 until this.apkInfo.channelCount) { if (this.status == State.MANUAL_STOP) return false + // 模拟按键事件. 切换频道进行抓取 this.channelIndex = i capture(apkInfo.captureDelay) - AdbUtil.sendMultiKey(this.apkInfo.channelKeyEvent) if (!AppUtil.isAppForeground(context, this.apkInfo.packageName)) { Log.i(TAG, "target app crashed?") @@ -226,6 +227,8 @@ class Task : Thread, IAppBaseCallback { } step() + + AdbUtil.sendMultiKey(this.apkInfo.channelKeyEvent) } return true @@ -237,26 +240,19 @@ class Task : Thread, IAppBaseCallback { */ private fun step() { Log.i(TAG, "step channel ${this.channelIndex}") + doCapture() + doScreenShot() + } + private fun doCapture() { var playUrlItems = analysisCapture() // 如果没有抓取到地址,再次尝试 if (playUrlItems.size <= 0) { capture(this.apkInfo.captureDelay) playUrlItems = analysisCapture() } - // 截图保存 - val screenShots = saveScreenShot() - if (screenShots.size > 0) - uploadImages.addAll(screenShots) - val channels = this.reportJson.optJSONArray("channels") 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) val playUrls = JSONArray() @@ -281,7 +277,8 @@ class Task : Thread, IAppBaseCallback { if (quit) { Log.i(TAG, "capture sleep $delay seconds") - Thread.sleep(delay * 1000L) + + sleepBySeconds(delay.toLong()) quitCapture() } } @@ -358,7 +355,7 @@ class Task : Thread, IAppBaseCallback { } // 截取一张频道图+一张显示频道节目的图 - private fun saveScreenShot(): ArrayList { + private fun doScreenShot() { val screenImages = ArrayList() var time = imageDateFormat.format(Date()) @@ -372,7 +369,27 @@ class Task : Thread, IAppBaseCallback { screenShot(absOkName) 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 diff --git a/app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt b/app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt index aaffe277084998b623c83b7451251551a03112da..cbb6c3871b23ed59307e3f494ac998a4f55ba5d0 100644 --- a/app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt +++ b/app/src/main/java/com/duolebo/blyrobot/util/AdbUtil.kt @@ -9,7 +9,7 @@ import java.io.IOException import java.io.InputStreamReader object AdbUtil { - const val TAG = "AdbUtil" + const val TAG = "TaskAdbUtil" const val SHELL = "sh" const val ROOT_SHELL = "su" const val LINE_BREAK = "\n" @@ -209,6 +209,7 @@ object AdbUtil { } fun sendMultiKey(keyPath: String) { + Log.i(TAG, "sendMultiKey:$keyPath") val keyEvents = ArrayList() val keys = keyPath.split(Constants.SLASH) for (stepKey in keys) {