Hi ,
I want to have a playlist played on DetailScreen (the screen which has playbutton). With controls such that i should be able to skip to next video on pressing right arrow key and to go back to previous video on left key, and pressing up arrow should stop Playing video and should go to appDetailScreen.
Suppose I have an item node data as below
<item sdImg="http://rokudev.roku.com/rokudev/examples/videoplayer/images/BenjaminZander.jpg" hdImg="http://rokudev.roku.com/rokudev/examples/videoplayer/images/BenjaminZander.jpg">
<title>Benjamin Zander on music and passion</title>
<contentId>10041</contentId>
<contentType>Talk</contentType>
<contentQuality>SD</contentQuality>
<media>
<streamFormat>mp4</streamFormat>
<streamQuality>SD</streamQuality>
<streamBitrate>1500</streamBitrate>
<streamUrl>http://video.ted.com/talks/podcast/BenjaminZander_2008_480.mp4</streamUrl>
</media>
<media>
<streamFormat>mp4</streamFormat>
<streamQuality>SD</streamQuality>
<streamBitrate>1500</streamBitrate>
<streamUrl>http://video.ted.com/talks/podcast/CynthiaSchneider_2009G_480.mp4</streamUrl>
</media>
<media>
<streamFormat>mp4</streamFormat>
<streamQuality>SD</streamQuality>
<streamBitrate>1500</streamBitrate>
<streamUrl>http://video.ted.com/talks/podcast/JulianTreasure_2009G_480.mp4</streamUrl>
</media>
<synopsis>Benjamin Zander has two infectious passions: classical music, and helping us all realize our untapped love for it -- and by extension, our untapped love for all new possibilities, new experiences, new connections.</synopsis>
<genres>Inspiration</genres>
<runtime>0</runtime>
</item>
In the Detailscreen when i press PlayAll button (the button index value is 5) , It should play all the media nodes video one after the other. With the below code change I am able to play the media one after the other, but not able to properly manage the navigation keys, when the video moves from one video to another video the player shows for a sec or two the appDetailScreen, which shouldn't happen, I have pasted my code below, Is this the rightway to do for my requirement or can it be done in different way ??
Function showDetailScreen(screen As Object, showList As Object, showIndex as Integer) As Integer
if validateParam(screen, "roSpringboardScreen", "showDetailScreen") = false return -1
if validateParam(showList, "roArray", "showDetailScreen") = false return -1
refreshShowDetail(screen, showList, showIndex)
'remote key id's for left/right navigation
remoteKeyLeft = 4
remoteKeyRight = 5
while true
msg = wait(0, screen.GetMessagePort())
if type(msg) = "roSpringboardScreenEvent" then
if msg.isScreenClosed()
print "Screen closed"
exit while
else if msg.isRemoteKeyPressed()
print "Remote key pressed"
if msg.GetIndex() = remoteKeyLeft then
showIndex = getPrevShow(showList, showIndex)
if showIndex <> -1
refreshShowDetail(screen, showList, showIndex)
end if
else if msg.GetIndex() = remoteKeyRight
showIndex = getNextShow(showList, showIndex)
if showIndex <> -1
refreshShowDetail(screen, showList, showIndex)
end if
endif
else if msg.isButtonPressed()
print "ButtonPressed"
if msg.GetIndex() = 1
PlayStart = RegRead(showList[showIndex].ContentId)
if PlayStart <> invalid then
showList[showIndex].PlayStart = PlayStart.ToInt()
endif
showVideoScreen(showList[showIndex])
endif
if msg.GetIndex() = 2
showList[showIndex].PlayStart = 0
showVideoScreen(showList[showIndex])
endif
if msg.GetIndex() = 3 OR msg.GetIndex() = 4
print "Button pressed: "; msg.GetIndex(); " " msg.GetData()
showSubscriptionDetails()
endif
if msg.GetIndex() = 5
print "Button pressed: "; msg.GetIndex(); " " msg.GetData()
print showList[showIndex].StreamUrls.Count()
for k=0 to showList[showIndex].StreamUrls.Count()
currFeedItem = init_show_feed_item()
currFeedItem.ContentId = showList[showIndex].ContentId
currFeedItem.MatchId = showList[showIndex].MatchId
currFeedItem.Title = showList[showIndex].Title
currFeedItem.ContentType = showList[showIndex].ContentType
currFeedItem.ContentQuality = showList[showIndex].ContentQuality
currFeedItem.Synopsis = showList[showIndex].Synopsis
currFeedItem.Genre = showList[showIndex].Genre
currFeedItem.Runtime = showList[showIndex].Runtime
currFeedItem.authParams = showList[showIndex].authParams
currFeedItem.StreamQualities = CreateObject("roArray", 1, true)
currFeedItem.StreamBitrates = CreateObject("roArray", 1, true)
currFeedItem.StreamUrls = CreateObject("roArray", 1, true)
currFeedItem.StreamQualities.Push(validstr(showList[showIndex].StreamQualities[k]))
currFeedItem.StreamBitrates.Push(validstr(showList[showIndex].StreamBitrates[k]))
currFeedItem.StreamUrls.Push(validstr(showList[showIndex].StreamUrls[k]))
PlayStart = RegRead(currFeedItem.ContentId)
if PlayStart <> invalid then
currFeedItem.PlayStart = PlayStart.ToInt()
endif
showVideoScreen(currFeedItem)
end for
endif
end if
else
print "Unexpected message class: "; type(msg)
end if
end while
return showIndex
End Function
Thanks
Leeladharan