diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index 356aa17a..a9a32332 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c31f25f0..d8255366 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -164,7 +164,7 @@ dependencies { implementation(project(":anko")) implementation(fileTree(mapOf("dir" to "src/main/libs", "include" to arrayOf("*.aar")))) - "fcmImplementation"("com.google.firebase:firebase-messaging:23.2.1") + "fcmImplementation"("com.google.firebase:firebase-messaging:23.3.1") "fcmImplementation"("org.jetbrains.kotlinx:kotlinx-coroutines-play-services:${Vers.kotlinxCoroutinesVersion}") // implementation "org.conscrypt:conscrypt-android:$conscryptVersion" diff --git a/app/src/main/java/jp/juggler/subwaytooter/ActMediaViewer.kt b/app/src/main/java/jp/juggler/subwaytooter/ActMediaViewer.kt index f22b03a2..c04a17ed 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ActMediaViewer.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/ActMediaViewer.kt @@ -103,7 +103,12 @@ class ActMediaViewer : AppCompatActivity(), View.OnClickListener { intent.putExtra(EXTRA_DATA, encodeMediaList(list)) intent.putExtra(EXTRA_SHOW_DESCRIPTION, showDescription) activity.startActivity(intent) - activity.overridePendingTransition(R.anim.slide_from_bottom, android.R.anim.fade_out) + + activity.overrideActivityTransitionCompat( + TransitionOverrideType.Open, + R.anim.slide_from_bottom, + android.R.anim.fade_out, + ) } private fun checkMaxBitmapSize(): Int { @@ -114,7 +119,6 @@ class ActMediaViewer : AppCompatActivity(), View.OnClickListener { val px = 1.shl(bitsMid) val canCreate = try { val bitmap = Bitmap.createBitmap(px, px, Bitmap.Config.ARGB_8888) - ?: error("createBitmap returns null") bitmap.recycle() log.i("checkMaxBitmapSize: range=$bitsMin..$bitsMid..$bitsMax, px=${px}, canCreate=true") true @@ -303,8 +307,8 @@ class ActMediaViewer : AppCompatActivity(), View.OnClickListener { this.showDescription = intent.getBooleanExtra(EXTRA_SHOW_DESCRIPTION, showDescription) this.serviceType = ServiceType.values()[ - savedInstanceState?.int(EXTRA_SERVICE_TYPE) - ?: intent.int(EXTRA_SERVICE_TYPE) ?: 0 + savedInstanceState?.int(EXTRA_SERVICE_TYPE) + ?: intent.int(EXTRA_SERVICE_TYPE) ?: 0 ] this.mediaList = decodeMediaList( @@ -338,7 +342,11 @@ class ActMediaViewer : AppCompatActivity(), View.OnClickListener { override fun finish() { super.finish() - overridePendingTransition(R.anim.fade_in, R.anim.slide_to_bottom) + overrideActivityTransitionCompat( + TransitionOverrideType.Close, + R.anim.fade_in, + R.anim.slide_to_bottom, + ) } internal fun initUI() { @@ -593,7 +601,6 @@ class ActMediaViewer : AppCompatActivity(), View.OnClickListener { // 回転後の画像 val bitmap2 = try { Bitmap.createBitmap(dstSizeInt.x, dstSizeInt.y, Bitmap.Config.ARGB_8888) - ?: return Pair(bitmap1, "createBitmap returns null") } catch (ex: Throwable) { log.e(ex, "createBitmap failed.") return Pair(bitmap1, ex.withCaption("createBitmap failed.")) diff --git a/app/src/main/java/jp/juggler/subwaytooter/notification/CheckerWakeLocks.kt b/app/src/main/java/jp/juggler/subwaytooter/notification/CheckerWakeLocks.kt index 38b60408..8c271177 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/notification/CheckerWakeLocks.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/notification/CheckerWakeLocks.kt @@ -62,7 +62,13 @@ class CheckerWakeLocks(contextArg: Context) { ).apply { setReferenceCounted(false) } } private val wifiLock: WifiManager.WifiLock by lazy { - if (Build.VERSION.SDK_INT >= 29) { + if (Build.VERSION.SDK_INT >= 34) { + wifiManager.createWifiLock( + WifiManager.WIFI_MODE_FULL_LOW_LATENCY, + PollingChecker::class.java.name + ) + } else if (Build.VERSION.SDK_INT >= 29) { + @Suppress("DEPRECATION") wifiManager.createWifiLock( WifiManager.WIFI_MODE_FULL_HIGH_PERF, PollingChecker::class.java.name diff --git a/app/src/main/java/jp/juggler/subwaytooter/span/SvgEmojiSpan.kt b/app/src/main/java/jp/juggler/subwaytooter/span/SvgEmojiSpan.kt index 703ea4dd..336a679a 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/span/SvgEmojiSpan.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/span/SvgEmojiSpan.kt @@ -171,7 +171,7 @@ class SvgEmojiSpan internal constructor( else -> try { Bitmap.createBitmap(dstSizeInt, dstSizeInt, Bitmap.Config.ARGB_8888) - ?.also { renderBitmap(it, svg, dstSize) } + .also { renderBitmap(it, svg, dstSize) } } catch (ex: Throwable) { log.e(ex, "bitmap allocation failed.") null diff --git a/app/src/main/java/jp/juggler/subwaytooter/util/PermissionRequester.kt b/app/src/main/java/jp/juggler/subwaytooter/util/PermissionRequester.kt index 5eb777d1..a7d2dde4 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/util/PermissionRequester.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/util/PermissionRequester.kt @@ -113,9 +113,8 @@ class PermissionRequester( * 権限要求の結果を処理する * @param result 「パーミッション名」と「それが許可されているなら真」のマップ */ - override fun onActivityResult(result: Map?) { + override fun onActivityResult(result: Map) { try { - result ?: error("missing result.") val listNotGranted = result.entries.filter { !it.value }.map { it.key } if (listNotGranted.isEmpty()) { // すべて許可されている diff --git a/app/src/main/java/jp/juggler/subwaytooter/view/BlurhashView.kt b/app/src/main/java/jp/juggler/subwaytooter/view/BlurhashView.kt index c554018a..2880d2c8 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/view/BlurhashView.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/view/BlurhashView.kt @@ -218,7 +218,7 @@ class BlurhashView : AppCompatTextView { val viewH = height val b = blurhashBitmap - if (b != null && !b.isRecycled && blurhashDecodeOk) { + if (!b.isRecycled && blurhashDecodeOk) { rectSrc.set(0, 0, b.width, b.height) rectDst.set(0, 0, viewW, viewH) canvas.drawBitmap(b, rectSrc, rectDst, paint) diff --git a/base/build.gradle.kts b/base/build.gradle.kts index 4c21c021..72ac3130 100644 --- a/base/build.gradle.kts +++ b/base/build.gradle.kts @@ -70,7 +70,7 @@ dependencies { coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:${Vers.desugarLibVersion}") api("androidx.appcompat:appcompat:${Vers.appcompatVersion}") - api("androidx.browser:browser:1.6.0") + api("androidx.browser:browser:1.7.0") api("androidx.core:core-ktx:${Vers.coreKtxVersion}") api("androidx.drawerlayout:drawerlayout:1.2.0") api("androidx.emoji2:emoji2-bundled:${Vers.emoji2Version}") @@ -86,7 +86,7 @@ dependencies { api("androidx.lifecycle:lifecycle-service:${Vers.lifecycleVersion}") api("androidx.lifecycle:lifecycle-viewmodel-ktx:${Vers.lifecycleVersion}") api("androidx.lifecycle:lifecycle-viewmodel-savedstate:${Vers.lifecycleVersion}") - api("androidx.recyclerview:recyclerview:1.3.1") + api("androidx.recyclerview:recyclerview:1.3.2") api("androidx.startup:startup-runtime:${Vers.startupVersion}") api("androidx.work:work-runtime-ktx:${Vers.workVersion}") api("androidx.work:work-runtime:${Vers.workVersion}") diff --git a/base/src/main/java/jp/juggler/util/Compat.kt b/base/src/main/java/jp/juggler/util/Compat.kt index cf6f59a3..0e1a2d89 100644 --- a/base/src/main/java/jp/juggler/util/Compat.kt +++ b/base/src/main/java/jp/juggler/util/Compat.kt @@ -12,6 +12,7 @@ import android.net.Uri import android.os.Build import android.os.Bundle import androidx.activity.OnBackPressedCallback +import androidx.annotation.AnimRes import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat @@ -109,7 +110,6 @@ fun PackageManager.getPackageInfoCompat( ): PackageInfo? = if (Build.VERSION.SDK_INT >= 33) { getPackageInfo(pakageName, PackageInfoFlags.of(flags.toLong())) } else { - @Suppress("DEPRECATION") getPackageInfo(pakageName, flags) } @@ -120,7 +120,6 @@ fun PackageManager.queryIntentActivitiesCompat( ): List = if (Build.VERSION.SDK_INT >= 33) { queryIntentActivities(intent, ResolveInfoFlags.of(queryFlag.toLong())) } else { - @Suppress("DEPRECATION") queryIntentActivities(intent, queryFlag) } @@ -130,7 +129,6 @@ fun PackageManager.resolveActivityCompat( ): ResolveInfo? = if (Build.VERSION.SDK_INT >= 33) { resolveActivity(intent, ResolveInfoFlags.of(queryFlag.toLong())) } else { - @Suppress("DEPRECATION") resolveActivity(intent, queryFlag) } @@ -144,6 +142,37 @@ fun AppCompatActivity.backPressed(block: () -> Unit) { inline fun systemService(context: Context): T? = /* ContextCompat. */ ContextCompat.getSystemService(context, T::class.java) +enum class TransitionOverrideType { Open, Close, } + +/** + * + * @param overrideType one of OVERRIDE_TRANSITION_OPEN, OVERRIDE_TRANSITION_CLOSE . + */ +fun AppCompatActivity.overrideActivityTransitionCompat( + overrideType: TransitionOverrideType, + @AnimRes animEnter: Int, + @AnimRes animExit: Int, +) { + if (Build.VERSION.SDK_INT >= 34) { + overrideActivityTransition( + when (overrideType) { + TransitionOverrideType.Open -> + AppCompatActivity.OVERRIDE_TRANSITION_OPEN + + TransitionOverrideType.Close -> + AppCompatActivity.OVERRIDE_TRANSITION_CLOSE + }, + animEnter, + animExit + ) + } else { + overridePendingTransition( + animEnter, + animExit, + ) + } +} + // //object Utils { // diff --git a/build.gradle.kts b/build.gradle.kts index 2775572a..6ae7cdc1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ buildscript { classpath("com.android.tools.build:gradle:${Vers.androidGradlePruginVersion}") // room のバージョンの影響で google-services を上げられない場合がある - classpath("com.google.gms:google-services:4.3.15") + classpath("com.google.gms:google-services:4.4.0") //noinspection DifferentKotlinGradleVersion classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Vers.kotlinVersion}") diff --git a/buildSrc/src/main/java/Vers.kt b/buildSrc/src/main/java/Vers.kt index de3844b3..2ecc73cd 100644 --- a/buildSrc/src/main/java/Vers.kt +++ b/buildSrc/src/main/java/Vers.kt @@ -4,7 +4,7 @@ object Vers { val javaSourceCompatibility = JavaVersion.VERSION_1_8 val javaTargetCompatibility = JavaVersion.VERSION_1_8 - const val androidGradlePruginVersion = "8.1.1" + const val androidGradlePruginVersion = "8.1.4" const val androidxAnnotationVersion = "1.6.0" const val androidxTestEspressoCoreVersion = "3.5.1" const val androidxTestExtJunitVersion = "1.1.5" @@ -21,16 +21,16 @@ object Vers { const val emoji2Version = "1.4.0" const val glideVersion = "4.15.1" const val junitVersion = "4.13.2" - const val koinVersion = "3.4.2" + const val koinVersion = "3.5.0" const val kotlinJvmTarget = "1.8" const val kotlinJvmToolchain = 17 const val kotlinTestVersion = "1.9.0" - const val kotlinVersion = "1.9.0" - const val kotlinxCoroutinesVersion = "1.7.2" - const val kspVersion = "1.9.0-1.0.11" - const val lifecycleVersion = "2.6.1" - const val materialVersion = "1.9.0" - const val media3Version = "1.1.1" + const val kotlinVersion = "1.9.20" + const val kotlinxCoroutinesVersion = "1.7.3" + const val kspVersion = "1.9.20-1.0.14" + const val lifecycleVersion = "2.6.2" + const val materialVersion = "1.10.0" + const val media3Version = "1.2.0" const val okhttpVersion = "5.0.0-alpha.11" const val preferenceKtxVersion = "1.2.1" const val stBuildToolsVersion = "34.0.0" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e9b4aafd..e9783a0b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Mon Jun 13 20:53:58 JST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME