Skip to content

Commit

Permalink
Merge pull request #243 from GuoXiCheng/dev-c
Browse files Browse the repository at this point in the history
add SyncWorker
  • Loading branch information
GuoXiCheng authored Sep 20, 2024
2 parents f23e737 + a4aa20b commit 4b974df
Show file tree
Hide file tree
Showing 10 changed files with 82 additions and 10 deletions.
5 changes: 5 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ android {
}

dependencies {
implementation(libs.androidx.work.runtime.ktx)
implementation(libs.androidx.work.runtime)
implementation(libs.converter.scalars)
implementation(libs.retrofit2.converter.gson)
implementation(libs.retrofit)
Expand All @@ -65,7 +67,10 @@ dependencies {
implementation(libs.androidx.runtime.livedata)
implementation(libs.androidx.datastore.core.android)
implementation(libs.androidx.datastore.preferences)
implementation(libs.androidx.hilt.common)
implementation(libs.androidx.hilt.work)
kapt(libs.hilt.android.compiler)
kapt(libs.androidx.hilt.compiler)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,11 @@
android:resource="@xml/file_paths" />
</provider>

<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />

<activity
android:name=".ui.record.InspectRecordActivity"
android:exported="false" />
Expand Down
7 changes: 6 additions & 1 deletion app/src/main/assets/skip_config_v3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -139,4 +139,9 @@
packageName: com.luna.music
skipBounds:
- bound: 1244,176,1384,316
fileUrl: ab69a19e-56e8-4983-9656-cdbab1b09682&nodeId=13
fileUrl: ab69a19e-56e8-4983-9656-cdbab1b09682&nodeId=13

- appName: 爱奇艺
packageName: com.qiyi.video
skipTexts:
- text: 关闭
13 changes: 12 additions & 1 deletion app/src/main/java/com/android/skip/MyApp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,19 @@ package com.android.skip
import android.annotation.SuppressLint
import android.app.Application
import android.content.Context
import androidx.hilt.work.HiltWorkerFactory
import androidx.work.Configuration
import com.android.skip.util.DataStoreUtils
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.Utils
import dagger.hilt.android.HiltAndroidApp
import javax.inject.Inject

@HiltAndroidApp
class MyApp : Application() {
class MyApp : Application(), Configuration.Provider {
@Inject
lateinit var workerFactory: HiltWorkerFactory

override fun onCreate() {
super.onCreate()
context = this
Expand All @@ -35,4 +41,9 @@ class MyApp : Application() {
@SuppressLint("StaticFieldLeak")
lateinit var context: Context
}

override fun getWorkManagerConfiguration() =
Configuration.Builder()
.setWorkerFactory(workerFactory)
.build()
}
29 changes: 29 additions & 0 deletions app/src/main/java/com/android/skip/data/SyncWorker.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.android.skip.data

import android.content.Context
import androidx.hilt.work.HiltWorker
import androidx.work.WorkerParameters
import androidx.work.CoroutineWorker
import com.android.skip.data.config.ConfigReadRepository
import com.blankj.utilcode.util.LogUtils
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject

@HiltWorker
class SyncWorker@AssistedInject constructor(
@Assisted context: Context,
@Assisted workerParams: WorkerParameters,
private val configReadRepository: ConfigReadRepository
) : CoroutineWorker(context, workerParams) {
override suspend fun doWork(): Result {
return try {
LogUtils.d("SyncWorker doWork")
val configPostSchema = configReadRepository.readConfig()
configReadRepository.changeConfigPostState(configPostSchema)
Result.success()
} catch (e: Exception) {
LogUtils.e(e)
Result.failure()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class ConfigViewModel @Inject constructor(
}
}

fun changeConfigHashCode(configPostSchema: ConfigPostSchema) =
fun changeConfigPostState(configPostSchema: ConfigPostSchema) =
configReadRepository.changeConfigPostState(configPostSchema)

override fun onCleared() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,10 @@ class MyAccessibilityService : AccessibilityService() {
private var appPackageName: String? = null
private var isShowTip: Boolean = false
private var isStrict: Boolean = false
private var scanTimes: Int = 0

private val clickedRect: MutableSet<String> = mutableSetOf()
private val serviceScope = CoroutineScope(Dispatchers.Main + Job())
private val serviceScope = CoroutineScope(Dispatchers.Default + Job())

@Inject
lateinit var startAccessibilityRepository: StartAccessibilityRepository
Expand Down Expand Up @@ -84,11 +85,12 @@ class MyAccessibilityService : AccessibilityService() {

val rootNodePackageName = rootNode.packageName.toString()
if (rootNodePackageName != appPackageName) {
scanTimes = 0
clickedRect.clear()
appPackageName = rootNodePackageName
}

if (!whiteListRepository.isAppInWhiteList(rootNodePackageName)) {
if (!whiteListRepository.isAppInWhiteList(rootNodePackageName) && scanTimes < 30) {
val that = this
serviceScope.launch {
val targetRect =
Expand All @@ -115,6 +117,7 @@ class MyAccessibilityService : AccessibilityService() {
}
}

scanTimes++
} catch (e: Exception) {
// LogUtils.e(e)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ fun ConfigVersionButton(configViewModel: ConfigViewModel) {
subTitle = configState.value?.value
)
}, onClick = {
configViewModel.changeConfigHashCode(
configViewModel.changeConfigPostState(
ConfigPostSchema(
ConfigState.PENDING,
getString(R.string.checking)
Expand Down
14 changes: 10 additions & 4 deletions app/src/main/java/com/android/skip/ui/main/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkManager
import com.android.skip.MyApp
import com.android.skip.R
import com.android.skip.data.config.ConfigViewModel
import com.android.skip.data.SyncWorker
import com.android.skip.ui.about.AboutActivity
import com.android.skip.ui.alive.AliveActivity
import com.android.skip.ui.components.FlatButton
Expand All @@ -34,13 +36,12 @@ import com.android.skip.ui.settings.SettingsActivity
import com.android.skip.ui.theme.AppTheme
import com.android.skip.ui.whitelist.WhiteListActivity
import dagger.hilt.android.AndroidEntryPoint
import java.util.concurrent.TimeUnit

@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
private val startAccessibilityViewModel by viewModels<StartAccessibilityViewModel>()

private val configViewModel by viewModels<ConfigViewModel>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Expand Down Expand Up @@ -75,7 +76,12 @@ class MainActivity : AppCompatActivity() {
}
}

configViewModel.readConfig()
val workRequest =
PeriodicWorkRequestBuilder<SyncWorker>(12, TimeUnit.HOURS).setInitialDelay(
5,
TimeUnit.SECONDS
).build()
WorkManager.getInstance(this).enqueue(workRequest)
}

override fun onResume() {
Expand Down
8 changes: 8 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,22 @@ ui = "1.6.8"
utilcodex = "1.31.1"
runtimeLivedata = "1.6.8"
datastoreCoreAndroid = "1.1.1"
workRuntime = "2.8.1"
hiltCommon = "1.2.0"
hiltWork = "1.2.0"


[libraries]
accompanist-drawablepainter = { module = "com.google.accompanist:accompanist-drawablepainter", version.ref = "accompanistDrawablepainter" }
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activityCompose" }
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastorePreferences" }
androidx-hilt-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "hiltCommon" }
androidx-paging-compose = { module = "androidx.paging:paging-compose", version.ref = "pagingRuntime" }
androidx-paging-runtime = { module = "androidx.paging:paging-runtime", version.ref = "pagingRuntime" }
androidx-ui = { module = "androidx.compose.ui:ui", version.ref = "ui" }
androidx-work-runtime = { module = "androidx.work:work-runtime", version.ref = "workRuntime" }
androidx-work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "workRuntime" }
converter-scalars = { module = "com.squareup.retrofit2:converter-scalars", version.ref = "converterScalars" }
gson = { module = "com.google.code.gson:gson", version.ref = "gson" }
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hiltAndroid" }
Expand All @@ -56,6 +62,8 @@ snakeyaml = { module = "org.yaml:snakeyaml", version.ref = "snakeyaml" }
utilcodex = { module = "com.blankj:utilcodex", version.ref = "utilcodex" }
androidx-runtime-livedata = { group = "androidx.compose.runtime", name = "runtime-livedata", version.ref = "runtimeLivedata" }
androidx-datastore-core-android = { group = "androidx.datastore", name = "datastore-core-android", version.ref = "datastoreCoreAndroid" }
androidx-hilt-common = { group = "androidx.hilt", name = "hilt-common", version.ref = "hiltCommon" }
androidx-hilt-work = { group = "androidx.hilt", name = "hilt-work", version.ref = "hiltWork" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
Expand Down

0 comments on commit 4b974df

Please sign in to comment.