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() {
|
class ChromecastManagerActivity : ComponentActivity() {
|
||||||
companion object {
|
companion object {
|
||||||
var chromeCast_: ChromeCast? = null
|
var chromeCast_: ChromeCast? = null
|
||||||
|
const val METADATA_THUMB = "thumb"
|
||||||
}
|
}
|
||||||
|
|
||||||
private lateinit var chromeCast: ChromeCast
|
private lateinit var chromeCast: ChromeCast
|
||||||
|
@ -102,56 +103,7 @@ class ChromecastManagerActivity : ComponentActivity() {
|
||||||
CircularProgressIndicator()
|
CircularProgressIndicator()
|
||||||
}
|
}
|
||||||
PlayBackControl()
|
PlayBackControl()
|
||||||
val mediaStatus = viewModel.mediaStatus.value
|
mediaStatus()
|
||||||
|
|
||||||
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
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
@Composable
|
||||||
fun MenuBar() {
|
fun MenuBar() {
|
||||||
TopAppBar(
|
TopAppBar(
|
||||||
|
|
Loading…
Reference in a new issue