diff --git a/app/build.gradle b/app/build.gradle index 6df60a32f..5238223fa 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -188,7 +188,7 @@ dependencies { implementation('com.github.gedoor:rhino-android:1.6') //网络 - implementation('com.squareup.okhttp3:okhttp:4.9.2') + implementation('com.squareup.okhttp3:okhttp:4.9.3') implementation(fileTree(dir: 'cronetlib', include: ['*.jar', '*.aar'])) //Glide diff --git a/app/cronetlib/cronet_api.jar b/app/cronetlib/cronet_api.jar index 07788bf33..6343c5224 100644 Binary files a/app/cronetlib/cronet_api.jar and b/app/cronetlib/cronet_api.jar differ diff --git a/app/cronetlib/cronet_impl_common_java.jar b/app/cronetlib/cronet_impl_common_java.jar index 9239b90fc..4cdf36014 100644 Binary files a/app/cronetlib/cronet_impl_common_java.jar and b/app/cronetlib/cronet_impl_common_java.jar differ diff --git a/app/cronetlib/cronet_impl_native_java.jar b/app/cronetlib/cronet_impl_native_java.jar index d679be20e..aecbf6d77 100644 Binary files a/app/cronetlib/cronet_impl_native_java.jar and b/app/cronetlib/cronet_impl_native_java.jar differ diff --git a/app/src/main/assets/cronet.json b/app/src/main/assets/cronet.json index 095a97d61..bb31c0cd2 100644 --- a/app/src/main/assets/cronet.json +++ b/app/src/main/assets/cronet.json @@ -1 +1 @@ -{"arm64-v8a":"9717593e18b283ac23a0be548c5aeea6","armeabi-v7a":"44c83d10c4a32ff20466bd7ef363c264","x86":"ce4ad637ead52aa3761e4ce3083f6453","x86_64":"a9924d9d2a31510d7335f6c6af32abc0","version":"93.0.4577.82"} \ No newline at end of file +{"arm64-v8a":"690c212d9bbad4b09b9e1ba450b273bb","armeabi-v7a":"4dbb88e5229abef7d84138218772f872","x86":"3f2421e040147da48abb07cfc6c7c87e","x86_64":"730a71ef4f03a27d1c8c8a77e7d09ff5","version":"96.0.4664.104"} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/help/exoplayer/ExoPlayerHelper.kt b/app/src/main/java/io/legado/app/help/exoplayer/ExoPlayerHelper.kt index 98b07344a..fe684de62 100644 --- a/app/src/main/java/io/legado/app/help/exoplayer/ExoPlayerHelper.kt +++ b/app/src/main/java/io/legado/app/help/exoplayer/ExoPlayerHelper.kt @@ -2,7 +2,7 @@ package io.legado.app.help.exoplayer import android.net.Uri import com.google.android.exoplayer2.MediaItem -import com.google.android.exoplayer2.database.ExoDatabaseProvider +import com.google.android.exoplayer2.database.StandaloneDatabaseProvider import com.google.android.exoplayer2.ext.okhttp.OkHttpDataSource import com.google.android.exoplayer2.source.MediaSource import com.google.android.exoplayer2.source.ProgressiveMediaSource @@ -49,7 +49,7 @@ object ExoPlayerHelper { * Exoplayer 内置的缓存 */ private val cache: Cache by lazy { - val databaseProvider = ExoDatabaseProvider(appCtx) + val databaseProvider = StandaloneDatabaseProvider(appCtx) return@lazy SimpleCache( //Exoplayer的缓存路径 File(appCtx.externalCacheDir, "exoplayer"), diff --git a/app/src/main/java/io/legado/app/help/http/cronet/CronetRequestCallback.kt b/app/src/main/java/io/legado/app/help/http/cronet/CronetRequestCallback.kt index fbc037d7c..30807dafc 100644 --- a/app/src/main/java/io/legado/app/help/http/cronet/CronetRequestCallback.kt +++ b/app/src/main/java/io/legado/app/help/http/cronet/CronetRequestCallback.kt @@ -157,8 +157,6 @@ class CronetRequestCallback @JvmOverloads internal constructor( private fun protocolFromNegotiatedProtocol(responseInfo: UrlResponseInfo): Protocol { val negotiatedProtocol = responseInfo.negotiatedProtocol.lowercase(Locale.getDefault()) -// Log.e("Cronet", responseInfo.url) -// Log.e("Cronet", negotiatedProtocol) return when { negotiatedProtocol.contains("h3") -> { return Protocol.QUIC 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 e74cd7b38..a6fdcbb97 100644 --- a/app/src/main/java/io/legado/app/service/AudioPlayService.kt +++ b/app/src/main/java/io/legado/app/service/AudioPlayService.kt @@ -13,9 +13,9 @@ import android.support.v4.media.session.MediaSessionCompat import android.support.v4.media.session.PlaybackStateCompat import androidx.core.app.NotificationCompat import androidx.media.AudioFocusRequestCompat +import com.google.android.exoplayer2.ExoPlayer import com.google.android.exoplayer2.PlaybackException import com.google.android.exoplayer2.Player -import com.google.android.exoplayer2.SimpleExoPlayer import io.legado.app.R import io.legado.app.base.BaseService import io.legado.app.constant.* @@ -56,8 +56,8 @@ class AudioPlayService : BaseService(), private val mFocusRequest: AudioFocusRequestCompat by lazy { MediaHelp.getFocusRequest(this) } - private val exoPlayer: SimpleExoPlayer by lazy { - SimpleExoPlayer.Builder(this).build() + private val exoPlayer: ExoPlayer by lazy { + ExoPlayer.Builder(this).build() } private var title: String = "" private var subtitle: String = "" diff --git a/epublib/build.gradle b/epublib/build.gradle index 27330e83e..44439e495 100644 --- a/epublib/build.gradle +++ b/epublib/build.gradle @@ -3,12 +3,12 @@ plugins { } android { - compileSdkVersion 30 - buildToolsVersion "30.0.3" + compileSdkVersion 31 + buildToolsVersion '31.0.0' defaultConfig { minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 31 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" @@ -29,5 +29,5 @@ android { } dependencies { - + implementation "androidx.annotation:annotation:1.3.0" } \ No newline at end of file diff --git a/epublib/src/main/java/me/ag2s/umdlib/domain/UmdBook.java b/epublib/src/main/java/me/ag2s/umdlib/domain/UmdBook.java index 14f1f895d..bdb5c294a 100644 --- a/epublib/src/main/java/me/ag2s/umdlib/domain/UmdBook.java +++ b/epublib/src/main/java/me/ag2s/umdlib/domain/UmdBook.java @@ -34,7 +34,7 @@ public class UmdBook { /** * Build the UMD file. - * @param os + * @param os OutputStream * @throws IOException */ public void buildUmd(OutputStream os) throws IOException { diff --git a/epublib/src/main/java/me/ag2s/umdlib/domain/UmdChapters.java b/epublib/src/main/java/me/ag2s/umdlib/domain/UmdChapters.java index 6508e3eb8..e0fb5691c 100644 --- a/epublib/src/main/java/me/ag2s/umdlib/domain/UmdChapters.java +++ b/epublib/src/main/java/me/ag2s/umdlib/domain/UmdChapters.java @@ -27,7 +27,7 @@ public class UmdChapters { return titles; } - private List titles = new ArrayList<>(); + private final List titles = new ArrayList<>(); public List contentLengths = new ArrayList<>(); public ByteArrayOutputStream contents = new ByteArrayOutputStream(); @@ -129,7 +129,7 @@ public class UmdChapters { while(startPos < allContents.length) { left = allContents.length - startPos; - len = DEFAULT_CHUNK_INIT_SIZE < left ? DEFAULT_CHUNK_INIT_SIZE : left; + len = Math.min(DEFAULT_CHUNK_INIT_SIZE, left); bos.reset(); DeflaterOutputStream zos = new DeflaterOutputStream(bos); diff --git a/epublib/src/main/java/me/ag2s/umdlib/domain/UmdHeader.java b/epublib/src/main/java/me/ag2s/umdlib/domain/UmdHeader.java index 389ea388f..7844646b2 100644 --- a/epublib/src/main/java/me/ag2s/umdlib/domain/UmdHeader.java +++ b/epublib/src/main/java/me/ag2s/umdlib/domain/UmdHeader.java @@ -1,6 +1,8 @@ package me.ag2s.umdlib.domain; +import androidx.annotation.NonNull; + import java.io.IOException; import me.ag2s.umdlib.tool.UmdUtils; @@ -146,6 +148,7 @@ public class UmdHeader { } @Override + @NonNull public String toString() { return "UmdHeader{" + "umdType=" + umdType + diff --git a/epublib/src/main/java/me/ag2s/umdlib/tool/StreamReader.java b/epublib/src/main/java/me/ag2s/umdlib/tool/StreamReader.java index 663e73f6b..ff9d9b845 100644 --- a/epublib/src/main/java/me/ag2s/umdlib/tool/StreamReader.java +++ b/epublib/src/main/java/me/ag2s/umdlib/tool/StreamReader.java @@ -1,6 +1,6 @@ package me.ag2s.umdlib.tool; -import java.io.FileInputStream; + import java.io.IOException; import java.io.InputStream; diff --git a/epublib/src/main/java/me/ag2s/umdlib/tool/UmdUtils.java b/epublib/src/main/java/me/ag2s/umdlib/tool/UmdUtils.java index 2fa804d58..695c619dd 100644 --- a/epublib/src/main/java/me/ag2s/umdlib/tool/UmdUtils.java +++ b/epublib/src/main/java/me/ag2s/umdlib/tool/UmdUtils.java @@ -117,19 +117,15 @@ public class UmdUtils { public static void saveFile(File f, byte[] content) throws IOException { - FileOutputStream fos = new FileOutputStream(f); - try { + try (FileOutputStream fos = new FileOutputStream(f)) { BufferedOutputStream bos = new BufferedOutputStream(fos); bos.write(content); bos.flush(); - } finally { - fos.close(); } } public static byte[] readFile(File f) throws IOException { - FileInputStream fis = new FileInputStream(f); - try { + try (FileInputStream fis = new FileInputStream(f)) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); BufferedInputStream bis = new BufferedInputStream(fis); int ch; @@ -138,12 +134,10 @@ public class UmdUtils { } baos.flush(); return baos.toByteArray(); - } finally { - fis.close(); } } - private static Random random = new Random(); + private static final Random random = new Random(); public static byte[] genRandomBytes(int len) { if (len <= 0) { diff --git a/epublib/src/main/java/me/ag2s/umdlib/tool/WrapOutputStream.java b/epublib/src/main/java/me/ag2s/umdlib/tool/WrapOutputStream.java index 80ec1982e..bac69ec29 100644 --- a/epublib/src/main/java/me/ag2s/umdlib/tool/WrapOutputStream.java +++ b/epublib/src/main/java/me/ag2s/umdlib/tool/WrapOutputStream.java @@ -5,7 +5,7 @@ import java.io.OutputStream; public class WrapOutputStream extends OutputStream { - private OutputStream os; + private final OutputStream os; private int written; public WrapOutputStream(OutputStream os) { diff --git a/epublib/src/main/java/me/ag2s/umdlib/umd/UmdReader.java b/epublib/src/main/java/me/ag2s/umdlib/umd/UmdReader.java index 804973905..3a65da96f 100644 --- a/epublib/src/main/java/me/ag2s/umdlib/umd/UmdReader.java +++ b/epublib/src/main/java/me/ag2s/umdlib/umd/UmdReader.java @@ -1,5 +1,8 @@ package me.ag2s.umdlib.umd; + +import androidx.annotation.NonNull; + import java.io.IOException; import java.io.InputStream; @@ -46,7 +49,7 @@ public class UmdReader { System.out.println("块标识:" + segType); //short length1 = reader.readByte(); - ReadSection(segType, segFlag, len, reader, umdHeader); + readSection(segType, segFlag, len, reader, umdHeader); if ((int) segType == 241 || (int) segType == 10) { segType = num1; @@ -56,7 +59,7 @@ public class UmdReader { System.out.println(ch); int additionalCheckNumber = reader.readIntLe(); int length2 = (reader.readIntLe() - 9); - ReadAdditionalSection(segType, additionalCheckNumber, length2, reader); + readAdditionalSection(segType, additionalCheckNumber, length2, reader); } num1 = segType; @@ -66,7 +69,7 @@ public class UmdReader { } - private void ReadAdditionalSection(short segType, int additionalCheckNumber, int length, StreamReader reader) throws Exception { + private void readAdditionalSection(short segType, int additionalCheckNumber, int length, StreamReader reader) throws Exception { switch (segType) { case 14: //this._TotalImageList.Add((object) Image.FromStream((Stream) new MemoryStream(reader.ReadBytes((int) length)))); @@ -118,7 +121,7 @@ public class UmdReader { } } - public void ReadSection(short segType, byte segFlag, short length, StreamReader reader, UmdHeader header) throws IOException { + public void readSection(short segType, byte segFlag, short length, StreamReader reader, UmdHeader header) throws IOException { switch (segType) { case 1://umd文件头 DCTS_CMD_ID_VERSION header.setUmdType(reader.readByte()); @@ -214,6 +217,7 @@ public class UmdReader { @Override + @NonNull public String toString() { return "UmdReader{" + "book=" + book + diff --git a/gradle.properties b/gradle.properties index fe3fbf2f6..808c2c997 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,4 +22,4 @@ kotlin.code.style=official android.enableResourceOptimizations=true -CronetVersion=93.0.4577.82 +CronetVersion=96.0.4664.104