diff --git a/app/src/main/java/io/legado/app/App.kt b/app/src/main/java/io/legado/app/App.kt index 87de7cc33..c21437313 100644 --- a/app/src/main/java/io/legado/app/App.kt +++ b/app/src/main/java/io/legado/app/App.kt @@ -17,6 +17,7 @@ import io.legado.app.help.LifecycleHelp import io.legado.app.help.ThemeConfig.applyDayNight import io.legado.app.help.http.cronet.CronetLoader import io.legado.app.utils.defaultSharedPreferences +import splitties.systemservices.notificationManager import timber.log.Timber class App : MultiDexApplication() { @@ -55,40 +56,44 @@ class App : MultiDexApplication() { */ private fun createNotificationChannels() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) return - (getSystemService(Context.NOTIFICATION_SERVICE) as? NotificationManager)?.let { - val downloadChannel = NotificationChannel( - channelIdDownload, - getString(R.string.action_download), - NotificationManager.IMPORTANCE_DEFAULT - ).apply { - enableLights(false) - enableVibration(false) - setSound(null, null) - } - - val readAloudChannel = NotificationChannel( - channelIdReadAloud, - getString(R.string.read_aloud), - NotificationManager.IMPORTANCE_DEFAULT - ).apply { - enableLights(false) - enableVibration(false) - setSound(null, null) - } + val downloadChannel = NotificationChannel( + channelIdDownload, + getString(R.string.action_download), + NotificationManager.IMPORTANCE_DEFAULT + ).apply { + enableLights(false) + enableVibration(false) + setSound(null, null) + } - val webChannel = NotificationChannel( - channelIdWeb, - getString(R.string.web_service), - NotificationManager.IMPORTANCE_DEFAULT - ).apply { - enableLights(false) - enableVibration(false) - setSound(null, null) - } + val readAloudChannel = NotificationChannel( + channelIdReadAloud, + getString(R.string.read_aloud), + NotificationManager.IMPORTANCE_DEFAULT + ).apply { + enableLights(false) + enableVibration(false) + setSound(null, null) + } - //向notification manager 提交channel - it.createNotificationChannels(listOf(downloadChannel, readAloudChannel, webChannel)) + val webChannel = NotificationChannel( + channelIdWeb, + getString(R.string.web_service), + NotificationManager.IMPORTANCE_DEFAULT + ).apply { + enableLights(false) + enableVibration(false) + setSound(null, null) } + + //向notification manager 提交channel + notificationManager.createNotificationChannels( + listOf( + downloadChannel, + readAloudChannel, + webChannel + ) + ) } } diff --git a/app/src/main/java/io/legado/app/service/AudioPlayService.kt b/app/src/main/java/io/legado/app/service/AudioPlayService.kt index a6fdcbb97..7bfdc0727 100644 --- a/app/src/main/java/io/legado/app/service/AudioPlayService.kt +++ b/app/src/main/java/io/legado/app/service/AudioPlayService.kt @@ -32,6 +32,7 @@ import io.legado.app.ui.book.audio.AudioPlayActivity import io.legado.app.utils.* import kotlinx.coroutines.* import kotlinx.coroutines.Dispatchers.Main +import splitties.systemservices.audioManager import timber.log.Timber @@ -50,9 +51,6 @@ class AudioPlayService : BaseService(), private set } - private val audioManager: AudioManager by lazy { - getSystemService(Context.AUDIO_SERVICE) as AudioManager - } private val mFocusRequest: AudioFocusRequestCompat by lazy { MediaHelp.getFocusRequest(this) } diff --git a/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt b/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt index 81a2235b5..29dbefd83 100644 --- a/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt +++ b/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt @@ -27,6 +27,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.isActive import kotlinx.coroutines.launch +import splitties.systemservices.audioManager abstract class BaseReadAloudService : BaseService(), AudioManager.OnAudioFocusChangeListener { @@ -44,9 +45,6 @@ abstract class BaseReadAloudService : BaseService(), } } - private val audioManager: AudioManager by lazy { - getSystemService(Context.AUDIO_SERVICE) as AudioManager - } private val mFocusRequest: AudioFocusRequestCompat by lazy { MediaHelp.getFocusRequest(this) } diff --git a/app/src/main/java/io/legado/app/utils/ContextExtensions.kt b/app/src/main/java/io/legado/app/utils/ContextExtensions.kt index 8c0ad814c..f3cbc39a6 100644 --- a/app/src/main/java/io/legado/app/utils/ContextExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/ContextExtensions.kt @@ -28,6 +28,7 @@ import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel import io.legado.app.R import io.legado.app.constant.AppConst import io.legado.app.help.IntentHelp +import splitties.systemservices.clipboardManager import timber.log.Timber import java.io.File import java.io.FileOutputStream @@ -252,18 +253,13 @@ fun Context.shareWithQr( } fun Context.sendToClip(text: String) { - val clipboard = - getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager val clipData = ClipData.newPlainText(null, text) - clipboard?.let { - clipboard.setPrimaryClip(clipData) - longToastOnUi(R.string.copy_complete) - } + clipboardManager.setPrimaryClip(clipData) + longToastOnUi(R.string.copy_complete) } fun Context.getClipText(): String? { - val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager? - clipboard?.primaryClip?.let { + clipboardManager.primaryClip?.let { if (it.itemCount > 0) { return it.getItemAt(0).text.toString().trim() } diff --git a/app/src/main/java/io/legado/app/utils/SystemUtils.kt b/app/src/main/java/io/legado/app/utils/SystemUtils.kt index 1b6df2df6..8d077201f 100644 --- a/app/src/main/java/io/legado/app/utils/SystemUtils.kt +++ b/app/src/main/java/io/legado/app/utils/SystemUtils.kt @@ -2,11 +2,10 @@ package io.legado.app.utils import android.annotation.SuppressLint import android.app.Activity -import android.content.Context.POWER_SERVICE import android.content.Intent import android.net.Uri -import android.os.PowerManager import android.provider.Settings +import splitties.systemservices.powerManager @Suppress("unused") @@ -15,7 +14,6 @@ object SystemUtils { fun ignoreBatteryOptimization(activity: Activity) { if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.M) return - val powerManager = activity.getSystemService(POWER_SERVICE) as PowerManager val hasIgnored = powerManager.isIgnoringBatteryOptimizations(activity.packageName) // 判断当前APP是否有加入电池优化的白名单,如果没有,弹出加入电池优化的白名单的设置对话框。 if (!hasIgnored) { diff --git a/app/src/main/java/io/legado/app/utils/ViewExtensions.kt b/app/src/main/java/io/legado/app/utils/ViewExtensions.kt index 05f96defe..21e0030ee 100644 --- a/app/src/main/java/io/legado/app/utils/ViewExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/ViewExtensions.kt @@ -10,7 +10,6 @@ import android.os.Build import android.text.Html import android.view.View import android.view.View.* -import android.view.inputmethod.InputMethodManager import android.widget.* import androidx.annotation.ColorInt import androidx.appcompat.app.AppCompatActivity @@ -21,7 +20,7 @@ import androidx.recyclerview.widget.RecyclerView import androidx.viewpager.widget.ViewPager import io.legado.app.help.AppConfig import io.legado.app.lib.theme.TintHelper -import splitties.init.appCtx +import splitties.systemservices.inputMethodManager import timber.log.Timber import java.lang.reflect.Field @@ -39,8 +38,7 @@ val View.activity: AppCompatActivity? get() = getCompatActivity(context) fun View.hideSoftInput() = run { - val imm = appCtx.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager - imm?.hideSoftInputFromWindow(this.windowToken, 0) + inputMethodManager.hideSoftInputFromWindow(this.windowToken, 0) } fun View.disableAutoFill() = run {