Cómo activar los botones de “Adelantar/Atrasar” en Roku

¿No sabes cómo atrasar o adelantar un video usando el control de Roku programáticamente (con código)?, aquí te enseño cómo.

En estos días retomé el trabajo con una “app” para Roku y realmente odio con toda mi alma Roku, y podría rantear, pero en esta ocasión les traigo cómo usar el “Adelantar/Atrasar” en Roku 10+ (o Roku 10- pero, sin modo “chido”) utilizando código obviamente.

Lo primero que me gustaría aclarar es que esta guía considera que ya implementaste el nodo “Video” y que ya tienes la funcionalidad para detectar la presión de los botones (si no, quizá luego haga un fragmento de código para enseñar cómo pero por ahora consideraremos que ya lo tienes).

Bueno, lo primero será que en tu función donde asignas el nodo “video” a una variable, algo como lo siguiente:

sub _bindComponents()
    m.video             = m.top.findNode("video")
end sub

 

Vamos a agregar la modalidad seekMode a accurate , y como esta solo funciona en Roku 10+, vamos a agregarle una condicional:

sub _bindComponents()
    m.video             = m.top.findNode("video")
    if m.video.seekMode <> invalid
       m.video.seekMode = "accurate"
    end if
end sub

De esta forma, si la versión de Roku es inferior a 10, entonces, no tronará y usará el modo “default” (o intentará acondicionarlo Roku por su propia cuenta), cabe destacar que el modo accurate lo que hace es buscar el espacio más posible dentro de los espacios del video para acomodar exactamente el tiempo que le asignemos, el modo default tiende a generar problemas ya que en este caso, busca fragmentos más amplios y por ejemplo si un fragmento está en el segundo 19 y nosotros le adelantamos desde el segundo 15, en realidad va a saltar al 19, y después si estamos en el 23 y queremos atrasar 15, el fragmento anterior es el 19 y entonces, va a atrasarse al 19, no al 8. Sí, Roku es una porquería.

Ahora bien, vamos a nuestra función que detecte la presión de los botones y agregar ahora sí la funcionalidad.

function onKeyEvent(key as string, press as boolean) as boolean
    ' aquí consideramos que ya tienes tu función lista pero, dejaremos un "ejemplo" a nuestra manera. Así que ya solo lo adaptas por tu cuenta.
    handled = false
    if press
       ' hipotéticamente aquí, debería ser algo como else if ya que antes deberías ya tener controlado lo demás
       if key = "fastforward"
          handled = true
          m.video.seek = cdbl(m.video.position + 10)
          m.video.autoplayAfterSeek = true
       else if key = "rewind"
          handled = true
          m.video.seek = cdbl(m.video.position - 10)
          m.video.autoplayAfterSeek = true
       end if
    end if
    return handled
end function

Ahora vamos a explicar un poco más el código.

Lo primero que hacemos es detectar si “controlamos” el “button click” de manera “manual”, por default “pues no”, después detectamos si se presionó el botón y posterior qué botón se presionó, básicamente esto ya deberías saberlo, pero lo dejamos igual… después si es “adelantar” o “atrasar”, aquí podrías agregar otras condicionales para “izquierda/derecha” en los botones de Roku ya que muchos controles viejos no traían esta opción (sí, así de feo nació Roku) y puedas dar mayor compatibilidad.

Para los botones “izquierda/derecha” se usa el string “left” y “right” respectivamente. Así que podría ser algo como if key = "fastforward" or key = "right" y listo (a menos claro, que tengas que los botones de “izquierda/derecha” hagan algo diferente)

Por último, lo importante, seek es el método que “buscará” por así decirlo el fragmento al cual nos queremos posicionar, dentro de este caso, le asignamos un valor “doble” (por ello el uso de la función cdbl basado en la posición actual del video agregando (para adelantar) y quitando (para atrasar) 10 segundos que es el promedio de funcionalidad, por cierto cdbl es “convert to double” básicamente) y agregamos que después de buscar la posición arranque otra vez la reproducción “adelanta 10 segundos y reproduce” básicamente.

Y listo, bastante fácil pero como la documentación de Roku es un asco y la comunidad casi inexistente… pues, henos aquí, esperando te sirva este fragmento de código.

¿Cuál es tu reacción?
+1
0
+1
1
+1
0
+1
0
+1
1
Total
0
Shares
Publicación anterior
javascript logo

Capitalizar todas las palabras con JS

Siguiente Publicación

Empezando con el SEO

Publicaciones Relacionadas