Skip to content

Commit

Permalink
Merge pull request #246 from GuoXiCheng/dev-c
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
GuoXiCheng authored Sep 23, 2024
2 parents 0da773e + cd13f69 commit 50866d4
Show file tree
Hide file tree
Showing 17 changed files with 157 additions and 67 deletions.
28 changes: 9 additions & 19 deletions app/src/main/java/com/android/skip/data/config/ConfigViewModel.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.android.skip.data.config

import androidx.lifecycle.LiveData
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.android.skip.dataclass.ConfigPostSchema
Expand All @@ -17,31 +16,22 @@ class ConfigViewModel @Inject constructor(
) : ViewModel() {
var configPostState: LiveData<ConfigPostSchema> = configReadRepository.configPostState

private val observer = Observer<ConfigPostSchema> {
if (it.status == ConfigState.SUCCESS) {
val configMap = configReadRepository.handleConfig(it)
if (configMap != null) {
configLoadRepository.loadConfig(configMap)
}
}
}

init {
configReadRepository.configPostState.observeForever(observer)
}

fun readConfig() {
viewModelScope.launch {
val configPostSchema = configReadRepository.readConfig()
configReadRepository.changeConfigPostState(configPostSchema)
}
}

fun loadConfig(configPostSchema: ConfigPostSchema) {
if (configPostSchema.status == ConfigState.SUCCESS) {
val configMap = configReadRepository.handleConfig(configPostSchema)
if (configMap != null) {
configLoadRepository.loadConfig(configMap)
}
}
}

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

override fun onCleared() {
super.onCleared()
configReadRepository.configPostState.removeObserver(observer)
}
}
8 changes: 4 additions & 4 deletions app/src/main/java/com/android/skip/service/InspectService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import android.app.Service
import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.PixelFormat
import android.hardware.display.DisplayManager
import android.hardware.display.VirtualDisplay
Expand Down Expand Up @@ -65,9 +64,10 @@ class InspectService : Service() {
val intent = Intent(this, MainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE)
val notification = NotificationCompat.Builder(this, "INSPECT_SERVICE")
.setContentTitle("SKIP 布局检查服务运行中")
.setSmallIcon(R.drawable.info)
.setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.info))
.setContentTitle(getString(R.string.app_name))
.setContentText(getString(R.string.notification_accessibility_service_running))
.setSmallIcon(R.drawable.favicon32)
// .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.favicon32))
.setContentIntent(pendingIntent)
.setOngoing(true)
.build()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import android.app.PendingIntent
import android.app.Service
import android.content.Context
import android.content.Intent
import android.graphics.BitmapFactory
import android.os.IBinder
import androidx.core.app.NotificationCompat
import com.android.skip.R
Expand All @@ -31,9 +30,10 @@ class MyForegroundService : Service() {
val intent = Intent(this, MainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(this, 0 , intent, PendingIntent.FLAG_IMMUTABLE)
val notification = NotificationCompat.Builder(this, "SKIP_FOREGROUND_SERVICE")
.setContentTitle("SKIP 无障碍服务运行中")
.setSmallIcon(R.drawable.info)
.setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.info))
.setContentTitle(getString(R.string.app_name))
.setContentText(getString(R.string.notification_accessibility_service_running))
.setSmallIcon(R.drawable.favicon32)
// .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.favicon32))
.setContentIntent(pendingIntent)
.setOngoing(true)
.build()
Expand Down
28 changes: 19 additions & 9 deletions app/src/main/java/com/android/skip/ui/alive/AliveActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ import com.android.skip.ui.components.notification.NotificationDialogViewModel
import com.android.skip.ui.settings.theme.SwitchThemeViewModel
import com.android.skip.ui.theme.AppTheme
import com.android.skip.ui.webview.WebViewActivity
import com.android.skip.util.MyToast
import com.blankj.utilcode.util.RomUtils
import dagger.hilt.android.AndroidEntryPoint
import java.net.URLEncoder

