package com.duolebo.blyrobot.service import android.annotation.SuppressLint import android.app.Service import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter import android.os.IBinder import android.support.v4.content.LocalBroadcastManager import android.util.Log import com.duolebo.blyrobot.data.ApkInfo import com.duolebo.blyrobot.data.Task import com.duolebo.blyrobot.tools.TaskManager import com.duolebo.blyrobot.util.AdbUtil import com.duolebo.blyrobot.util.AppUtil import com.duolebo.blyrobot.util.Constants import org.json.JSONObject import java.util.* @SuppressLint("Registered") class BylRobotService: Service() { private val TAG = "BylRobotService" private var timer: Timer? = null private var count = 0 private val broadcastReceiver = object : BroadcastReceiver() { override fun onReceive(p0: Context?, intent: Intent?) { if (intent != null) { val cmd = intent.getStringExtra(Constants.KEY_CMD) when (cmd) { Constants.CMD_START -> loadTask() Constants.CMD_STOP -> stopTask() } } } } override fun onCreate() { super.onCreate() initBroadcast() timer = Timer() timer!!.schedule(object: TimerTask() { override fun run() { // testKey() // testCapture() // screenShot() count++ if (count > 2) { cancelTimer() // proc?.destroy() } } },2000, 180*1000) } private fun initBroadcast() { Log.i(TAG, "initBroadcast...") val intentFilter = IntentFilter(Constants.ACTION_LOCAL_SERVICE) LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, intentFilter) } private fun loadTask() { Log.i(TAG, "loadTask...") val task = Task(this) val apkInfo = ApkInfo() val apkJson = JSONObject(AppUtil.readFromAssert(this, "test.json")) apkInfo.from(apkJson) task.from(apkInfo) TaskManager.instance.add(task) TaskManager.instance.start() } private fun stopTask() { TaskManager.instance.stop() } private fun testKey() { Thread(Runnable { AdbUtil.sendMultiKey("down/up/right") }).start() } var proc: Process ?= null private fun testCapture() { proc?.destroy() Thread(Runnable { AdbUtil.killTcpdump() }).start() Thread.sleep(3000) Thread(Runnable { proc = AdbUtil.tcpCapture("") }).start() } private fun cancelTimer() { timer?.cancel() timer = null } override fun onBind(p0: Intent?): IBinder { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } override fun onDestroy() { Log.i(TAG, "destroy...") super.onDestroy() LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver) cancelTimer() } }