diff --git a/app/src/main/java/com/duolebo/blyrobot/MainActivity.kt b/app/src/main/java/com/duolebo/blyrobot/MainActivity.kt index 6020e5e1c46a4561c6bc3f4522ebc518cefb2170..e1193641a0851cbb80c9cd74fb76a298cfa84600 100644 --- a/app/src/main/java/com/duolebo/blyrobot/MainActivity.kt +++ b/app/src/main/java/com/duolebo/blyrobot/MainActivity.kt @@ -81,11 +81,12 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback { } private fun getLocalAppList() { - ThreadProxy.getInstance().execute(object : Runnable { - override fun run() { - apkPackageInfo = ApkPackageInfo.getAppInfos(applicationContext) + ThreadProxy.getInstance().execute { + apkPackageInfo = ApkPackageInfo.getAppInfos(applicationContext) + runOnUiThread { + appInfoAdapter.notifyDataSetChanged() } - }) + } } private fun initRefreshTimer() { @@ -143,7 +144,7 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback { } } - private fun getAppIcon(packageName: String): Drawable? { + fun getAppIcon(packageName: String): Drawable? { var drawable:Drawable ?= null apkPackageInfo?.run { val targetPackage = this.find { @@ -158,7 +159,7 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback { return drawable } - class AppConfigAdapter: BaseAdapter() { + inner class AppConfigAdapter: BaseAdapter() { private val dataList = ArrayList() @@ -176,6 +177,10 @@ class MainActivity : AppCompatActivity(), IAppBaseCallback { itemView = convertView as AppConfigListItem itemView.setData(dataList[position]) + val drawable = getAppIcon(dataList[position].packageName) + drawable?.run { + itemView.setIcon(this) + } return itemView } 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 55371cabbacde8cca06be23d2e0dd06baf5c13c3..0bbb3fee2799b9419e36576db0f92044b8ffafa9 100644 --- a/app/src/main/java/com/duolebo/blyrobot/data/Task.kt +++ b/app/src/main/java/com/duolebo/blyrobot/data/Task.kt @@ -1,6 +1,7 @@ package com.duolebo.blyrobot.data import android.content.Context +import android.os.Build import android.os.Environment import android.util.Log import android.widget.Toast @@ -14,6 +15,7 @@ import com.duolebo.blyrobot.util.Config import net.gotev.uploadservice.* import net.gotev.uploadservice.ftp.FTPUploadRequest import net.gotev.uploadservice.ftp.UnixPermissions +import org.json.JSONArray import org.json.JSONObject import java.io.File import java.text.SimpleDateFormat @@ -71,9 +73,18 @@ class Task : IAppBaseCallback { dir.mkdirs() } + // 准备上传报告信息 + private fun prepareReport() { + this.reportJson = JSONObject() + reportJson.putOpt(ApkInfo.NAME, this.apkInfo.name) + reportJson.putOpt(ApkInfo.PACKAGE_NAME, this.apkInfo.packageName) + reportJson.putOpt("device", Build.BRAND + "|" + Build.HARDWARE + "|" + Build.VERSION.RELEASE) + reportJson.putOpt("channels", JSONArray()) + } + fun start() { this.status = "1" - this.reportJson = JSONObject() + this.prepareReport() // 启动应用 this.launchApp() // 频道轮询处理 @@ -144,6 +155,21 @@ class Task : IAppBaseCallback { if (screenShots.size > 0) uploadImages.addAll(screenShots) val playUrlItems = analysisCapture() + + val channels = this.reportJson.optJSONArray("channels") + val channelJson = JSONObject() + channelJson.putOpt("channelImage", screenShots[0]) + channelJson.putOpt("channelEpgImage", screenShots[1]) + channelJson.putOpt("channelId", this.channelIndex) + + val playUrls = JSONArray() + for (playUrl in playUrlItems) { + playUrls.put(playUrl.url) + } + + channelJson.putOpt("playUrls", playUrls) + + channels.put(channelJson) } // 抓包处理 diff --git a/app/src/main/java/com/duolebo/blyrobot/ui/AppConfigListItem.kt b/app/src/main/java/com/duolebo/blyrobot/ui/AppConfigListItem.kt index 3cb899ad6928cc9eb5bfdb26b1106e8c3ed7e595..5d5af533b2eec9e1e6db9f873c8ab96c6db72bfe 100644 --- a/app/src/main/java/com/duolebo/blyrobot/ui/AppConfigListItem.kt +++ b/app/src/main/java/com/duolebo/blyrobot/ui/AppConfigListItem.kt @@ -1,6 +1,7 @@ package com.duolebo.blyrobot.ui import android.content.Context +import android.graphics.drawable.Drawable import android.view.LayoutInflater import android.widget.RelativeLayout import com.duolebo.blyrobot.R @@ -17,4 +18,8 @@ class AppConfigListItem(context: Context?) : RelativeLayout(context) { this.appName.text = apkInfo.name this.packageName.text = apkInfo.packageName } + + fun setIcon(drawable: Drawable) { + this.appIcon.setImageDrawable(drawable) + } } \ No newline at end of file diff --git a/app/src/main/java/com/duolebo/blyrobot/util/Config.kt b/app/src/main/java/com/duolebo/blyrobot/util/Config.kt index 9fe65bef97bf1edfb1adb5be098373bd0a624e35..271ebec9bd5560e21a60280590336bc7d20da76a 100644 --- a/app/src/main/java/com/duolebo/blyrobot/util/Config.kt +++ b/app/src/main/java/com/duolebo/blyrobot/util/Config.kt @@ -3,7 +3,7 @@ package com.duolebo.blyrobot.util import com.duolebo.appbase.prj.bmtv.protocol.IProtocolConfig class Config: IProtocolConfig { - private val isDebug = false + private val isDebug = true override fun getProtocolUrl(): String { if (isDebug)