Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
B
BYLAppRobot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liuyang
BYLAppRobot
Commits
25f6fdc3
Commit
25f6fdc3
authored
Oct 07, 2018
by
liuyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
APK图片抓取识别及轮播流地址抓取,客户端展示
#BYLSERVER-1438
parent
1b98a75e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
125 additions
and
8 deletions
+125
-8
MainActivity.kt
app/src/main/java/com/duolebo/blyrobot/MainActivity.kt
+99
-1
Task.kt
app/src/main/java/com/duolebo/blyrobot/data/Task.kt
+25
-6
TaskManager.kt
app/src/main/java/com/duolebo/blyrobot/tools/TaskManager.kt
+1
-1
No files found.
app/src/main/java/com/duolebo/blyrobot/MainActivity.kt
View file @
25f6fdc3
...
...
@@ -5,20 +5,47 @@ import android.os.Bundle
import
android.support.v4.content.LocalBroadcastManager
import
android.support.v7.app.AppCompatActivity
import
android.util.Log
import
android.view.View
import
android.view.ViewGroup
import
android.widget.BaseAdapter
import
android.widget.Toast
import
com.duolebo.appbase.AppBaseHandler
import
com.duolebo.appbase.IAppBaseCallback
import
com.duolebo.appbase.IProtocol
import
com.duolebo.blyrobot.data.ApkInfo
import
com.duolebo.blyrobot.data.AppInfoData
import
com.duolebo.blyrobot.data.Task
import
com.duolebo.blyrobot.protocol.GetAppInfoProtocol
import
com.duolebo.blyrobot.service.BylRobotService
import
com.duolebo.blyrobot.tools.TaskManager
import
com.duolebo.blyrobot.ui.AppConfigListItem
import
com.duolebo.blyrobot.util.AdbUtil
import
com.duolebo.blyrobot.util.Config
import
com.duolebo.blyrobot.util.Constants
import
kotlinx.android.synthetic.main.activity_main.*
import
java.util.*
class
MainActivity
:
AppCompatActivity
()
{
class
MainActivity
:
AppCompatActivity
()
,
IAppBaseCallback
{
private
val
TAG
=
"MainActivity"
private
lateinit
var
apkInfoProtocol
:
GetAppInfoProtocol
private
lateinit
var
dataHandler
:
AppBaseHandler
private
lateinit
var
appInfoAdapter
:
AppConfigAdapter
private
lateinit
var
refreshTimer
:
Timer
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
Log
.
i
(
TAG
,
"onCreate...."
)
setContentView
(
R
.
layout
.
activity_main
)
apkInfoProtocol
=
GetAppInfoProtocol
(
this
,
Config
.
instance
)
this
.
dataHandler
=
AppBaseHandler
(
this
)
this
.
appInfoAdapter
=
AppConfigAdapter
()
listView
.
adapter
=
this
.
appInfoAdapter
initRefreshTimer
()
val
hasRoot
=
AdbUtil
.
checkRootPermission
()
if
(
hasRoot
)
{
Log
.
i
(
TAG
,
"rooted..."
)
...
...
@@ -40,6 +67,22 @@ class MainActivity : AppCompatActivity() {
startBtn
.
requestFocus
()
}
private
fun
initRefreshTimer
()
{
refreshTimer
=
Timer
()
refreshTimer
.
schedule
(
object
:
TimerTask
()
{
override
fun
run
()
{
runOnUiThread
{
updateListStatus
()
}
}
},
2000
,
2
*
60
*
1000
)
}
private
fun
updateListStatus
()
{
}
private
fun
startRobotService
()
{
startService
(
Intent
(
this
,
BylRobotService
::
class
.
java
))
}
...
...
@@ -57,4 +100,59 @@ class MainActivity : AppCompatActivity() {
LocalBroadcastManager
.
getInstance
(
this
).
sendBroadcast
(
intent
)
}
override
fun
onProtocolFailed
(
protocol
:
IProtocol
?)
{
Toast
.
makeText
(
this
,
"获取应用列表信息出错"
,
Toast
.
LENGTH_SHORT
).
show
()
}
override
fun
onHttpFailed
(
protocol
:
IProtocol
?)
{
Toast
.
makeText
(
this
,
"网络错误"
,
Toast
.
LENGTH_SHORT
).
show
()
}
override
fun
onProtocolSucceed
(
protocol
:
IProtocol
?)
{
if
(
protocol
is
GetAppInfoProtocol
)
{
val
appInfoData
=
protocol
.
data
as
AppInfoData
this
.
appInfoAdapter
.
setData
(
appInfoData
.
apkInfos
)
this
.
appInfoAdapter
.
notifyDataSetChanged
()
for
(
apkInfo
in
appInfoData
.
apkInfos
)
{
val
task
=
Task
(
this
.
applicationContext
)
task
.
from
(
apkInfo
)
TaskManager
.
instance
.
add
(
task
)
}
}
}
class
AppConfigAdapter
:
BaseAdapter
()
{
private
val
dataList
=
ArrayList
<
ApkInfo
>()
fun
setData
(
dataList
:
ArrayList
<
ApkInfo
>)
{
this
.
dataList
.
clear
()
this
.
dataList
.
addAll
(
dataList
)
}
override
fun
getView
(
position
:
Int
,
convertView
:
View
?,
parent
:
ViewGroup
):
View
{
var
itemView
=
convertView
as
AppConfigListItem
if
(
convertView
==
null
)
{
itemView
=
AppConfigListItem
(
parent
.
context
)
}
itemView
.
setData
(
dataList
[
position
])
return
itemView
}
override
fun
getItem
(
position
:
Int
):
Any
{
return
dataList
[
position
]
}
override
fun
getItemId
(
position
:
Int
):
Long
{
return
0
}
override
fun
getCount
():
Int
{
return
dataList
.
size
}
}
}
app/src/main/java/com/duolebo/blyrobot/data/Task.kt
View file @
25f6fdc3
...
...
@@ -27,6 +27,14 @@ class Task : IAppBaseCallback {
private
val
TAG
=
"Task"
val
STATUS_MAP
=
mapOf
(
"0"
to
"未处理"
,
"1"
to
"进行中"
,
"2"
to
"中断"
,
"3"
to
"图片上传中"
,
"4"
to
"上报失败"
,
"5"
to
"处理完成"
)
lateinit
var
apkInfo
:
ApkInfo
// 截图存放路径
private
lateinit
var
imagePath
:
String
...
...
@@ -37,6 +45,7 @@ class Task : IAppBaseCallback {
private
var
uploadImages
=
ArrayList
<
String
>()
private
var
channelIndex
=
0
private
var
status
=
"0"
private
var
reportProtocol
:
ApkReportProtocol
private
var
dataHandler
:
AppBaseHandler
...
...
@@ -63,19 +72,26 @@ class Task : IAppBaseCallback {
}
fun
start
()
{
this
.
status
=
"1"
this
.
reportJson
=
JSONObject
()
// 启动应用
this
.
launchApp
()
// 频道轮询处理
this
.
processChannels
()
// 上传图片
this
.
uploadImage
()
// 上报服务器
this
.
report
()
try
{
this
.
processChannels
()
// 上传图片
this
.
uploadImage
()
this
.
status
=
"3"
}
catch
(
e
:
java
.
lang
.
Exception
)
{
this
.
status
=
"2"
e
.
printStackTrace
()
}
// 退出应用
AdbUtil
.
stopApp
(
this
.
apkInfo
.
packageName
)
}
private
fun
finish
(
result
:
Boolean
)
{
AdbUtil
.
stopApp
(
this
.
apkInfo
.
packageName
)
this
.
taskListener
?.
run
{
onComplete
(
result
)
}
...
...
@@ -286,14 +302,17 @@ class Task : IAppBaseCallback {
}
override
fun
onProtocolFailed
(
p0
:
IProtocol
?)
{
this
.
status
=
"4"
finish
(
false
)
}
override
fun
onHttpFailed
(
p0
:
IProtocol
?)
{
this
.
status
=
"4"
finish
(
false
)
}
override
fun
onProtocolSucceed
(
p0
:
IProtocol
?)
{
this
.
status
=
"5"
finish
(
true
)
}
...
...
app/src/main/java/com/duolebo/blyrobot/tools/TaskManager.kt
View file @
25f6fdc3
...
...
@@ -6,7 +6,7 @@ import kotlin.collections.ArrayList
class
TaskManager
{
private
val
TAG
=
"TaskManager"
private
val
tasks
=
ArrayList
<
Task
>()
val
tasks
=
ArrayList
<
Task
>()
private
var
isRunning
=
false
private
var
currentTask
:
Task
?=
null
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment