aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimo Wilken2021-12-23 16:34:59 +0100
committerTimo Wilken2021-12-23 16:34:59 +0100
commit4f16bf637e6e09deda6d733299e4605483e9d24a (patch)
tree71b80211e7a36567ad87ddd28b3e4f13e5b6d20a
parentcea05fb651ab389a4d6440613a66ccbc091bfbbe (diff)
Avoid disconnecting earlyHEADmaster
If we use a MediaScannerConnection instance, we have to wait for it to process all files (not just accept them) to disconnect, else the last files will not be scanned successfully. The static MediaScannerConnection::scanFile method solves this problem.
-rw-r--r--app/src/main/java/net/twilken/amsupd/MainActivity.java11
-rw-r--r--app/src/main/java/net/twilken/amsupd/UpdaterMediaScannerClient.java2
2 files changed, 5 insertions, 8 deletions
diff --git a/app/src/main/java/net/twilken/amsupd/MainActivity.java b/app/src/main/java/net/twilken/amsupd/MainActivity.java
index ec9e3d1..4945fed 100644
--- a/app/src/main/java/net/twilken/amsupd/MainActivity.java
+++ b/app/src/main/java/net/twilken/amsupd/MainActivity.java
@@ -23,7 +23,6 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.io.File;
import java.util.ArrayList;
import java.util.Locale;
-import java.util.Objects;
public class MainActivity extends AppCompatActivity {
@NonNull
@@ -57,9 +56,7 @@ public class MainActivity extends AppCompatActivity {
private void updateMediaStore() {
((TextView)this.findViewById(R.id.scrollingText)).setText("");
- MediaScannerConnection connection = new MediaScannerConnection(this.getBaseContext(),
- new UpdaterMediaScannerClient(this::appendText));
- connection.connect();
+ ArrayList<String> files = new ArrayList<>(128), mimeTypes = new ArrayList<>(128);
for (String imageDir : ((EditText)this.findViewById(R.id.scanDirs)).getText().toString().split("\n")) {
for (File image : listFilesRecursively(new File(Environment.getExternalStorageDirectory(), imageDir))) {
String path = image.getAbsolutePath(), mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
@@ -68,11 +65,13 @@ public class MainActivity extends AppCompatActivity {
this.appendText(String.format("NOT SCANNING %s: unknown MIME type\n", path));
} else {
this.appendText(String.format("SCAN %s (%s)\n", path, mimeType));
- connection.scanFile(path, mimeType);
+ files.add(path);
+ mimeTypes.add(mimeType);
}
}
}
- connection.disconnect();
+ MediaScannerConnection.scanFile(this.getBaseContext(), files.toArray(new String[0]),
+ mimeTypes.toArray(new String[0]), new UpdaterMediaScannerClient(this::appendText));
}
@Override
diff --git a/app/src/main/java/net/twilken/amsupd/UpdaterMediaScannerClient.java b/app/src/main/java/net/twilken/amsupd/UpdaterMediaScannerClient.java
index 48cee9c..88016ba 100644
--- a/app/src/main/java/net/twilken/amsupd/UpdaterMediaScannerClient.java
+++ b/app/src/main/java/net/twilken/amsupd/UpdaterMediaScannerClient.java
@@ -3,8 +3,6 @@ package net.twilken.amsupd;
import android.media.MediaScannerConnection;
import android.net.Uri;
-import androidx.appcompat.app.AppCompatActivity;
-
import java.util.function.Consumer;
public class UpdaterMediaScannerClient implements MediaScannerConnection.MediaScannerConnectionClient {