Loading media/java/android/media/MediaScanner.java +37 −29 Original line number Diff line number Diff line Loading @@ -431,35 +431,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 Loading Loading @@ -1231,6 +1205,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; Loading @@ -1252,7 +1260,7 @@ public class MediaScanner } offset = slashIndex; } return false; return isNoMediaFile(path); } public void scanMtpFile(String path, String volumeName, int objectHandle, int format) { Loading Loading
media/java/android/media/MediaScanner.java +37 −29 Original line number Diff line number Diff line Loading @@ -431,35 +431,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 Loading Loading @@ -1231,6 +1205,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; Loading @@ -1252,7 +1260,7 @@ public class MediaScanner } offset = slashIndex; } return false; return isNoMediaFile(path); } public void scanMtpFile(String path, String volumeName, int objectHandle, int format) { Loading