Skip to content

Commit ea2c733

Browse files
authored
Merge pull request #569 from naveensingh/fix_nullability_issue
Crash fixes and improvements
2 parents 2046683 + 1eac3fb commit ea2c733

File tree

2 files changed

+23
-19
lines changed

2 files changed

+23
-19
lines changed

app/src/main/kotlin/com/simplemobiletools/musicplayer/helpers/MultiPlayer.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,13 @@ class MultiPlayer(private val app: Application, private val callbacks: PlaybackC
4040
}
4141

4242
AudioManager.AUDIOFOCUS_LOSS -> {
43-
if (isPlaying()) {
44-
pause()
45-
}
43+
pause()
4644
callbacks.onPlayStateChanged()
4745
}
4846

4947
AudioManager.AUDIOFOCUS_LOSS_TRANSIENT -> {
5048
val wasPlaying = isPlaying()
51-
if (wasPlaying) {
52-
pause()
53-
}
49+
pause()
5450
callbacks.onPlayStateChanged()
5551
isPausedByTransientLossOfFocus = wasPlaying
5652
}
@@ -142,6 +138,10 @@ class MultiPlayer(private val app: Application, private val callbacks: PlaybackC
142138
}
143139

144140
fun pause(): Boolean {
141+
if (!isPlaying()) {
142+
return false
143+
}
144+
145145
unregisterBecomingNoisyReceiver()
146146
return try {
147147
mCurrentMediaPlayer.pause()

app/src/main/kotlin/com/simplemobiletools/musicplayer/helpers/SimpleMediaScanner.kt

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,10 @@ class SimpleMediaScanner(private val context: Application) {
6060
ensureBackgroundThread {
6161
try {
6262
scanMediaStore()
63-
onScanComplete?.invoke(false)
64-
scanFilesManually()
63+
if (isQPlus()) {
64+
onScanComplete?.invoke(false)
65+
scanFilesManually()
66+
}
6567

6668
cleanupDatabase()
6769
onScanComplete?.invoke(true)
@@ -211,25 +213,27 @@ class SimpleMediaScanner(private val context: Application) {
211213
val title = cursor.getStringValue(Audio.Media.TITLE)
212214
val duration = cursor.getIntValue(Audio.Media.DURATION) / 1000
213215
val trackId = cursor.getIntValue(Audio.Media.TRACK) % 1000
214-
val path = cursor.getStringValue(Audio.Media.DATA)
216+
val path = cursor.getStringValue(Audio.Media.DATA).orEmpty()
215217
val artist = cursor.getStringValue(Audio.Media.ARTIST) ?: MediaStore.UNKNOWN_STRING
216-
val album = cursor.getStringValue(Audio.Media.ALBUM)
217-
val albumId = cursor.getLongValue(Audio.Media.ALBUM_ID)
218-
val artistId = cursor.getLongValue(Audio.Media.ARTIST_ID)
219-
val year = cursor.getIntValue(Audio.Media.YEAR)
220-
val dateAdded = cursor.getIntValue(Audio.Media.DATE_ADDED)
221218
val folderName = if (isQPlus()) {
222219
cursor.getStringValue(Audio.Media.BUCKET_DISPLAY_NAME) ?: MediaStore.UNKNOWN_STRING
223220
} else {
224221
""
225222
}
226223

224+
val album = cursor.getStringValue(Audio.Media.ALBUM) ?: folderName
225+
val albumId = cursor.getLongValue(Audio.Media.ALBUM_ID)
226+
val artistId = cursor.getLongValue(Audio.Media.ARTIST_ID)
227+
val year = cursor.getIntValue(Audio.Media.YEAR)
228+
val dateAdded = cursor.getIntValue(Audio.Media.DATE_ADDED)
227229
val coverUri = ContentUris.withAppendedId(artworkUri, albumId)
228230
val coverArt = coverUri.toString()
229231

230-
val track = Track(0, id, title, artist, path, duration, album, coverArt, 0, trackId, folderName, albumId, artistId, year, dateAdded, 0)
231-
track.title = track.getProperTitle(showFilename)
232-
tracks.add(track)
232+
if (!title.isNullOrEmpty()) {
233+
val track = Track(0, id, title, artist, path, duration, album, coverArt, 0, trackId, folderName, albumId, artistId, year, dateAdded, 0)
234+
track.title = track.getProperTitle(showFilename)
235+
tracks.add(track)
236+
}
233237
}
234238

235239
return tracks
@@ -277,7 +281,7 @@ class SimpleMediaScanner(private val context: Application) {
277281
context.queryCursor(uri, projection.toTypedArray(), null, null, showErrors = true) { cursor ->
278282
val id = cursor.getLongValue(Audio.Albums._ID)
279283
val artistName = cursor.getStringValue(Audio.Albums.ARTIST) ?: MediaStore.UNKNOWN_STRING
280-
val title = cursor.getStringValue(Audio.Albums.ALBUM)
284+
val title = cursor.getStringValue(Audio.Albums.ALBUM) ?: MediaStore.UNKNOWN_STRING
281285
val coverArt = ContentUris.withAppendedId(artworkUri, id).toString()
282286
val year = cursor.getIntValue(Audio.Albums.FIRST_YEAR)
283287
val trackCnt = cursor.getIntValue(Audio.Albums.NUMBER_OF_SONGS)
@@ -357,7 +361,7 @@ class SimpleMediaScanner(private val context: Application) {
357361
}
358362

359363
if (title.isNotEmpty()) {
360-
val track = Track(0, id, title, artist, path, duration, album, "", 0, trackId, folderName, 0, 0, year, dateAdded, FLAG_MANUAL_CACHE)
364+
val track = Track(0, id, title, artist, path, duration, album, "", 0, trackId, folderName, 0, 0, year, dateAdded, 0, FLAG_MANUAL_CACHE)
361365
// use hashCode() as id for tracking purposes, there's a very slim chance of collision
362366
track.mediaStoreId = track.hashCode().toLong()
363367
tracks.add(track)

0 commit comments

Comments
 (0)