From 2662cddf1316b6dce669f333f35a0f3fb2eacf55 Mon Sep 17 00:00:00 2001 From: liuyang Date: Fri, 16 Nov 2018 15:25:48 +0800 Subject: [PATCH] =?UTF-8?q?APK=E6=8A=93=E5=8C=85>=E4=BB=8E=E9=A2=91?= =?UTF-8?q?=E9=81=931=E5=BC=80=E5=A7=8B=E4=BE=9D=E6=AC=A1=E6=8A=93?= =?UTF-8?q?=E5=8F=96,=20=E6=88=AA=E5=9B=BEepg=E9=80=BB=E8=BE=91=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20#BYLSERVER-1693?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/duolebo/blyrobot/data/Task.kt | 94 +++++++++---------- 1 file changed, 44 insertions(+), 50 deletions(-) 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 11500ec..b9c5127 100644 --- a/app/src/main/java/com/duolebo/blyrobot/data/Task.kt +++ b/app/src/main/java/com/duolebo/blyrobot/data/Task.kt @@ -209,26 +209,31 @@ class Task : Thread, IAppBaseCallback { */ private fun processChannels(index: Int): Boolean { Log.i(TAG, "processChannels") - step() + processChannelItem() quitCapture() - AdbUtil.sendMultiKey(this.apkInfo.channelKeyEvent) + for (i in index + 1 until this.apkInfo.channelCount) { if (this.status == State.MANUAL_STOP) return false - // 模拟按键事件. 切换频道进行抓取 + val halfSeconds = apkInfo.captureDelay/2; this.channelIndex = i - capture(apkInfo.captureDelay) + + AdbUtil.sendMultiKey(this.apkInfo.channelKeyEvent) + + // 抓包挺 + capture(apkInfo.captureDelay, false) + sleepBySeconds(halfSeconds + 1) if (!AppUtil.isAppForeground(context, this.apkInfo.packageName)) { Log.i(TAG, "target app crashed?") return false } - step() - - AdbUtil.sendMultiKey(this.apkInfo.channelKeyEvent) + processChannelItem() + sleepBySeconds(halfSeconds) + quitCapture() } return true @@ -238,13 +243,9 @@ class Task : Thread, IAppBaseCallback { * 单个频道处理 * 分析抓包数据+屏幕截图 */ - private fun step() { - Log.i(TAG, "step channel ${this.channelIndex}") - doCapture() - doScreenShot() - } - - private fun doCapture() { + private fun processChannelItem() { + Log.i(TAG, "processChannelItem channel ${this.channelIndex}") + // 处理抓包数据 var playUrlItems = analysisCapture() // 如果没有抓取到地址,再次尝试 if (playUrlItems.size <= 0) { @@ -253,7 +254,6 @@ class Task : Thread, IAppBaseCallback { } val channels = this.reportJson.optJSONArray("channels") val channelJson = JSONObject() - channelJson.putOpt("channelId", this.channelIndex) val playUrls = JSONArray() for (playUrl in playUrlItems) { @@ -262,6 +262,30 @@ class Task : Thread, IAppBaseCallback { channelJson.putOpt("playUrls", playUrls) + // 处理图片上传信息 + val screenImages = ArrayList() + + var time = imageDateFormat.format(Date()) + val absName = this.imagePath + "/${this.apkInfo.packageName}_${channelIndex}_$time" + screenShot(absName) + screenImages.add("$absName.jpg") + + AdbUtil.sendMultiKey(this.apkInfo.menuKeyEvent) + time = imageDateFormat.format(Date()) + val absOkName = this.imagePath + "/${this.apkInfo.packageName}_${channelIndex}_${time}_ok" + screenShot(absOkName) + screenImages.add("$absOkName.jpg") + AdbUtil.sendMultiKey("back") + + if (screenImages.size > 0) + uploadImages.addAll(screenImages) + + 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) + channels.put(channelJson) } @@ -277,8 +301,7 @@ class Task : Thread, IAppBaseCallback { if (quit) { Log.i(TAG, "capture sleep $delay seconds") - - sleepBySeconds(delay.toLong()) + sleepBySeconds(delay) quitCapture() } } @@ -354,39 +377,10 @@ class Task : Thread, IAppBaseCallback { return playUrlItems } - // 截取一张频道图+一张显示频道节目的图 - private fun doScreenShot() { - val screenImages = ArrayList() - - var time = imageDateFormat.format(Date()) - val absName = this.imagePath + "/${this.apkInfo.packageName}_${channelIndex}_$time" - screenShot(absName) - screenImages.add("$absName.jpg") - - AdbUtil.sendMultiKey(this.apkInfo.menuKeyEvent) - time = imageDateFormat.format(Date()) - val absOkName = this.imagePath + "/${this.apkInfo.packageName}_${channelIndex}_${time}_ok" - screenShot(absOkName) - screenImages.add("$absOkName.jpg") - - 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) { + private fun sleepBySeconds(seconds: Int) { + Log.i(TAG, "sleep seconds:$seconds") try { - Thread.sleep(seconds * 1000) + Thread.sleep((seconds * 1000).toLong()) } catch (e: Exception) { e.printStackTrace() } @@ -440,7 +434,7 @@ class Task : Thread, IAppBaseCallback { //通过ftp上传图片到服务器 private fun uploadImage() { - + Log.i(TAG, "upload image....") try { val uploadRequest = FTPUploadRequest(context, Config.instance.getFtpServer(), 21) .setUsernameAndPassword(Config.instance.getFtpUserName(), Config.instance.getFtpPassword()) -- 2.21.0