Expand All @@ -51,17 +53,25 @@ class AliveActivity : AppCompatActivity() {
AppTheme(switchThemeViewModel) {
ScaffoldPage(R.string.alive, { finish() }, {
PowerSavingStrategyButton {
val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
intent.data = Uri.parse("package:${packageName}")
startActivity(intent)
if (RomUtils.isXiaomi()) {
val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
intent.data = Uri.parse("package:${packageName}")
startActivity(intent)
} else {
MyToast.show(R.string.alive_device_not_applicable)
}
}
SelfStartButton {
val intent = Intent()
intent.component = ComponentName(
"com.miui.securitycenter",
"com.miui.permcenter.autostart.AutoStartManagementActivity"
)
startActivity(intent)
if (RomUtils.isXiaomi()) {
val intent = Intent()
intent.component = ComponentName(
"com.miui.securitycenter",
"com.miui.permcenter.autostart.AutoStartManagementActivity"
)
startActivity(intent)
} else {
MyToast.show(R.string.alive_device_not_applicable)
}
}
BackstageButton(backstageViewModel) {
backstageViewModel.changeDialogState(true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.android.skip.ui.components

import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.heightIn
import androidx.compose.material3.ExtendedFloatingActionButton
import androidx.compose.material3.FloatingActionButtonDefaults
import androidx.compose.material3.MaterialTheme
Expand All @@ -18,7 +18,7 @@ fun FlatButton(content: ButtonContent, onClick: () -> Unit = {}) {
ExtendedFloatingActionButton(
modifier = Modifier
.fillMaxWidth()
.height(60.dp),
.heightIn(min=60.dp),
onClick = onClick,
content = content,
elevation = FloatingActionButtonDefaults.elevation(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import com.blankj.utilcode.util.ScreenUtils

@Composable
fun FlatButtonMenu(
Expand All @@ -27,7 +29,7 @@ fun FlatButtonMenu(
expanded = expanded.value,
modifier = Modifier
.background(MaterialTheme.colorScheme.background),
offset = DpOffset(130.dp, 0.dp),
offset = DpOffset(Dp(ScreenUtils.getScreenXDpi() / 3), (-30).dp),
onDismissRequest = { expanded.value = false },
) {
menuItems()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,20 @@ package com.android.skip.ui.components

import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.heightIn
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.window.Dialog
import com.android.skip.R
import com.blankj.utilcode.util.ScreenUtils

@Composable
fun PictureDialog(
Expand All @@ -24,7 +28,11 @@ fun PictureDialog(
Surface(shape = MaterialTheme.shapes.medium) {
Column(horizontalAlignment = Alignment.CenterHorizontally) {
if (painter != null) {
Image(painter = painter, contentDescription = null)
Image(
painter = painter,
contentDescription = null,
modifier = Modifier.heightIn(max = Dp(ScreenUtils.getScreenYDpi() * 2))
)
}
TextButton(onClick = onClick) {
Text(stringResource(id = R.string.dialog_close))
Expand Down
24 changes: 7 additions & 17 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,13 +19,9 @@ 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.Constraints
import androidx.work.NetworkType
import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkManager
import com.android.skip.MyApp
import com.android.skip.R
import com.android.skip.data.SyncWorker
import com.android.skip.data.config.ConfigViewModel
import com.android.skip.ui.about.AboutActivity
import com.android.skip.ui.alive.AliveActivity
import com.android.skip.ui.components.FlatButton
Expand All @@ -39,14 +35,15 @@ import com.android.skip.ui.settings.theme.SwitchThemeViewModel
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 switchThemeViewModel by viewModels<SwitchThemeViewModel>()

private val configViewModel by viewModels<ConfigViewModel>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Expand Down Expand Up @@ -81,17 +78,10 @@ class MainActivity : AppCompatActivity() {
}
}

val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()

val periodicWorkRequest =
PeriodicWorkRequestBuilder<SyncWorker>(12, TimeUnit.HOURS)
.setInitialDelay(5, TimeUnit.SECONDS)
.setConstraints(constraints)
.build()

WorkManager.getInstance(this).enqueue(periodicWorkRequest)
configViewModel.readConfig()
configViewModel.configPostState.observe(this) {
configViewModel.loadConfig(it)
}
}

override fun onResume() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.width
import androidx.compose.material3.ExtendedFloatingActionButton
import androidx.compose.material3.Icon
Expand All @@ -26,7 +26,7 @@ fun StartButton(startAccessibilityViewModel: StartAccessibilityViewModel, onClic
ExtendedFloatingActionButton(
modifier = Modifier
.fillMaxWidth()
.height(80.dp),
.heightIn(min=80.dp),
onClick = onClick,
content = {
Row(
Expand Down
44 changes: 36 additions & 8 deletions app/src/main/java/com/android/skip/ui/settings/SettingsActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.ui.res.stringResource
import androidx.core.app.NotificationManagerCompat
import androidx.work.ExistingPeriodicWorkPolicy
import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkManager
import com.android.skip.MyApp
import com.android.skip.R
import com.android.skip.data.SyncWorker
import com.android.skip.data.config.ConfigViewModel
import com.android.skip.ui.components.ScaffoldPage
import com.android.skip.ui.components.notification.NotificationDialog
Expand All @@ -29,9 +33,12 @@ import com.android.skip.ui.settings.theme.SwitchThemeButton
import com.android.skip.ui.settings.theme.SwitchThemeViewModel
import com.android.skip.ui.settings.tip.TipButton
import com.android.skip.ui.settings.tip.TipViewModel
import com.android.skip.ui.settings.update.AutoUpdateButton
import com.android.skip.ui.settings.update.AutoUpdateViewModel
import com.android.skip.ui.theme.AppTheme
import com.android.skip.ui.webview.WebViewActivity
import dagger.hilt.android.AndroidEntryPoint
import java.util.concurrent.TimeUnit

@AndroidEntryPoint
class SettingsActivity : AppCompatActivity() {
Expand All @@ -48,12 +55,15 @@ class SettingsActivity : AppCompatActivity() {

private val switchThemeViewModel by viewModels<SwitchThemeViewModel>()

private val autoUpdateViewModel by viewModels<AutoUpdateViewModel>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContent {
AppTheme(switchThemeViewModel) {
ScaffoldPage(R.string.settings, { finish() }, {
AutoUpdateButton(autoUpdateViewModel)
RecentButton(recentViewModel)
TipButton(tipViewModel)
StrictButton(strictViewModel)
Expand All @@ -73,11 +83,11 @@ class SettingsActivity : AppCompatActivity() {
leadingIcon = { Icon(Icons.Outlined.Info, contentDescription = null) },
text = { Text(stringResource(id = R.string.settings_function_intro)) },
onClick = {
val intent = Intent(MyApp.context, WebViewActivity::class.java).apply {
putExtra("url", R.string.settings_function_intro_url)
}
startActivity(intent)
})
val intent = Intent(MyApp.context, WebViewActivity::class.java).apply {
putExtra("url", R.string.settings_function_intro_url)
}
startActivity(intent)
})
})
}
}
Expand All @@ -88,13 +98,31 @@ class SettingsActivity : AppCompatActivity() {
}
}

recentViewModel.excludeFromRecent.observe(this) { exclude->
(getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager).let { manager->
manager.appTasks.forEach { task->
recentViewModel.excludeFromRecent.observe(this) { exclude ->
(getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager).let { manager ->
manager.appTasks.forEach { task ->
task?.setExcludeFromRecents(exclude)
}
}
}

val periodicWorkRequest =
PeriodicWorkRequestBuilder<SyncWorker>(15, TimeUnit.MINUTES)
.setInitialDelay(5, TimeUnit.SECONDS)
.build()
val workManager = WorkManager.getInstance(this)

autoUpdateViewModel.autoUpdate.observe(this) {
when (it) {
true -> workManager.enqueueUniquePeriodicWork(
getString(R.string.worker_sync),
ExistingPeriodicWorkPolicy.UPDATE,
periodicWorkRequest
)

false -> workManager.cancelUniqueWork(getString(R.string.worker_sync))
}
}
}

override fun onResume() {
Expand Down
Loading

0 comments on commit 50866d4

Please sign in to comment.