Merge "Support is_recording on R OS" into sc-dev
diff --git a/src/com/android/providers/media/DatabaseHelper.java b/src/com/android/providers/media/DatabaseHelper.java
index f853150..7bcdf62 100644
--- a/src/com/android/providers/media/DatabaseHelper.java
+++ b/src/com/android/providers/media/DatabaseHelper.java
@@ -26,7 +26,6 @@
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.Intent;
-import android.content.SharedPreferences;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ProviderInfo;
@@ -62,7 +61,6 @@
 import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 
-import com.android.modules.utils.build.SdkLevel;
 import com.android.providers.media.playlist.Playlist;
 import com.android.providers.media.util.BackgroundThread;
 import com.android.providers.media.util.DatabaseUtils;
@@ -106,8 +104,6 @@
      */
     public static final String CURRENT_GENERATION_CLAUSE = "SELECT generation FROM local_metadata";
 
-    static final String PREF_DB_FROM_VERSION = "db_from_version";
-
     private static final int NOTIFY_BATCH_SIZE = 256;
 
     final Context mContext;
@@ -359,8 +355,6 @@
             updateDatabase(db, oldV, newV);
         } finally {
             mSchemaLock.writeLock().unlock();
-            SharedPreferences prefs = mContext.getSharedPreferences(TAG, Context.MODE_PRIVATE);
-            prefs.edit().putInt(PREF_DB_FROM_VERSION, oldV).commit();
         }
     }
 
@@ -1412,7 +1406,8 @@
 
     private static void updateAddRecording(SQLiteDatabase db, boolean internal) {
         db.execSQL("ALTER TABLE files ADD COLUMN is_recording INTEGER DEFAULT 0;");
-        updateRecordingForSUpdate(db, internal);
+        // We add the column is_recording, rescan all music files
+        db.execSQL("UPDATE files SET date_modified=0 WHERE is_music=1;");
     }
 
     private static void updateAddRedactedUriId(SQLiteDatabase db) {
@@ -1567,7 +1562,6 @@
                 UserHandle.myUserId()));
     }
 
-
     private static void recomputeDataValues(SQLiteDatabase db, boolean internal) {
         try (Cursor c = db.query("files", new String[] { FileColumns._ID, FileColumns.DATA },
                 null, null, null, null, null, null)) {
@@ -1619,13 +1613,6 @@
         }
     }
 
-    static void updateRecordingForSUpdate(SQLiteDatabase db, boolean internal) {
-        if (SdkLevel.isAtLeastS()) {
-            // Rescan all music files to update is_recording type
-            db.execSQL("UPDATE files SET date_modified=0 WHERE is_music=1;");
-        }
-    }
-
     static final int VERSION_J = 509;
     static final int VERSION_K = 700;
     static final int VERSION_L = 700;
diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java
index 69efcae..6b410c4 100644
--- a/src/com/android/providers/media/MediaProvider.java
+++ b/src/com/android/providers/media/MediaProvider.java
@@ -3054,6 +3054,7 @@
                             Environment.DIRECTORY_MUSIC,
                             Environment.DIRECTORY_NOTIFICATIONS,
                             Environment.DIRECTORY_PODCASTS,
+                            FileUtils.DIRECTORY_RECORDINGS,
                             Environment.DIRECTORY_RINGTONES);
                 }
                 break;
diff --git a/src/com/android/providers/media/MediaUpgradeReceiver.java b/src/com/android/providers/media/MediaUpgradeReceiver.java
index 320e1c2..abb326a 100644
--- a/src/com/android/providers/media/MediaUpgradeReceiver.java
+++ b/src/com/android/providers/media/MediaUpgradeReceiver.java
@@ -24,7 +24,6 @@
 import android.util.Log;
 
 import com.android.providers.media.util.ForegroundThread;
-import com.android.providers.media.util.Logging;
 import com.android.providers.media.util.Metrics;
 
 import java.io.File;
@@ -43,8 +42,6 @@
     static final String TAG = "MediaUpgradeReceiver";
     static final String PREF_DB_VERSION = "db_version";
 
-    private static final int UPDATE_RECORDING_VERSION = 1205;
-
     @Override
     public void onReceive(Context context, Intent intent) {
         // We are now running with the system up, but no apps started,
@@ -67,10 +64,6 @@
         prefs.edit().putInt(PREF_DB_VERSION, dbVersion).commit();
 
         try {
-            // Lookup the last from_version when upgrade database
-            prefs = context.getSharedPreferences(Logging.TAG, Context.MODE_PRIVATE);
-            final int fromVersion = prefs.getInt(DatabaseHelper.PREF_DB_FROM_VERSION, 0);
-
             File dbDir = context.getDatabasePath("foo").getParentFile();
             String[] files = dbDir.list();
             if (files == null) return;
@@ -86,13 +79,7 @@
                                 MediaProvider.MIGRATION_LISTENER, null);
                         helper.runWithTransaction((db) -> {
                             // Perform just enough to force database upgrade
-                            final int version = db.getVersion();
-                            // update the is_recording column for R OS upgraded to S OS
-                            if (fromVersion >= UPDATE_RECORDING_VERSION
-                                    && prefVersion < DatabaseHelper.VERSION_S) {
-                                helper.updateRecordingForSUpdate(db, helper.mInternal);
-                            }
-                            return version;
+                            return db.getVersion();
                         });
                         helper.close();
                     } catch (Throwable t) {
diff --git a/src/com/android/providers/media/scan/ModernMediaScanner.java b/src/com/android/providers/media/scan/ModernMediaScanner.java
index 9a38945..8927bfa 100644
--- a/src/com/android/providers/media/scan/ModernMediaScanner.java
+++ b/src/com/android/providers/media/scan/ModernMediaScanner.java
@@ -1226,6 +1226,8 @@
         sAudioTypes.put(Environment.DIRECTORY_MUSIC, AudioColumns.IS_MUSIC);
         if (SdkLevel.isAtLeastS()) {
             sAudioTypes.put(Environment.DIRECTORY_RECORDINGS, AudioColumns.IS_RECORDING);
+        } else {
+            sAudioTypes.put(FileUtils.DIRECTORY_RECORDINGS, AudioColumns.IS_RECORDING);
         }
     }
 
diff --git a/src/com/android/providers/media/util/FileUtils.java b/src/com/android/providers/media/util/FileUtils.java
index cf7c23a..47e1559 100644
--- a/src/com/android/providers/media/util/FileUtils.java
+++ b/src/com/android/providers/media/util/FileUtils.java
@@ -964,6 +964,12 @@
     public static final Pattern PATTERN_OBB_OR_CHILD_PATH = Pattern.compile(
             "(?i)^/storage/[^/]+/(?:[0-9]+/)?Android/(?:obb)(/?.*)");
 
+    /**
+     * The recordings directory. This is used for R OS. For S OS or later,
+     * we use {@link Environment#DIRECTORY_RECORDINGS} directly.
+     */
+    public static final String DIRECTORY_RECORDINGS = "Recordings";
+
     @VisibleForTesting
     public static final String[] DEFAULT_FOLDER_NAMES;
     static {
@@ -995,6 +1001,7 @@
                     Environment.DIRECTORY_DCIM,
                     Environment.DIRECTORY_DOCUMENTS,
                     Environment.DIRECTORY_AUDIOBOOKS,
+                    DIRECTORY_RECORDINGS,
             };
         }
     }