Fixed image loading
Signed-off-by: Balazs Toldi <balazs@toldi.eu>
This commit is contained in:
parent
55ca983cf7
commit
5933cd2b8a
1 changed files with 71 additions and 50 deletions
|
@ -36,6 +36,7 @@ import su.litvak.chromecast.api.v2.MediaStatus
|
|||
class ChromecastManagerActivity : ComponentActivity() {
|
||||
companion object {
|
||||
var chromeCast_: ChromeCast? = null
|
||||
const val METADATA_THUMB = "thumb"
|
||||
}
|
||||
|
||||
private lateinit var chromeCast: ChromeCast
|
||||
|
@ -102,56 +103,7 @@ class ChromecastManagerActivity : ComponentActivity() {
|
|||
CircularProgressIndicator()
|
||||
}
|
||||
PlayBackControl()
|
||||
val mediaStatus = viewModel.mediaStatus.value
|
||||
|
||||
if (mediaStatus != null) {
|
||||
val nowPlaying =
|
||||
if (mediaStatus.media.metadata != null) mediaStatus.media.metadata[Media.METADATA_TITLE] else ""
|
||||
|
||||
|
||||
Text(text = stringResource(id = R.string.now_playing) + ": $nowPlaying")
|
||||
var sliderPosition by remember { mutableStateOf(0.0f) }
|
||||
var sliderMoving by remember { mutableStateOf(false) }
|
||||
if (!sliderMoving)
|
||||
sliderPosition =
|
||||
(mediaStatus.currentTime / mediaStatus.media.duration).toFloat()
|
||||
val images =
|
||||
mediaStatus.media.metadata[Media.METADATA_IMAGES] as ArrayList<LinkedHashMap<String, String>>
|
||||
if (images.size >= 1 && images[0].containsKey("url")) {
|
||||
Log.e("Caster", images[0]["url"].toString())
|
||||
Image(
|
||||
painter = rememberImagePainter(images[0]["url"]),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
)
|
||||
}
|
||||
Row(
|
||||
Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.SpaceBetween
|
||||
) {
|
||||
Text(
|
||||
text = String.format(
|
||||
"%02d:%02d",
|
||||
((mediaStatus.currentTime % 3600) / 60).toInt(),
|
||||
(mediaStatus.currentTime % 60).toInt()
|
||||
)
|
||||
)
|
||||
Text(
|
||||
text = String.format(
|
||||
"%02d:%02d",
|
||||
((mediaStatus.media.duration % 3600) / 60).toInt(),
|
||||
(mediaStatus.media.duration % 60).toInt()
|
||||
)
|
||||
)
|
||||
}
|
||||
Slider(value = sliderPosition, onValueChange = {
|
||||
sliderPosition = it
|
||||
sliderMoving = true
|
||||
}, onValueChangeFinished = {
|
||||
viewModel.seek(sliderPosition.toDouble())
|
||||
sliderMoving = false
|
||||
})
|
||||
}
|
||||
mediaStatus()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -160,6 +112,75 @@ class ChromecastManagerActivity : ComponentActivity() {
|
|||
}
|
||||
|
||||
|
||||
@Composable
|
||||
fun mediaStatus() {
|
||||
val mediaStatus = viewModel.mediaStatus.value
|
||||
|
||||
if (mediaStatus != null) {
|
||||
val nowPlaying =
|
||||
if (mediaStatus.media.metadata != null) mediaStatus.media.metadata[Media.METADATA_TITLE] else ""
|
||||
|
||||
|
||||
Text(text = stringResource(id = R.string.now_playing) + ": $nowPlaying")
|
||||
var sliderPosition by remember { mutableStateOf(0.0f) }
|
||||
var sliderMoving by remember { mutableStateOf(false) }
|
||||
if (mediaStatus.media.duration != null) {
|
||||
|
||||
|
||||
if (!sliderMoving)
|
||||
sliderPosition =
|
||||
(mediaStatus.currentTime / mediaStatus.media.duration).toFloat()
|
||||
}
|
||||
if (mediaStatus.media.metadata[Media.METADATA_IMAGES] != null) {
|
||||
val images =
|
||||
mediaStatus.media.metadata[Media.METADATA_IMAGES] as ArrayList<LinkedHashMap<String, String>>
|
||||
if (images.size >= 1 && images[0].containsKey("url")) {
|
||||
Log.e("Caster", images[0]["url"].toString())
|
||||
Image(
|
||||
painter = rememberImagePainter(images[0]["url"]),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
)
|
||||
}
|
||||
} else if (mediaStatus.media.metadata[METADATA_THUMB] != null) {
|
||||
val image =
|
||||
mediaStatus.media.metadata[METADATA_THUMB] as String
|
||||
Log.e("Caster", image)
|
||||
Image(
|
||||
painter = rememberImagePainter(image),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
)
|
||||
}
|
||||
Row(
|
||||
Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.SpaceBetween
|
||||
) {
|
||||
Text(
|
||||
text = String.format(
|
||||
"%02d:%02d",
|
||||
((mediaStatus.currentTime % 3600) / 60).toInt(),
|
||||
(mediaStatus.currentTime % 60).toInt()
|
||||
)
|
||||
)
|
||||
Text(
|
||||
text = String.format(
|
||||
"%02d:%02d",
|
||||
((mediaStatus.media.duration % 3600) / 60).toInt(),
|
||||
(mediaStatus.media.duration % 60).toInt()
|
||||
)
|
||||
)
|
||||
}
|
||||
Slider(value = sliderPosition, onValueChange = {
|
||||
sliderPosition = it
|
||||
sliderMoving = true
|
||||
}, onValueChangeFinished = {
|
||||
viewModel.seek(sliderPosition.toDouble())
|
||||
sliderMoving = false
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun MenuBar() {
|
||||
TopAppBar(
|
||||
|
|
Loading…
Reference in a new issue