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 11500ecb0094b32265d7c3f71b77578d53bb6c92..b9c5127afe258797b7033d39537c76b6766dcf4b 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())