Skip to content

Commit de1fb0a

Browse files
committed
wip
1 parent 4245723 commit de1fb0a

File tree

7 files changed

+20
-14
lines changed

7 files changed

+20
-14
lines changed

app/src/main/kotlin/org/akanework/gramophone/logic/utils/AfFormatTracker.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,7 @@ class AfFormatTracker(
716716
oid, sr,
717717
getHalFormat(audioTrack), getHalChannelCount(audioTrack), mp?.channelMask,
718718
grantedFlags, getIdFromDump(dump), findAfTrackFlags(dump, latency, audioTrack, grantedFlags)
719-
)
719+
) // TODO find policy port ID: https://cs.android.com/android/_/android/platform/frameworks/av/+/20b9ef0b55c9150ae11057ab997ae61be2d496ef
720720
}.let {
721721
if (LOG_EVENTS)
722722
Log.d(TAG, "audio hal format changed to: $it")

app/src/main/kotlin/org/akanework/gramophone/logic/utils/GramophoneShuffleOrder.kt

+11-6
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@ import androidx.annotation.OptIn
55
import androidx.media3.common.C
66
import androidx.media3.common.util.UnstableApi
77
import androidx.media3.exoplayer.source.ShuffleOrder
8-
import androidx.media3.session.MediaController
9-
import kotlin.random.Random
108
import org.akanework.gramophone.logic.utils.exoplayer.EndedWorkaroundPlayer
9+
import kotlin.random.Random
1110

1211
/**
1312
* This shuffle order will take "firstIndex" as first song and play all songs after it.
@@ -173,10 +172,16 @@ class CircularShuffleOrder private constructor(
173172
if (data == null || data.length < 2) return Persistent(Random.nextLong(), null)
174173
val split = data.split(';')
175174
if (split.isEmpty()) return Persistent(Random.nextLong(), null)
176-
return Persistent(
177-
split[0].toLong(), if (split.size > 1) split[1]
178-
.split(',').map(String::toInt).toIntArray() else null
179-
)
175+
return try {
176+
Persistent(
177+
split[0].toLong(), if (split.size > 1) split[1]
178+
.split(',').map(String::toInt).toIntArray() else null
179+
)
180+
} catch (e: NumberFormatException) {
181+
// might happen with some real bad luck?
182+
Log.e(TAG, "gave up trying to restore shuffle order: " + Log.getStackTraceString(e))
183+
Persistent(Random.nextLong(), null)
184+
}
180185
}
181186
}
182187

app/src/main/kotlin/org/akanework/gramophone/logic/utils/LastPlayedManager.kt

+3-2
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ import android.util.Base64
2424
import android.util.Log
2525
import androidx.annotation.OptIn
2626
import androidx.core.content.edit
27+
import androidx.core.net.toUri
2728
import androidx.media3.common.MediaItem
2829
import androidx.media3.common.MediaMetadata
2930
import androidx.media3.common.PlaybackParameters
3031
import androidx.media3.common.Player
3132
import androidx.media3.common.util.UnstableApi
3233
import androidx.media3.session.MediaSession.MediaItemsWithStartPosition
33-
import java.nio.charset.StandardCharsets
3434
import kotlinx.coroutines.CoroutineScope
3535
import kotlinx.coroutines.Dispatchers
3636
import kotlinx.coroutines.launch
@@ -49,6 +49,7 @@ import uk.akane.libphonograph.items.artistId
4949
import uk.akane.libphonograph.items.author
5050
import uk.akane.libphonograph.items.cdTrackNumber
5151
import uk.akane.libphonograph.items.modifiedDate
52+
import java.nio.charset.StandardCharsets
5253

5354
@OptIn(UnstableApi::class)
5455
class LastPlayedManager(
@@ -355,7 +356,7 @@ private class SafeDelimitedStringDecat(delimiter: String, str: String) {
355356
fun readInt(): Int? = read()?.toInt()
356357
fun readLong(): Long? = read()?.toLong()
357358
fun readBool(): Boolean? = read()?.toBooleanStrict()
358-
fun readUri(): Uri? = Uri.parse(readStringSafe())
359+
fun readUri(): Uri? = readStringSafe()!!.toUri()
359360
fun skip() {
360361
read()
361362
}

app/src/main/kotlin/org/akanework/gramophone/ui/AudioPreviewActivity.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ class AudioPreviewActivity : AppCompatActivity(), View.OnClickListener {
300300
try {
301301
if (hasScopedStorageV1()) MediaStore.getMediaUri(this, uri) else null
302302
} catch (e: Exception) {
303-
if (e.message != "Provider for this Uri is not supported.")
303+
if (e.message != "Provider for this Uri is not supported." && e !is SecurityException)
304304
throw e
305305
null
306306
} ?: run {

app/src/main/kotlin/org/akanework/gramophone/ui/adapters/SongAdapter.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import kotlinx.coroutines.flow.Flow
3939
import kotlinx.coroutines.launch
4040
import kotlinx.coroutines.withContext
4141
import org.akanework.gramophone.R
42+
import org.akanework.gramophone.logic.getFile
4243
import org.akanework.gramophone.ui.MainActivity
4344
import org.akanework.gramophone.ui.MediaControllerViewModel
4445
import org.akanework.gramophone.ui.components.NowPlayingDrawable
@@ -300,7 +301,7 @@ class SongAdapter(
300301
}
301302

302303
override fun getFile(item: MediaItem): File {
303-
return item.localConfiguration!!.uri.toFile()
304+
return item.getFile()
304305
}
305306

306307
override fun getTitle(item: MediaItem): String {

app/src/main/kotlin/org/akanework/gramophone/ui/components/LegacyLyricsAdapter.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import org.akanework.gramophone.logic.GramophonePlaybackService
2929
import org.akanework.gramophone.logic.dpToPx
3030
import org.akanework.gramophone.logic.getBooleanStrict
3131
import org.akanework.gramophone.logic.ui.CustomSmoothScroller
32-
import org.akanework.gramophone.logic.ui.CustomSmoothScroller.SNAP_TO_START
3332
import org.akanework.gramophone.logic.ui.MyRecyclerView
3433
import org.akanework.gramophone.logic.utils.MediaStoreUtils
3534
import org.akanework.gramophone.ui.MainActivity
@@ -317,7 +316,7 @@ class LegacyLyricsAdapter(
317316
fun smoothScrollTo(position: Int, noAnimation: Boolean = false) {
318317
val smoothScroller = createSmoothScroller(noAnimation || forceNoAnimation)
319318
smoothScroller.targetPosition = position
320-
recyclerView!!.layoutManager!!.startSmoothScroll(
319+
recyclerView?.layoutManager?.startSmoothScroll(
321320
smoothScroller
322321
)
323322
}

0 commit comments

Comments
 (0)