@@ -29,21 +29,24 @@ open class NativeSyncApiImplBase(context: Context) {
29
29
MediaStore .Files .FileColumns .MEDIA_TYPE_VIDEO .toString()
30
30
)
31
31
const val BUCKET_SELECTION = " (${MediaStore .Files .FileColumns .BUCKET_ID } = ?)"
32
- val ASSET_PROJECTION = arrayOf(
33
- MediaStore .MediaColumns ._ID ,
34
- MediaStore .MediaColumns .DATA ,
35
- MediaStore .MediaColumns .DISPLAY_NAME ,
36
- MediaStore .MediaColumns .DATE_TAKEN ,
37
- MediaStore .MediaColumns .DATE_ADDED ,
38
- MediaStore .MediaColumns .DATE_MODIFIED ,
39
- MediaStore .Files .FileColumns .MEDIA_TYPE ,
40
- MediaStore .MediaColumns .BUCKET_ID ,
41
- MediaStore .MediaColumns .WIDTH ,
42
- MediaStore .MediaColumns .HEIGHT ,
43
- MediaStore .MediaColumns .DURATION ,
44
- MediaStore .MediaColumns .ORIENTATION ,
45
- MediaStore .MediaColumns .IS_FAVORITE ,
46
- )
32
+ val ASSET_PROJECTION = buildList {
33
+ add(MediaStore .MediaColumns ._ID )
34
+ add(MediaStore .MediaColumns .DATA )
35
+ add(MediaStore .MediaColumns .DISPLAY_NAME )
36
+ add(MediaStore .MediaColumns .DATE_TAKEN )
37
+ add(MediaStore .MediaColumns .DATE_ADDED )
38
+ add(MediaStore .MediaColumns .DATE_MODIFIED )
39
+ add(MediaStore .Files .FileColumns .MEDIA_TYPE )
40
+ add(MediaStore .MediaColumns .BUCKET_ID )
41
+ add(MediaStore .MediaColumns .WIDTH )
42
+ add(MediaStore .MediaColumns .HEIGHT )
43
+ add(MediaStore .MediaColumns .DURATION )
44
+ add(MediaStore .MediaColumns .ORIENTATION )
45
+ // IS_FAVORITE is only available on Android 11 and above
46
+ if (android.os.Build .VERSION .SDK_INT >= android.os.Build .VERSION_CODES .R ) {
47
+ add(MediaStore .MediaColumns .IS_FAVORITE )
48
+ }
49
+ }.toTypedArray()
47
50
48
51
const val HASH_BUFFER_SIZE = 2 * 1024 * 1024
49
52
}
@@ -78,7 +81,7 @@ open class NativeSyncApiImplBase(context: Context) {
78
81
val durationColumn = c.getColumnIndexOrThrow(MediaStore .MediaColumns .DURATION )
79
82
val orientationColumn =
80
83
c.getColumnIndexOrThrow(MediaStore .MediaColumns .ORIENTATION )
81
- val favoriteColumn = c.getColumnIndexOrThrow (MediaStore .MediaColumns .IS_FAVORITE )
84
+ val favoriteColumn = c.getColumnIndex (MediaStore .MediaColumns .IS_FAVORITE )
82
85
83
86
while (c.moveToNext()) {
84
87
val id = c.getLong(idColumn).toString()
@@ -107,7 +110,7 @@ open class NativeSyncApiImplBase(context: Context) {
107
110
else c.getLong(durationColumn) / 1000
108
111
val bucketId = c.getString(bucketIdColumn)
109
112
val orientation = c.getInt(orientationColumn)
110
- val isFavorite = c.getInt(favoriteColumn) != 0 ;
113
+ val isFavorite = if (favoriteColumn == - 1 ) false else c.getInt(favoriteColumn) != 0
111
114
112
115
val asset = PlatformAsset (
113
116
id,
0 commit comments