diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 82165bbbb..666613f3c 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -26,11 +26,12 @@
-
+
-
-
+
+
diff --git a/app/src/main/java/com/hippo/beerbelly/DiskLruCache.java b/app/src/main/java/com/hippo/beerbelly/DiskLruCache.java
index 8d1baec07..1d722273c 100644
--- a/app/src/main/java/com/hippo/beerbelly/DiskLruCache.java
+++ b/app/src/main/java/com/hippo/beerbelly/DiskLruCache.java
@@ -167,6 +167,7 @@ public final class DiskLruCache implements Closeable {
* its sequence number is not equal to its entry's sequence number.
*/
private long nextSequenceNumber = 0;
+
private DiskLruCache(File directory, int appVersion, int valueCount, long maxSize) {
this.directory = directory;
this.appVersion = appVersion;
@@ -175,21 +176,7 @@ public final class DiskLruCache implements Closeable {
this.journalFileBackup = new File(directory, JOURNAL_FILE_BACKUP);
this.valueCount = valueCount;
this.maxSize = maxSize;
- } private final Callable cleanupCallable = new Callable<>() {
- public Void call() throws Exception {
- synchronized (DiskLruCache.this) {
- if (journalWriter == null) {
- return null; // Closed.
- }
- trimToSize();
- if (journalRebuildRequired()) {
- rebuildJournal();
- redundantOpCount = 0;
- }
- }
- return null;
- }
- };
+ }
/**
* Opens the cache in {@code directory}, creating a cache if none exists
@@ -244,7 +231,21 @@ public final class DiskLruCache implements Closeable {
cache = new DiskLruCache(directory, appVersion, valueCount, maxSize);
cache.rebuildJournal();
return cache;
- }
+ } private final Callable cleanupCallable = new Callable<>() {
+ public Void call() throws Exception {
+ synchronized (DiskLruCache.this) {
+ if (journalWriter == null) {
+ return null; // Closed.
+ }
+ trimToSize();
+ if (journalRebuildRequired()) {
+ rebuildJournal();
+ redundantOpCount = 0;
+ }
+ }
+ return null;
+ }
+ };
private static void deleteIfExists(File file) throws IOException {
if (file.exists() && !file.delete()) {
diff --git a/app/src/main/java/com/hippo/ehviewer/ImageBitmapHelper.java b/app/src/main/java/com/hippo/ehviewer/ImageBitmapHelper.java
index 9c658b78b..2f837f9ea 100644
--- a/app/src/main/java/com/hippo/ehviewer/ImageBitmapHelper.java
+++ b/app/src/main/java/com/hippo/ehviewer/ImageBitmapHelper.java
@@ -16,8 +16,6 @@
package com.hippo.ehviewer;
-import android.os.ParcelFileDescriptor;
-
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -27,7 +25,6 @@ import com.hippo.streampipe.InputStreamPipe;
import java.io.FileInputStream;
import java.io.IOException;
-import java.io.InputStream;
public class ImageBitmapHelper implements ValueHelper {
diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ArchiveGalleryProvider.java b/app/src/main/java/com/hippo/ehviewer/gallery/ArchiveGalleryProvider.java
index 996512ca9..e0e4785f5 100644
--- a/app/src/main/java/com/hippo/ehviewer/gallery/ArchiveGalleryProvider.java
+++ b/app/src/main/java/com/hippo/ehviewer/gallery/ArchiveGalleryProvider.java
@@ -34,10 +34,6 @@ import com.hippo.unifile.UniFile;
import com.hippo.yorozuya.thread.PVLock;
import com.hippo.yorozuya.thread.PriorityThread;
-import java.io.FileDescriptor;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/DirGalleryProvider.java b/app/src/main/java/com/hippo/ehviewer/gallery/DirGalleryProvider.java
index 416aa024b..ae5ae2efb 100644
--- a/app/src/main/java/com/hippo/ehviewer/gallery/DirGalleryProvider.java
+++ b/app/src/main/java/com/hippo/ehviewer/gallery/DirGalleryProvider.java
@@ -259,7 +259,7 @@ public class DirGalleryProvider extends GalleryProvider2 implements Runnable {
InputStream is = null;
try {
is = files[index].openInputStream();
- Image image = Image.decode(((FileInputStream)is).getFD(), true);
+ Image image = Image.decode(((FileInputStream) is).getFD(), true);
mDecodingIndex.lazySet(GalleryPageView.INVALID_INDEX);
if (image != null) {
notifyPageSucceed(index, image);
diff --git a/app/src/main/java/com/hippo/ehviewer/preference/VersionPreference.kt b/app/src/main/java/com/hippo/ehviewer/preference/VersionPreference.kt
index f2b0aeed3..b4ba0de6b 100644
--- a/app/src/main/java/com/hippo/ehviewer/preference/VersionPreference.kt
+++ b/app/src/main/java/com/hippo/ehviewer/preference/VersionPreference.kt
@@ -50,7 +50,7 @@ class VersionPreference @JvmOverloads constructor(
inner class NativeLibInfo {
private var message: String = ""
- fun addLib(libname:String, libversion:String): NativeLibInfo {
+ fun addLib(libname: String, libversion: String): NativeLibInfo {
message = "$message$libname $libversion\n"
return this
}
diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java
index e9a701d41..d3e0d8984 100644
--- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java
+++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java
@@ -1678,7 +1678,7 @@ public final class SpiderQueen implements Runnable {
if (is != null) {
try {
- image = Image.decode(((FileInputStream)is).getFD(), true);
+ image = Image.decode(((FileInputStream) is).getFD(), true);
} catch (IOException e) {
e.printStackTrace();
image = null;
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java
index 6c41abd9b..cb0d15f38 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java
+++ b/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java
@@ -226,6 +226,9 @@ public class GalleryActivity extends EhActivity implements SeekBar.OnSeekBarChan
private int mSize;
private int mCurrentIndex;
private int mSavingPage = -1;
+ private EditTextDialogBuilder builder;
+ private boolean dialogShown = false;
+ private AlertDialog dialog;
private void buildProvider() {
if (mGalleryProvider != null) {
@@ -287,7 +290,16 @@ public class GalleryActivity extends EhActivity implements SeekBar.OnSeekBarChan
}
outState.putInt(KEY_PAGE, mPage);
outState.putInt(KEY_CURRENT_INDEX, mCurrentIndex);
- }
+ } ActivityResultLauncher requestStoragePermissionLauncher = registerForActivityResult(
+ new ActivityResultContracts.RequestPermission(),
+ result -> {
+ if (result && mSavingPage != -1) {
+ saveImage(mSavingPage);
+ } else {
+ Toast.makeText(this, R.string.error_cant_save_image, Toast.LENGTH_SHORT).show();
+ }
+ mSavingPage = -1;
+ });
@Override
protected void attachBaseContext(@NonNull Context newBase) {
@@ -477,16 +489,7 @@ public class GalleryActivity extends EhActivity implements SeekBar.OnSeekBarChan
FrameLayout mainLayout = (FrameLayout) ViewUtils.$$(this, R.id.main);
mainLayout.addView(new GalleryGuideView(this));
}
- } ActivityResultLauncher requestStoragePermissionLauncher = registerForActivityResult(
- new ActivityResultContracts.RequestPermission(),
- result -> {
- if (result && mSavingPage != -1) {
- saveImage(mSavingPage);
- } else {
- Toast.makeText(this, R.string.error_cant_save_image, Toast.LENGTH_SHORT).show();
- }
- mSavingPage = -1;
- });
+ }
@Override
protected void onDestroy() {
@@ -1046,6 +1049,66 @@ public class GalleryActivity extends EhActivity implements SeekBar.OnSeekBarChan
}
}
+ private void showPasswdDialog() {
+ if (!dialogShown) {
+ dialogShown = true;
+ dialog.show();
+ if (dialog.getButton(AlertDialog.BUTTON_POSITIVE) != null) {
+ dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> {
+ GalleryActivity.this.onProvidePasswd();
+ });
+ }
+ dialog.setOnCancelListener(v -> finish());
+ }
+ }
+
+ private void onProvidePasswd() {
+ String passwd = builder.getText();
+ if (passwd.isEmpty())
+ builder.setError(getString(R.string.passwd_cannot_be_empty));
+ else {
+ ArchiveGalleryProvider.passwd = passwd;
+ ArchiveGalleryProvider.pv.v();
+ }
+ }
+
+ private void onPasswdWrong() {
+ builder.setError(getString(R.string.passwd_wrong));
+ }
+
+ private void onPasswdCorrect() {
+ dialog.dismiss();
+ }
+
+ private static class ShowPasswdDialogHandler extends Handler {
+
+ //弱引用持有HandlerActivity , GC 回收时会被回收掉
+ private final WeakReference weakReference;
+
+ public ShowPasswdDialogHandler(GalleryActivity activity) {
+ this.weakReference = new WeakReference(activity);
+ }
+
+ @Override
+ public void handleMessage(Message msg) {
+ GalleryActivity activity = weakReference.get();
+ super.handleMessage(msg);
+ if (null != activity) {
+ switch (msg.what) {
+ case 0:
+ activity.showPasswdDialog();
+ break;
+ case 1:
+ activity.onPasswdWrong();
+ break;
+ case 2:
+ activity.onPasswdCorrect();
+ break;
+ }
+ }
+ }
+ }
+
private class GalleryMenuHelper implements DialogInterface.OnClickListener {
private final View mView;
@@ -1306,69 +1369,5 @@ public class GalleryActivity extends EhActivity implements SeekBar.OnSeekBarChan
}
}
- private EditTextDialogBuilder builder;
- private boolean dialogShown = false;
-
- private AlertDialog dialog;
-
- private void showPasswdDialog() {
- if (!dialogShown) {
- dialogShown = true;
- dialog.show();
- if (dialog.getButton(AlertDialog.BUTTON_POSITIVE) != null) {
- dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> {
- GalleryActivity.this.onProvidePasswd();
- });
- }
- dialog.setOnCancelListener(v -> finish());
- }
- }
-
- private void onProvidePasswd() {
- String passwd = builder.getText();
- if (passwd.isEmpty())
- builder.setError(getString(R.string.passwd_cannot_be_empty));
- else {
- ArchiveGalleryProvider.passwd = passwd;
- ArchiveGalleryProvider.pv.v();
- }
- }
-
- private void onPasswdWrong() {
- builder.setError(getString(R.string.passwd_wrong));
- }
-
- private void onPasswdCorrect() {
- dialog.dismiss();
- }
-
- private static class ShowPasswdDialogHandler extends Handler {
-
- //弱引用持有HandlerActivity , GC 回收时会被回收掉
- private final WeakReference weakReference;
-
- public ShowPasswdDialogHandler(GalleryActivity activity) {
- this.weakReference = new WeakReference(activity);
- }
-
- @Override
- public void handleMessage(Message msg) {
- GalleryActivity activity = weakReference.get();
- super.handleMessage(msg);
- if (null != activity) {
- switch (msg.what) {
- case 0:
- activity.showPasswdDialog();
- break;
- case 1:
- activity.onPasswdWrong();
- break;
- case 2:
- activity.onPasswdCorrect();
- break;
- }
- }
- }
- }
}
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/fragment/AdvancedFragment.java b/app/src/main/java/com/hippo/ehviewer/ui/fragment/AdvancedFragment.java
index 627bb38ff..e69e8910b 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/fragment/AdvancedFragment.java
+++ b/app/src/main/java/com/hippo/ehviewer/ui/fragment/AdvancedFragment.java
@@ -22,7 +22,6 @@ import android.content.res.Resources;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
-import android.provider.Settings;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
diff --git a/app/src/main/java/com/hippo/unifile/DocumentsContractApi21.java b/app/src/main/java/com/hippo/unifile/DocumentsContractApi21.java
index 0a351fe45..a0c805183 100644
--- a/app/src/main/java/com/hippo/unifile/DocumentsContractApi21.java
+++ b/app/src/main/java/com/hippo/unifile/DocumentsContractApi21.java
@@ -33,6 +33,7 @@ final class DocumentsContractApi21 {
private static final String TAG = DocumentsContractApi21.class.getSimpleName();
private static final String PATH_DOCUMENT = "document";
private static final String PATH_TREE = "tree";
+
private DocumentsContractApi21() {
}
diff --git a/app/src/main/java/com/hippo/unifile/FileDescriptorRandomAccessFile.java b/app/src/main/java/com/hippo/unifile/FileDescriptorRandomAccessFile.java
index 12f983a6d..7c0e218ab 100644
--- a/app/src/main/java/com/hippo/unifile/FileDescriptorRandomAccessFile.java
+++ b/app/src/main/java/com/hippo/unifile/FileDescriptorRandomAccessFile.java
@@ -41,6 +41,7 @@ class FileDescriptorRandomAccessFile implements UniRandomAccessFile {
private final int flushAfterWrite;
private final Object closeLock = new Object();
private volatile boolean closed = false;
+
private FileDescriptorRandomAccessFile(ParcelFileDescriptor pfd, FileDescriptor fd, String mode) {
this.pfd = pfd;
this.fd = fd;
diff --git a/app/src/main/java/com/hippo/widget/BatteryView.java b/app/src/main/java/com/hippo/widget/BatteryView.java
index e379f41ae..bd06395a3 100644
--- a/app/src/main/java/com/hippo/widget/BatteryView.java
+++ b/app/src/main/java/com/hippo/widget/BatteryView.java
@@ -82,6 +82,13 @@ public class BatteryView extends AppCompatTextView {
}
mCurrentColor = color;
super.setTextColor(color);
+ }
+
+ private void startCharger() {
+ if (!mIsChargerWorking) {
+ getHandler().post(mCharger);
+ mIsChargerWorking = true;
+ }
} private final Runnable mCharger = new Runnable() {
private int level = 0;
@@ -97,13 +104,6 @@ public class BatteryView extends AppCompatTextView {
}
};
- private void startCharger() {
- if (!mIsChargerWorking) {
- getHandler().post(mCharger);
- mIsChargerWorking = true;
- }
- }
-
private void stopCharger() {
if (mIsChargerWorking) {
getHandler().removeCallbacks(mCharger);
@@ -145,6 +145,7 @@ public class BatteryView extends AppCompatTextView {
+
private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@Override
diff --git a/app/src/main/java/com/hippo/widget/TextClock.java b/app/src/main/java/com/hippo/widget/TextClock.java
index 806734695..02c152b58 100644
--- a/app/src/main/java/com/hippo/widget/TextClock.java
+++ b/app/src/main/java/com/hippo/widget/TextClock.java
@@ -97,6 +97,10 @@ public class TextClock extends AppCompatTextView {
} else {
mTime = Calendar.getInstance();
}
+ }
+
+ public CharSequence getFormat12Hour() {
+ return mFormat12;
} private final Runnable mTicker = new Runnable() {
@Override
public void run() {
@@ -109,10 +113,6 @@ public class TextClock extends AppCompatTextView {
}
};
- public CharSequence getFormat12Hour() {
- return mFormat12;
- }
-
public void setFormat12Hour(CharSequence format) {
mFormat12 = format;
@@ -144,19 +144,7 @@ public class TextClock extends AppCompatTextView {
createTime(timeZone);
onTimeChanged();
- } private final ContentObserver mFormatChangeObserver = new ContentObserver(new Handler()) {
- @Override
- public void onChange(boolean selfChange) {
- chooseFormat();
- onTimeChanged();
- }
-
- @Override
- public void onChange(boolean selfChange, Uri uri) {
- chooseFormat();
- onTimeChanged();
- }
- };
+ }
/**
* Selects either one of {@link #getFormat12Hour()} or {@link #getFormat24Hour()}
@@ -170,7 +158,19 @@ public class TextClock extends AppCompatTextView {
public CharSequence getFormat() {
return mFormat;
- }
+ } private final ContentObserver mFormatChangeObserver = new ContentObserver(new Handler()) {
+ @Override
+ public void onChange(boolean selfChange) {
+ chooseFormat();
+ onTimeChanged();
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ chooseFormat();
+ onTimeChanged();
+ }
+ };
/**
* Selects either one of {@link #getFormat12Hour()} or {@link #getFormat24Hour()}
diff --git a/app/src/main/res/layout-television/gallery_detail_actions.xml b/app/src/main/res/layout-television/gallery_detail_actions.xml
index f106b70ea..92a897b73 100644
--- a/app/src/main/res/layout-television/gallery_detail_actions.xml
+++ b/app/src/main/res/layout-television/gallery_detail_actions.xml
@@ -84,10 +84,10 @@
@@ -244,11 +244,11 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true"
- android:nextFocusDown="@+id/torrent"
android:focusable="true"
android:insetLeft="40dp"
android:insetTop="16dp"
- android:insetRight="40dp" />
+ android:insetRight="40dp"
+ android:nextFocusDown="@+id/torrent" />