I am trying to complete the "Channel behavior analysis" of the certification process. My app 99 percent of the time fails the "Focused Full-Screen Video Playback" element of the test. One time it passed, I have no idea why, but I was not ready to publish at that time so the success achieved was not useful.
The requirement is listed as 4.4 which says "4.4 Channels must keep focus on the Video node during full-screen video playback when there are no active UI components over the video. Roku reserves use of the Options ("*") button when in this state for the sole purpose of Roku system displays. Channels may use the Options button for additional in-channel options while UI components are displayed on top of the video."
Basically this is my code when the app plays a video:
m.global.videoPlayer.control = "play"
m.global.videoPlayer.visible=true
m.global.videoPlayer.setFocus(true)
I am using a globally defined video player object which I think conceivably may be the issue. My theory is that the automated system is detecting the video player's existence after the completion of the play action. I.E. play finishes, my DetailsScreen pops back up, yet the VideoPlayer is still in memory.
The "*" option overlay during playback works fine. I have not attempted to intercept it or modify the default controls in any manner during playback.
Can someone with a better grasp of this situation give me an idea what requirement 4.4 actually means beyond the code sample I have provided? Shouldn't asking for focus on the VideoPlayer during playback be sufficient?
If my theory, of the detection of the VideoPlayer is occurring after play has finished, is the issue then is it possible to discard a VideoPlayer and send it to a garbage collection operation?
In my callback which re-opens the detail screen perhaps I should set the focus of the VideoPlayer to "false?"
Thank you for any ideas/tips/hints/etc.