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.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() } loadTask() } } } 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) task.from(JSONObject(AppUtil.readFromAssert(this, "test.json"))) TaskManager.instance.add(task) TaskManager.instance.start() } private fun stopTask() { TaskManager.instance.stop() } private fun screenShot() { Thread(Runnable { }).start() } 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() } }