104 lines
3.9 KiB
Kotlin
104 lines
3.9 KiB
Kotlin
|
package com.example.studyapp.job
|
||
|
|
||
|
import android.content.Context
|
||
|
import android.content.Intent
|
||
|
import android.os.Handler
|
||
|
import android.os.Looper
|
||
|
import android.util.Log
|
||
|
import androidx.core.app.JobIntentService
|
||
|
import com.example.studyapp.autoJS.AutoJsUtil
|
||
|
import com.example.studyapp.device.ChangeDeviceInfoUtil
|
||
|
import com.example.studyapp.device.LoadDeviceCallback
|
||
|
import com.example.studyapp.proxy.ClashUtil
|
||
|
import com.example.studyapp.task.TaskUtil
|
||
|
import com.example.studyapp.update.ChangeCallBack
|
||
|
import com.example.studyapp.update.UpdateUtil.changeDevice
|
||
|
import com.example.studyapp.utils.CountryCode
|
||
|
import com.example.studyapp.utils.IpUtil
|
||
|
import com.example.studyapp.utils.LogFileUtil
|
||
|
import org.json.JSONObject
|
||
|
import java.util.Locale
|
||
|
import java.util.UUID
|
||
|
|
||
|
class ScriptJobService : JobIntentService() {
|
||
|
|
||
|
override fun onHandleWork(intent: Intent) {
|
||
|
execute(callback = object : JobCallback {
|
||
|
override fun onJobFailed() {
|
||
|
Handler(Looper.getMainLooper()).postDelayed({
|
||
|
StartJobService.onEvent(applicationContext)
|
||
|
}, 1000 * 60 * 5)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
fun execute(callback: JobCallback) {
|
||
|
val taskId = UUID.randomUUID().toString()
|
||
|
runCatching {
|
||
|
ChangeDeviceInfoUtil.getAddDeviceInfo(
|
||
|
CountryCode.currentCountry.uppercase(Locale.getDefault()), CountryCode.DEVICE_TYPE,
|
||
|
object :LoadDeviceCallback {
|
||
|
override fun onLoadDeviceInfo(
|
||
|
bigoDevice: JSONObject?,
|
||
|
afDevice: JSONObject?
|
||
|
) {
|
||
|
ClashUtil.startProxy(applicationContext)
|
||
|
ClashUtil.switchProxyWithPort(CountryCode.switchCountry())
|
||
|
ClashUtil.switchProxyGroup("PROXY", "my-socks5-proxy", "http://127.0.0.1:6170")
|
||
|
changeDevice(packageName, bigoDevice, afDevice, object : ChangeCallBack {
|
||
|
override fun changeSuccess() {
|
||
|
runCatching {
|
||
|
AutoJsUtil.runAutojsScript(applicationContext)
|
||
|
TaskUtil.execSaveTask(
|
||
|
applicationContext,
|
||
|
androidId,
|
||
|
taskId,
|
||
|
name,
|
||
|
IpUtil.fetchGeoInfo()
|
||
|
)
|
||
|
TaskUtil.infoUpload(applicationContext, androidId, name)
|
||
|
}.onFailure {
|
||
|
callback.onJobFailed()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
override fun changeFailed() {
|
||
|
LogFileUtil.logAndWrite(
|
||
|
Log.ERROR,
|
||
|
TAG,
|
||
|
"Change device failed",
|
||
|
null
|
||
|
)
|
||
|
callback.onJobFailed()
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
override fun onLoadDeviceError(error: String?) {
|
||
|
callback.onJobFailed()
|
||
|
}
|
||
|
})
|
||
|
}.onFailure {
|
||
|
callback.onJobFailed()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
companion object {
|
||
|
private const val TAG = "ScriptJobService"
|
||
|
private const val jobId = 102
|
||
|
private const val androidId = "FyZqWrStUvOpKlMn"
|
||
|
|
||
|
private var name = ""
|
||
|
|
||
|
fun onEvent(context: Context, packageName: String) {
|
||
|
name = packageName
|
||
|
enqueueWork(
|
||
|
context,
|
||
|
ScriptJobService::class.java, jobId, Intent(
|
||
|
context,
|
||
|
ScriptJobService::class.java
|
||
|
)
|
||
|
)
|
||
|
}
|
||
|
}
|
||
|
}
|