Commit 2662cddf authored by liuyang's avatar liuyang

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

#BYLSERVER-1693
parent 83be0201
......@@ -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<String>()
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<String>()
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())
......
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