Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c56ad54b authored by Mike Lockwood's avatar Mike Lockwood
Browse files

DO NOT MERGE MediaScanner: Add special casing of WMP album art files to isNoMediaPath()



This will prevent MediaProvider from adding these files to the images table

Change-Id: Ibc4128762f221b370a00e331aca633aafae0ad70
Signed-off-by: default avatarMike Lockwood <lockwood@android.com>
parent 71b3342a
Loading
Loading
Loading
Loading
+37 −29
Original line number Diff line number Diff line
@@ -432,35 +432,9 @@ public class MediaScanner
            mFileSize = fileSize;

            if (!isDirectory) {
                // special case certain file names
                // I use regionMatches() instead of substring() below
                // to avoid memory allocation
                int lastSlash = path.lastIndexOf('/');
                if (lastSlash >= 0 && lastSlash + 2 < path.length()) {
                    if (!noMedia) {
                        // ignore those ._* files created by MacOS
                        if (path.regionMatches(lastSlash + 1, "._", 0, 2)) {
                            noMedia = true;
                        }

                        // ignore album art files created by Windows Media Player:
                        // Folder.jpg, AlbumArtSmall.jpg, AlbumArt_{...}_Large.jpg
                        // and AlbumArt_{...}_Small.jpg
                        if (path.regionMatches(true, path.length() - 4, ".jpg", 0, 4)) {
                            if (path.regionMatches(true, lastSlash + 1, "AlbumArt_{", 0, 10) ||
                                    path.regionMatches(true, lastSlash + 1, "AlbumArt.", 0, 9)) {
                                noMedia = true;
                            }
                            int length = path.length() - lastSlash - 1;
                            if ((length == 17 && path.regionMatches(
                                    true, lastSlash + 1, "AlbumArtSmall", 0, 13)) ||
                                    (length == 10
                                     && path.regionMatches(true, lastSlash + 1, "Folder", 0, 6))) {
                if (!noMedia && isNoMediaFile(path)) {
                    noMedia = true;
                }
                        }
                    }
                }
                mNoMedia = noMedia;

                // try mimeType first, if it is specified
@@ -1233,6 +1207,40 @@ public class MediaScanner
        }
    }

    private static boolean isNoMediaFile(String path) {
        File file = new File(path);
        if (file.isDirectory()) return false;

        // special case certain file names
        // I use regionMatches() instead of substring() below
        // to avoid memory allocation
        int lastSlash = path.lastIndexOf('/');
        if (lastSlash >= 0 && lastSlash + 2 < path.length()) {
            // ignore those ._* files created by MacOS
            if (path.regionMatches(lastSlash + 1, "._", 0, 2)) {
                return true;
            }

            // ignore album art files created by Windows Media Player:
            // Folder.jpg, AlbumArtSmall.jpg, AlbumArt_{...}_Large.jpg
            // and AlbumArt_{...}_Small.jpg
            if (path.regionMatches(true, path.length() - 4, ".jpg", 0, 4)) {
                if (path.regionMatches(true, lastSlash + 1, "AlbumArt_{", 0, 10) ||
                        path.regionMatches(true, lastSlash + 1, "AlbumArt.", 0, 9)) {
                    return true;
                }
                int length = path.length() - lastSlash - 1;
                if ((length == 17 && path.regionMatches(
                        true, lastSlash + 1, "AlbumArtSmall", 0, 13)) ||
                        (length == 10
                         && path.regionMatches(true, lastSlash + 1, "Folder", 0, 6))) {
                    return true;
                }
            }
        }
        return false;
    }

    public static boolean isNoMediaPath(String path) {
        if (path == null) return false;

@@ -1254,7 +1262,7 @@ public class MediaScanner
            }
            offset = slashIndex;
        }
        return false;
        return isNoMediaFile(path);
    }

    public void scanMtpFile(String path, String volumeName, int objectHandle, int format) {