Roku SDK Documentation : Index

Space Index

0-9 ... 0 A ... 11 B ... 15 C ... 29 D ... 17 E ... 5
F ... 4 G ... 7 H ... 1 I ... 107 J ... 0 K ... 3
L ... 10 M ... 10 N ... 3 O ... 5 P ... 17 Q ... 0
R ... 133 S ... 33 T ... 18 U ... 5 V ... 2 W ... 4
X ... 2 Y ... 0 Z ... 2 !@#$ ... 0    

0-9

A

Page: Abstract Nodes
The abstract node classes are the lowest level fundamental node classes from which all SceneGraph node classes inherit their basic characteristics. As these node classes are abstract, they cannot be used in a SceneGraph application, but the SceneGraph nod
Page: Animation
Table of Contents Extends: AnimationBase Description The Animation node class provides animations of renderable nodes, by applying interpolator functions to the values in specified renderable node fields. For an animation to take effect, an Animation nod
Page: Animation Markup
Table of Contents Node Class References: Animation, SequentialAnimation, ParallelAnimation Interpolator Node References: Vector2DFieldInterpolator, FloatFieldInterpolator, ColorFieldInterpolator The following XML SceneGraph markup examples demonstrate ho
Page: Animation Nodes
This section describes the node classes that allow developers to add animation effects to their SceneGraph applications.
Page: AnimationBase
Table of Contents Extends: Node Description AnimationBase is an abstract node class that contains the fields common to the Animation, SequentialAnimation, and ParallelAnimation nodes. The purpose of the AnimationBase node class is to provide the basic fu
Page: ArrayGrid
Table of Contents Extends: Group Description The ArrayGrid node class is an abstract base class that provides functionality to the list and grid node classes that are extended from ArrayGrid. The field value settings and their effect in this abstract base
Page: Audio
Table of Contents Extends: Node Description The Audio node class plays streaming audio. The Audio node class has no built-in visual UI, but you can build your own UI for the node, including trick play, or showing an album cover or similar graphical image
Page: Audio and Video Support
It is important to understand the available encoding methods and supported formats when streaming content on Roku devices. The following information will give you a good basis and help you choose the best options for distributing content based on quality
Page: Authentication
The following pages reside under this section:
Page: Authentication and Linking
Table of Contents Purpose of this document This overview describes the typical flow and API used for registering and linking a device to an authentication service. The primary and recommended method for linking a device involves 3 main steps: 1. Display a
Page: Automatic Account Link
Table of Contents Using Automatic Account Link on the Roku Platform This document defines a mechanism and protocols for Automatic Account Link, a useful feature for channel partners using OAuth or alternate authentication protocols. Your channel can use t

B

Page: Best Practices
Performance Best Practice Rationale | Benefits Optimize your channel code to provide smooth transitions and animations Jerky or blocky transitions erode the seamlessness of the Roku user experience and feel unfinished or “broken” to users. Minimize percei
Page: Best Practices for Data Management
Table of Contents Thread Ownership of Nodes Each node is owned by the thread which created it, which might or might not be the Render thread. However, if a node interacts with the Render thread, the Render thread will automatically take ownership of that
Page: Best practices for Roku Pay
Table of Contents This list of best practices for Roku Pay is a good checklist to review your implementation. Most advice is easy to implement, and will help optimize your user acquisition funnel, provide better feedback to your customer base, and prevent
Page: Bookmarking Playback Position
Table of contents: Overview When it comes to streaming media, content bookmarking refers to the idea of recording a user's playback position on the content in your channel so that later on they will be able to continue watching from precisely where they l
Page: BrightScript Component Reference
Page: BrightScript Components
Two new BrightScript components, roSGScreen and roSGNode, have been defined to allow our SceneGraph technology to be used in scripting. Currently, a fairly strict ordering must be used in BrightScript to create a SceneGraph screen and set up its Scene nod
Page: BrightScript Language Reference
Roku BrightScript is a powerful scripting language that makes it easy and quick to build media and networked applications for embedded devices. The language has integrated support for BrightScript Components, a library of lightweight components. The APIs
Page: BrightScript Profiler
BrightScript Profiler is a tool created for collecting and analyzing channel metrics that can be used to determine where performance improvements and efficiencies can be made in the channel. Table of Contents The BrightScript profiler provides the follow
Page: BrightScript Support
Several BrightScript functions and components cannot be used in SceneGraph component scripts. Many of the BrightScript components that cannot be used provide duplicate rendering functionality as SceneGraph nodes, and cannot be used for that reason. You sh
Page: BrightScript/XML Markup Equivalence
Because the SceneGraph API includes BrightScript objects and interfaces, you have the flexibility to create SceneGraph application screens using a variety of methods. You can create the screens entirely in XML markup in the <children> element of the Scene
Page: BrightScriptDoc
Table of Contents Overview BrightScriptDoc is the BrightScript language documentation generator for inline code comments. It operates inside Roku's Eclipse plug-in, see Roku Plug-in for Eclipse IDE https://sdkdocs.roku.com/display/sdkdoc/Roku+Plugin+for+
Page: Building a channel using SceneGraph Developer Extensions
This tutorial is for building a SceneGraph Developer Extensions (SGDEX) based channel. Developers who want to build their first Roku channel, or are interested in moving their existing channel to RSG, benefit from this guide. SGDEX includes the following
Page: BusySpinner
Table of Contents Extends: Poster Description The BusySpinner node class is a simple widget that displays a continuously rotating bitmap. Since the BusySpinner node class uses an internal Poster node instance, the busy spinner bitmap can be specified by
Page: Button
Table of Contents Extends: Group Description The Button node is a simple widget that generates a buttonSelected event when the user selects it. The button can display a label and/or an icon, as well as a background image. Fields are provided to customize
Page: ButtonGroup
Table of Contents Extends: LayoutGroup Description The ButtonGroup node class manages the layout, visual attributes, and focus management of a vertical list of Button nodes. When the ButtonGroup node has focus, it sets the key focus on a single one of it

C

Page: Capturing and Decrypting SSL Packets
Table of Contents Introduction There are different ways to capture and read traffic from your Roku Streaming device. The following are some useful links: DD-WRT https://www.dd-wrt.com/site/ (If router firmware is too standard) Wireshark https://www.wiresh
Page: Channel Certification
To assure the overall quality of the Roku Platform, all public channels in the Roku Channel Store must first be reviewed for design and performance criteria before being published. This certification process also ensures that new additions to the Channe
Page: ChannelStore
Available since firmware version 7.2 Table of Contents Extends: Node Description The ChannelStore node class provides an interface to the Roku Channel Store. It provides functionality equivalent to the roChannelStore component. In general, the ChannelStor
Page: CheckList
Table of Contents Extends: LabelList Also See Related Page: List and Grids Markup - CheckList Markup Description The CheckList node class is a simple list class that displays a list of items, some of which include checkboxes that allow the user to select
Page: CheckList Markup
Example Application: CheckListExample.zip Node Class Reference: CheckList The CheckList node class allows a user to select one or more (or all) items in a list by pressing the OK remote key when the item is focused and not selected. When the item is sel
Page: children
Description The <children> element contains the SceneGraph node XML markup elements. The <children> element allows XML schema validation of your SceneGraph XML components using XSD by wrapping them in a container element (XSD requires that the order of el
Page: Closed Caption Support
Table of Contents The Roku platform supports the following closed caption formats: SMPTE-TT EIA-608/708 WebVTT SRT Overview SMPTE-TT uses TTML formatted data either in an external file or embedded into the video stream to carry the caption text, timing, a
Page: ColorFieldInterpolator
Table of Contents Extends: Node Description The ColorFieldInterpolator node class specifies a keyframe animation sequence to be applied to the color field of a node (such as the color field of a Label node). All field interpolators include a set of key/k
Page: Complete Tutorial Application
Table of Contents Finally, let's put together all the examples we've seen previously in the tutorial, to create a typical Roku SceneGraph application. As with every application, this application has a purpose. And the purpose of this application is to pre
Page: component
Table of Contents Description The <component> element defines all aspects of the component defined in a SceneGraph XML component file. Every SceneGraph XML component file must have exactly one <component> element that contains all other XML elements in th
Page: Component Architecture
Table of Contents The BrightScript Component architecture and library are separate from BrightScript, but BrightScript requires them. All APIs exposed to BrightScript are exposed as BrightScript components. In other words, if a platform wants to expose AP
Page: Component Functions
The following are the special functions that can be included in a SceneGraph XML component <script> element.
Page: Component Initialization Order
Table of Contents Instances of components defined in an XML file follow a well-defined initialization order when they are created. The <children> element nodes defined in XML markup are created, and their fields are set to their initial values, either to
Page: ComponentLibrary
Table of Contents Extends: Node Description The ComponentLibrary node class downloads a library of custom SceneGraph components to be used in an application. The ComponentLibrary node should be used in a Scene node, such as Scene or OverhangPanelSetScene.
Page: Components
Page: Conditional Compilation
Available since firmware version 7.6 Table of Contents Conditional Compilation allows boolean constants to determine whether a section of code should be compiled. Conditional compilation values are defined by the #const identifier and has the form: #c
Page: Content Meta-Data
Table of Contents Content Meta-Data describes a viewable title that will be shown to the user. Content may be any supported type of video and the meta-data is used by the UI to format and display the title to the user. Some attributes (e.g. ContentType) a
Page: Content Protection
Table of Contents DRM Although AES-128 Encryption is also supported for HLS, Roku recommends using Adobe DRM because there is no DRM when using AES-128 Encryption. PlayReady Adobe DRM Verimatrix AES-128 Widevine (BETA) HLS Y Y Y Smooth Y DAS
Page: ContentNode
Table of Contents Extends: Node Description The ContentNode node class allows you to specify the data used to configure a node or component. Many nodes and components require a ContentNode node as the specification of their content field in order to be p
Page: Control Nodes
The following node classes allow you to control the program flow in your SceneGraph application.
Page: Control Nodes Markup
Table of Contents There are some important node classes that are the key to reading your content catalog data from your server into your Roku SceneGraph application. Once you understand how to use these node classes, you'll be able to synchronize your ser
Page: Controlling Screen Layout
Screen element layout is accomplished in several different ways in SceneGraph applications: setting the translation fields of nodes or groups of nodes controlling the z-order of the renderable nodes in SceneGraph trees to place nodes over or under each ot
Page: Controlling Screen Program Flow
Table of Contents SceneGraph applications can control the flow of screen elements in the following ways: by responding to user remote control key press events by responding to changes in data, including data that configures the screen elements by changing
Page: Create a Non-Certified Channel
Table of Contents Overview of Non-Certified Channels Non-certified channels are another way to distribute channels on the Roku platform. They are not listed in the Channel Store and can only be installed using the channel access and/or vanity code(s). Non
Page: Create a Public Channel
Table of Contents Overview of Public Channels Channels in the Roku Channel Store are certified before they are made available to the public. Some of the key benefits for public channels are: Featured in the New category for 30 days after publication Displ
Page: Creating Custom Components
Table of Contents Introduction A SceneGraph application consists of one or more custom SceneGraph components defined in XML files. These component XML files define the appearance and behavior of the component as needed for the application design. Defining
Page: Creating Dialogs
The SceneGraph API contains several dialog box node classes, to allow you to bring a dialog box to the top of the display screen, that can inform the user of certain events occurring in the application, and ask for confirmation of user input choices. Dial
Page: Creating Lists and Grids
Table of Contents Lists and grids are important screen elements for the application user interface. Lists and grids allow the user to choose from a selection of items that, for example, can include the title of movie to rent or purchase, and a graphic ima
Page: Creating Sliding Panels
Table of Contents Sliding panels are a new user interface element in the SceneGraph API. Sliding panels allow the creation of sets of other elements, such as lists or grids, that are grouped into panels that can be moved left and right on and off the disp

D

Page: Debugging SceneGraph Applications
Table of Contents Special SceneGraph Debugging Commands Available since firmware version 7.2 You can use special debugging commands to debug SceneGraph applications. These commands can be invoked in the debug server from telnet port 8080 port. These comma
Page: Debugging Your Application
Testing Roku Channels involves using a debug console and access to a variety of ports. The debug console provides a window into the runtime environment and provides features such as crash logs, stack-traces and much more. Table of Contents Nested under th
Page: Deep Linking
Table of content Deep linking enables users to get to your content faster from the Roku UI via Roku's content discovery features (for example, Roku Search and Roku home screen banners). With deep linking, your channel is launched into playback or content
Page: Defining SceneGraph Components
A Roku SceneGraph application consists of one or more SceneGraph components. These SceneGraph components are defined in XML files, which consist of a required <component> XML element, that contains the other possible XML elements to fully define the compo
Page: Deprecated APIs
APIs that have been deprecated should not be used. If you use an API after it is deprecated, your channel may not pass certification https://developer.roku.com/develop/channel-store/certification. Table of Contents By removing these components from your c
Page: Design Guidelines
1.0 Guidelines Overview These guidelines are for developers who want to design and build applications for the Roku streaming player television user interface. The following are the goals of this document: Describe guidelines to consider as you design appl
Page: Designing for Device Capabilities
Every public channel on the Roku platform is certified on all currently-supported Roku models before being published. The list of supported devices includes a wide range of product classes, from our entry-level set-top-boxes to 4K HDR TVs, and everything
Page: Developer Guide
Table of Contents
Page: Developer Settings
Developer Settings contains a host of essential tools for Roku channel development: Additional references on this page: Installing or "side-loading" channels Utilities to rekey a Roku device and take screenshots Packaging channels for publication to the C
Page: Developer Setup Guide
Table of Contents Overview The first step to building channels on the Roku Platform is setting up a development environment. In this guide, we will cover the essential steps to enable Developer Settings on a Roku device. Steps: Setup your Roku device to e
Page: Developer Tools
Pages under this section:
Page: Developing SceneGraph Applications
Table of Contents Channel packages should include all the XML components they define in a top level directory named components (the top level directory in the channel application package contains the manifest file, the source directory, and so forth). Whe
Page: Development Environment Overview
Table of Contents Architectural Overview architecturecrppd.png Architecture Block Diagram The diagram above provides a high-level overview of the main system components for the Roku Streaming Player platform. Developer applications are written using the B
Page: Dialog
Table of Contents Extends: Group Description The Dialog node class defines a modal pop-up dialog used to present the user with information requiring their immediate attention. Setting the dialog field of the current Scene node to a Dialog node causes the
Page: Dialog Nodes
This section describes the various SceneGraph dialog node classes available to Roku developers.
Page: Dialogs Markup
Table of Contents Showing a modal dialog in a Roku SceneGraph Scene node is simple: Create a dialog node object Configure the dialog node object Set the Scene node dialog field to the dialog node object The dialog is dismissed if the user presses the Back
Page: Downloading Server Content
Table of Contents Various types of content material can be downloaded from your server to a SceneGraph application. Many of the renderable nodes include a uri field that allows you specify the URI of a graphical image file or other content on your server.

E

Page: Event Loops
Table of Contents Events An event is a thing like an on-screen button press, a remote button press, a video that has finished playing back, etc. When an event occurs, a "message" describing the event is created. In this documentation, we often refer to m
Page: Events
The following are links to all pages in this section:
Page: Events and Observers Markup
Table of Contents As described in SceneGraph XML Reference, there are standard event loops and functions included in the SceneGraph API for triggering actions when certain events occur. The following are a few examples that illustrate how to perform actio
Page: Expressions, Variables, and Types
Table of Contents Identifiers Identifiers (names of variables, functions, labels, or object member functions or interfaces (appear after a ".")) have the following rules. must start with an alphabetic character (a – z) or the symbol "_" (underscore) may c
Page: External Control API
Table of Contents The External Control Protocol (ECP) enables a Roku device to be controlled over a local area network by providing a number of external control services. The Roku devices offering these external control services are discoverable using SSD

F

Page: Fast Video Start
Table of Contents Available since firmware version 7.2 Fast Video Start is a user interface design technique for VOD channels that reduces the amount of time apparent to the user that the video stream buffers before actual playback begins. All digital vid
Page: File System
Table of Contents Application storage https://sdkdocs.roku.com/display/sdkdoc/File+System#FileSystem-Applicationstorage Pathnames https://sdkdocs.roku.com/display/sdkdoc/File+System#FileSystem-Pathnames Examples https://sdkdocs.roku.com/display/sdkdoc/F
Page: FloatFieldInterpolator
Table of Contents Extends: Node Description The FloatFieldInterpolator node class specifies a keyframe animation sequence to be applied to a floating point field of a node (such as, an opacity, width or height value.) All field interpolators include a se
Page: Font
Table of Contents Extends: Node Description The Font node class specifies the font to be used by a Label node, or any other nodes that render text. Nodes that use fonts include a field that stores a Font node. The font to use is specified by creating a F

G

Page: General TV UI Philosophy
Roku experience is designed for a mass market – kids, through adults. One day most TVs in the world will have Roku. We need to keep in mind that television displays are communal and different from computers, phones, and tablets. For starters, people lean
Page: Global Math Functions
Table of Contents The following math functions are part of global. Trig functions use or return radians, not degrees. Abs(x as Float) as Float Returns the absolute value of the argument. Atn(x as Float) as Float Returns the arctangent (in radians) of the
Page: Global String Functions
Table of Contents UCase(s as String) as String Converts the string to all upper case. print UCase("Hello") ' prints: HELLO LCase(s as String) as String Converts the string to all lower case. print LCase("Hello") ' prints: hello Asc(letter as String) as
Page: Global Utility Functions
Table of Contents BrightScript has a set of standard, module scope, functions. These functions are stored in the global object. If the compiler sees a reference to one of the global functions, it directs the runtime to call the appropriate global object m
Page: Graphics
Channel Poster The Channel Poster is the image shown on the Roku OS home screen when your channel is installed and is also used in your Channel Store listing displayed alongside the channel details. channel-poster.png Channel Splash Screen Splash screens
Page: GridPanel
Table of Contents Extends: Panel Description The GridPanel node class allows you to easily create a Panel that adheres to the Roku layout and behavior for panels that contain a PosterGrid or MarkupGrid node. The GridPanel node class provides the followin
Page: Group
Table of Contents Extends: Node Description Group is the base class of all renderable nodes. Group also provides fields that control the transformation, visibility and opacity of themselves and all of their children. Each Group defines a local coordinate

H

Page: Handling Application Events
Table of Contents Observer Callback Models Firmware v7.5 introduces a fundamental change in the observer callback model changing from a queued or deferred model to a more intuitive and expected recursive callback model. Queued Callback Model In firmware

I

Page: Ideal Channel Features
While attraction and retention of users will primarily come from filling your channel with great content, the ability for the user to easily interact with your channel will create a delightful association with your channel and keep the user coming back. E
Page: ifAppInfo
Implemented By roAppInfo Supported Methods Description of Methods GetID() As String Returns the app's channel ID, e.g. "12345" or "dev". IsDev() As Boolean Returns true if the application is side-loaded, i.e. the channel ID is "dev". GetVersion() As Strin
Page: ifAppManager
Implemented By roAppManager Supported Methods Description of Methods SetTheme(attributeArray as Object) as Void Set a group of theme attributes for the application. The attributeArray is an roAssociativeArray of attribute/value pairs. The program may crea
Page: ifArray
ifArray supports the array operator[] (See Array Operator) Implemented By roArray roByteArray roList roXMLList Supported Methods Description of Methods Peek() As Dynamic Returns the last (highest index) array entry without removing it. If the array is em
Page: ifArrayGet
The ifArrayGet interface supports the array indexing operator [ ] (See Array Operator.) Implemented By roArray roByteArray roList roXMLList Supported Methods Description of Methods GetEntry(index As Integer) As Dynamic Returns an Array entry of a given in
Page: ifArrayJoin
Implemented By roArray Supported Methods Description of Methods Join(separator as String) as String Creates a string by joining all array elements together separated by the specified separator. All elements must be of type string, otherwise an empty str
Page: ifArraySet
The ifArraySet interface supports the array indexing operator [ ]. (See ArrayOperator.) Implemented By roArray roByteArray roList roXMLList Supported Methods Description of Methods SetEntry(index As Integer, tvalue As Dynamic) As Void Sets an entry at a g
Page: ifArraySort
Implemented By roArray Supported Methods Description of Methods Sort(flags as String = "") as Void Performs a stable sort. Items are arbitrarily grouped by comparable type of number or string, and are sorted within the group with a logical comparison. I
Page: ifAssociativeArray
Implemented By roAssociativeArray roSGNode Supported Methods Description of Methods AddReplace(key as String, value as Dynamic) as Void Add a new entry to the array associating the supplied value with the supplied key string. Only one value may be associa
Page: ifAudioGuide
Available since firmware version 7.5 Please note this component is only available on the following devices: Roku Streaming Stick (3600X), Roku Express (3700X) and Express+ (3710X), Roku Premiere (4620X) and Premiere+ (4630X), Roku Ultra (4640X), and any R
Page: ifAudioMetadata
Implemented By roAudioMetadata Supported Methods Description of Methods SetUrl(url as String) as Void Sets the URL to the audio file. Only file URLs are initially supported. GetTags() as Object Returns an associative array that contains a simple set of ta
Page: ifAudioPlayer
Implemented By roAudioPlayer Supported Methods Descriptions of Methods SetContentList(contentList as Object) as Void Set the content list to be played by the Audio Player. The caller passes an Array of AssociativeArrays (Content Meta-Data objects) represe
Page: ifAudioResource
Implemented By roAudioResource Supported Methods Description of Methods Trigger(volume as Integer) as Void This method triggers the start of the audio resource sound playback. The volume is a number between 0 and 100 (percentage of full volume). 50 shou
Page: ifBoolean
Interface equivalent for intrinsic type Boolean Implemented By roBoolean Supported Methods Description of Methods GetBoolean() As Boolean SetBoolean(value As Boolean) As Void
Page: ifByteArray
Implemented By roByteArray Supported Methods Description of Methods WriteFile(path as String) As Boolean Writes the bytes contained in the Byte Array to the specified file. Returns true if successful. WriteFile(path as String, start_index as Integer, leng
Page: ifCaptionRenderer
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifChannelStore
The query methods (GetCatalog, GetStoreCatalog, GetPurchases and GetUpgrade) return information about products in the Channel Store. These are asynchronous methods. The method call returns immediately, and the requested information is returned later in an
Page: ifCodeRegistrationScreen
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifCompositor
Implemented By roCompositor Supported Methods Description of Methods SetDrawTo(destBitmap as Object, rgbaBackground as Integer) as Void Set the destBitmap (roBitmap or roScreen) and the background color. Draw() as Void Draw any dirty sprites (that is, wha
Page: ifDateTime
This interface is known as ifRoDateTime in some firmware versions. Implemented By roDateTime Supported Methods Description of Methods Mark() as Void Set the date/time value to the current UTC date and time. Note: roDateTime objects are automatically Marke
Page: ifDeviceCrypto
Implemented By roDeviceCrypto Supported Methods Description of Methods Encrypt (input as roByteArray, String as encType) as roByteArray Encrypts data on a device that is unique per device, channel, or model. This method takes a roByteArray with the data t
Page: ifDeviceInfo
Implemented By roDeviceInfo Supported Methods Device Properties GetModel() as String Returns the model name for the Roku Streaming Player device running the script. This is a five-character alphanumeric string; for example, "3050X". Please see Roku Model
Page: ifDouble
Interface equivalent for intrinsic type Double Implemented By roDouble Supported Methods Description of Methods GetDouble() As Double SetDouble(value As Double) As Void
Page: ifDraw2D
Coordinates (x,y) for this interface are based on an origin (0,0) at the top, left. (This is common for 2D drawing APIs, but is different than OpenGL's default coordinate system). Bitmap pixel values and color values are always represented as 32-bit integ
Page: ifEnum
The ifEnum supports enumeration over a set. It can be used with the FOR EACH statement (FOR EACH) Implemented By roArray roAssociativeArray roByteArray roList roMessagePort roXMLList Supported Methods Description of Methods Reset() as Void Resets the cur
Page: ifEVPCipher
Implemented By roEVPCipher Supported Methods Description of Methods Setup(encrypt as Boolean, format as String, key as String, iv as String, padding as Integer) as Integer Setup and initialize a new cipher context. The Setup function takes the following p
Page: ifEVPDigest
Implemented By roEVPDigest Supported Methods Description of Methods Setup(digestType as String) as Integer Initialize a new message digest context. digestType identifies one of the supported digest algorithms from openssl, listed at roEVPDigest Reinit()
Page: ifFileSystem
Implemented By roFileSystem Supported Methods The format of file and directory pathnames is described on the File System page. Description of Methods GetVolumeList() as Object Returns an roList containing Strings representing the available volumes. Volu
Page: ifFloat
Interface equivalent for intrinsic type Float Implemented By roFloat Supported Methods Description of Methods GetFloat() As Float SetFloat(value As Float) As Void
Page: ifFont
Implemented By roFont Supported Methods Description of Methods GetOneLineHeight() as Integer Returns the number of pixels from one line to the next when drawing with this font. GetOneLineWidth(text as String, MaxWidth as Integer) as Integer Returns the wi
Page: ifFontMetrics
This interface is deprecated. Developers should use roFont methods (GetOneLineHeight and GetOneLineWidth). Implemented By roFontMetrics (deprecated) Supported Methods Description of Methods Size(stringToDraw as String) as Object Returns an roAssociativeA
Page: ifFontRegistry
Implemented By roFontRegistry Supported Methods Description of Methods Register(path as String) as Boolean Register a font file (.ttf or .otf format). Each font file defines one or more font families (usually one). Path should be a valid path name (see F
Page: ifFunction
Interface equivalent for intrinsic type Function Implemented By roFunction Supported Methods Description of Methods GetSub() As Function SetSub(value As Function) As Void
Page: ifGetMessagePort
Implemented By roHdmiStatus roScreen roUrlTransfer roTextToSpeech roOptionMenu https://sdkdocs.roku.com/display/sdkdoc/roOptionMenu Supported Methods Description of Methods GetMessagePort() as Object Returns the message port (if any) currently associated
Page: ifGridScreen
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifHdmiStatus
Implemented By roHdmiStatus Supported Methods Description of Methods IsConnected() as Boolean Returns true if the HDMI or MHL output is connected to an HDMI device. GetHdcpVersion() as String Returns the version number of the currently established HD
Page: ifHMAC
Implemented By roHMAC Supported Methods Description of Methods Setup(digestType as String, key as Object) as Integer Initialize new HMAC context. The digestType parameter selects one of the supported digest algorithms, as documented in roEVPDigest.
Page: ifHttpAgent
The ifHttpAgent methods modify the way that URLs are accessed. Implemented By roAppManager roAudioPlayer roGridScreen roImageCanvas roListScreen roParagraphScreen roPosterScreen roSGNode roSlideShow roSpringboardScreen roTextScreen roTextureManager roText
Page: ifImageCanvas
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifImageMetadata
Implemented By roImageMetadata Supported Methods Description of Methods SetUrl(url as String) as Void Set the URL to the image. Only file urls are supported. GetMetadata() as Object Returns an associative array with set of simple and common image metadata
Page: ifInput
Implemented By roInput Supported Methods Description of Methods GetMessagePort() as Object Returns the message port (if any) currently associated with the object. SetMessagePort(port as Object) as Void Set the roMessagePort to be used to receive events.
Page: ifInt
Interface equivalent for intrinsic type 'Integer'. Implemented By roInt Supported Methods Description of Methods GetInt() As Integer SetInt(value As Integer) As Void
Page: ifIntOps
Implemented By roInt Supported Methods Description of Methods ToStr() As String Returns the integer value formatted as a decimal string. Note: unlike the StrI function, no leading space is appended for non-negative numbers. Example: 5.ToStr() = "5", (-5)
Page: ifKeyboardScreen
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifList
IfList represents an ordered collection and is a built-in datatype in BrightScript. Implemented By roList roXMLList Supported Methods Description of Methods ResetIndex() As Boolean Reset current index or position in list to the head element. AddTail(tval
Page: ifListScreen
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifListToArray
Implemented By roList roXMLList Supported Methods Description of Methods ToArray() As Object Returns an roArray containing the same elements as the list. This function is available in firmware 8.0 or later.
Page: ifLocalization
Implemented By roLocalization Supported Methods Description of Methods GetPluralString(count as Integer, zeroString as String, oneString as String, pluralString as String) as String If count is 0, this returns zeroString. If count is 1, it returns oneStr
Page: ifLongInt
Interface equivalent for intrinsic type LongInteger. Implemented By roLongInteger Supported Methods Description of Methods GetLongInt() As LongInteger SetLongInt(value As LongInteger) As Void
Page: ifMessageDialog
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifMessagePort
Implemented By roMessagePort Supported Methods Description of Methods WaitMessage(timeout as Integer) as Dynamic Waits until an event object is available or timeout milliseconds have passed. If an event is available, it is returned. If the timeout expir
Page: ifMicrophone
Available since firmware version 7.6 Implemented By roMicrophone Supported Methods Description of Methods CanRecord() as Boolean Returns true if the platform and paired remote control can be requested to open the microphone. SetPrompt(prompt as String) as
Page: ifOneLineDialog
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifParagraphScreen
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifPath
Implemented By roPath Supported Methods Description of Methods Change(path as String) as Boolean Modify or change the current path via the relative or absolute path passed as a string Returns true if the resulting path is valid. IsValid() as Boolean Retur
Page: ifPinEntryDialog
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifPosterScreen
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifRegex
Please see the PCRE documentation (http://www.pcre.org/ http://www.pcre.org/) for documentation on the PCRE library used for regular expression matching. See the perlre man page http://perldoc.perl.org/perlre.html for complete documentation of the possib
Page: ifRegion
Implemented By roRegion Supported Methods Description of Methods GetBitmap() as Object Returns the roBitmap object of the bitmap this region refers to. A region is always a section of a bitmap. GetX() as Integer Returns the x coordinate of the region in i
Page: ifRegistry
Implemented By roRegistry Supported Methods Description of Methods GetSectionList() as Object Returns an roList with one entry for each registry section. Each element in the list is an roString containing the name of the section. The section itself can
Page: ifRegistrySection
Implemented By roRegistrySection Supported Methods In all ifRegistrySection methods, the key name is case-sensitive. Two keys which differ only in case may exist at the same time. Description of Methods Read(key as String) as String Reads and returns the
Page: ifRoSGScreen
Available since firmware version 7.0 The ifRoSGScreen interface allows creation and initialization of a SceneGraph scene. Implemented by roSGScreen Supported Methods Description of Methods CreateScene(sceneType as String) as Object Creates the SceneGraph
Page: ifRSA
Implemented By roRSA Supported Methods Description of Methods SetPrivateKey(keyFileName as String) as Integer Specify the private key to use for signing. The file name should specify a path, either in the package or a temp path. Returns 1 if the key is v
Page: ifScreen
Implemented By roScreen Supported Methods Description of Methods SwapBuffers() as Void This function first operates the same as a call to ifDraw2D.Finish(), completing all queued drawing operations on the back buffer (draw surface). If the screen is singl
Page: ifSearchHistory
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifSearchScreen
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifSetMessagePort
Implemented By roHdmiStatus roScreen roUrlTransfer roTextToSpeech roOptionMenu Supported Methods Description of Methods SetMessagePort(port as Object) as Void Set the roMessagePort to be used for all events from the screen.
Page: ifSGNodeBoundingRect
Table of Contents Introduction Available since firmware version 7.0 The ifSGNodeBoundingRect interface can be used to query the bounding rectangle of subject node. The ifSGNodeBoundingRect interface methods return a node bounding rectangle as an associati
Page: ifSGNodeChildren
Table of Contents Available since firmware version 7.0 The ifSGNodeChildren interface allows querying and manipulation of nodes in a SceneGraph node tree, such as creating new nodes, placing them at certain positions in the tree, and removing them. Note t
Page: ifSGNodeDict
Available since firmware version 7.0 The ifSGNodeDict interface allows you access information about the nodes in a SceneGraph node tree, and find and return a node with a specific ID. Implemented By roSGNode Supported Methods Description of Methods findN
Page: ifSGNodeField
Available since firmware version 7.0 The ifSGNodeField interface allows querying, getting, setting, and performing other similar manipulation operations on Scene Graph node fields. This interface also allows you to set and unset event observers on a subje
Page: ifSGNodeFocus
Available since firmware version 7.0 The ifSGNodeFocus interface is used to query and manipulate the remote control focus of the nodes in a SceneGraph node tree. Implemented by roSGNode Supported Methods Description of Methods setFocus(on as Boolean) as
Page: ifSGNodeHttpAgentAccess
Available since firmware version 7.2 The ifSGNodeHttpAgentAccess interface allows you to get an roHttpAgent object from a SceneGraph node, and set an roHttpAgent object for a node. Implemented By roSGNode Supported Methods Description of Methods getHttpAg
Page: ifSlideShow
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifSocket
Implemented By roDataGramSocket roStreamSocket Supported Methods Description of Methods These are the basic binding and data transfer operations used on both roStreamSocket and roDataGramSocket. They are synchronous or asynchronous as determined by the so
Page: ifSocketAddress
Implemented By roSocketAddress Supported Methods Description of Methods SetAddress(address as String) as Boolean Sets the IPV4 address to the string. The string consists of a hostname, optionally followed by a colon and a decimal port number. The hostnam
Page: ifSocketAsync
Implemented By roDataGramSocket roStreamSocket Supported Methods Description of Methods The ifSocketAsync interface provides asynchronous socket features that utilize a full-featured select loop in the firmware that communicates to the application using a
Page: ifSocketCastOption
Implemented By roDataGramSocket Supported Methods Description of Methods Only the roDataGramSocket component supports the ifSocketCastOption multicast interface. The roStreamSocket component does not support multicast. GetBroadcast() as Boolean Return tru
Page: ifSocketConnection
Implemented by roStreamSocket Supported Methods Description of Methods Each of these operations except listen() is either synchronous or asynchronous as determined by the socket's blocking behavior. If there is a valid assigned roMessagePort, the blocking
Page: ifSocketConnectionOption
Implemented By roStreamSocket Supported Methods Description of Methods GetKeepAlive() as Boolean Return true if keep alive is set. SetKeepAlive(enable as Boolean) as Boolean Enable keep alive if enable is true, otherwise disable it. If keep alive set, occ
Page: ifSocketConnectionStatus
Implemented By roStreamSocket Supported Methods Description of Methods eConnAborted() as Boolean Return true if errno is ECONNABORTED. eConnRefused() as Boolean Return true if errno is ECONNREFUSED. eConnReset() as Boolean Return true if errno is ECONNRES
Page: ifSocketOption
Implemented By roDataGramSocket roStreamSocket Supported Methods Description of Methods GetTTL() as Integer Return the integer TTL (Time To Live) value for all IP packets on the socket. SetTTL(ttl as Integer) as Boolean Set the integer TTL (Time To Live)
Page: ifSocketStatus
Implemented By roDataGramSocket roStreamSocket Supported Methods Description of Methods eAgain() as Boolean Return true if errno is EAGAIN. eAlready() as Boolean Return true if errno is EALREADY. eBadAddr() as Boolean Return true if errno is EBADADDR. eDe
Page: ifSourceIdentity
Implemented By roChannelStoreEvent roUrlEvent Supported Methods Description of Methods GetSourceIdentity() as Integer Return the id currently associated with this source (event generating) or event object.
Page: ifSpringboardScreen
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifSprite
Implemented By roSprite Supported Methods Description of Methods MoveTo(x as Integer, y as Integer) as Void Move the sprite to coordinate x,y. MoveOffset(xOffset as Integer, yOffset as Integer) as Void Move the sprite to the current position plus the xOf
Page: ifString
Implemented by roChannelStoreEvent roPath roString roUrlEvent Supported Methods Description of Methods Interface equivalent for intrinsic type String. Also implemented by selected objects that can return a string representation. GetString() As String SetS
Page: ifStringOps
Implemented By roString Supported Methods Description of Methods ifStringOps provides various methods for manipulating string objects. Some of these duplicate functionality also available in the global string functions http://sdkdocs.roku.com/display/sdk
Page: ifSystemLog
Table of Contents Implemented By roSystemLog Supported Methods Description of Methods EnableType(logType as String) as Void Enables log message of type logType. When a log type is enabled, system log messages of that type are sent to the message port whic
Page: ifTextScreen
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifTextToSpeech
Please note this component is only available on the following devices: Roku Streaming Stick (3600X), Roku Express (3700X) and Express+ (3710X), Roku Premiere (4620X) and Premiere+ (4630X), Roku Ultra (4640X), and any Roku TV running Roku OS version 7.2 an
Page: ifTextureManager
Implemented By roTextureManager Supported Methods Description of Methods RequestTexture(req as Object) as Void req should be an roTextureRequest. Makes a request for an roBitmap with the attributes specified by the roTextureRequest. The roTextureManager
Page: ifTextureRequest
Implemented By roTextureRequest Supported Methods Description of Methods GetId() as Integer Returns a unique id for the request. GetState() as Integer Returns the state of the request. Value State 0 Requested 1 Downloading 2 Downloaded 3 Ready 4 Failed 5
Page: ifTimespan
Implemented By roTimespan Supported Methods Description of Methods Mark() as Void Sets the "Mark" point to the current time. The Mark point is also automatically set to the current time when an roTimespan object is created. TotalMilliseconds() as Integer
Page: ifToStr
Implemented By roBoolean roDouble roFloat roFunction roInt roInvalid roLongInteger roString Supported Methods Description of Methods ToStr() As String Returns the value as a string. This is available in firmware 7.0 or later.
Page: ifUrlTransfer
Implemented By roUrlTransfer Supported Methods Note on asynchronous methods Each roUrlTransfer object can perform only one asynchronous operation at one time. After starting an asynchronous operation, you cannot perform any other data transfer operations
Page: ifVideoPlayer
Implemented By roVideoPlayer Supported Methods Description of Methods SetContentList(contentList as Object) as Void Set the content to be played by the roVideoPlayer. The caller passes an roArray of roAssociativeArrays (Content Meta-Data objects) represen
Page: ifVideoScreen
This interface is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: ifXMLElement
Because BrightScript has support for parsing XML built in to the language, it is often more convenient to use those features rather than ifXMLElement methods. See BrightScript XML Support for more details. Implemented By roXMLElement Supported Methods De
Page: ifXMLList
Implemented By roXMLList Supported Methods Description of Methods GetNamedElements(name As String) As Object Returns a new XMLList that contains all roXMLElements that matched the passed in name. This is the same as using the dot operator on an roXMLList.
Page: Implementing Server-Side Ad Insertion Using Roku Adapters
Overview The Roku Ad Framework (RAF) is responsible for a consistent ad experience across the Roku platform. For channels that implement ads using server-side ad insertion (SSAI), this can prove challenging due to some intricate steps of the process. Deve
Page: Implementing transport controls
Table of Contents Transport controls enable your channel to handle voice commands from the Roku voice remote, Roku mobile app, or a virtual assistant such as Amazon Alexa or Google Assistant. With transport controls, your channel can respond to voice comm
Page: Index
Page: init()
Syntax sub init() ... end sub Synopsis Allows initialization and other scripted control of a SceneGraph XML component. Description If the <script> element contains the definition of a function named init() that has no parameters, that function will be
Page: Integrating the Roku Advertising Framework
Getting Started The RAF library is intended to allow developers to focus their effort on the core design of their applications, and provide them with the ability to quickly and easily integrate video advertising features with minimal impact to the rest of
Page: interface
Table of Contents Description The <interface> element defines a set of fields to be exposed by a component, to allow instances of the component to be manipulated externally to the component, while hiding details of the component implementation, in much th
Page: Interfaces

J

K

Page: Key Design Principles
A UI is invisible when users remain focused on their goal of navigating and watching the content instead of figuring out how to use or operate the UI. An invisible UI never draws any unnecessary attention to itself; it's effortless to use because everythi
Page: Keyboard
Table of Contents Extends: Group Description The Keyboard node class allows a user to enter a string of alphanumeric characters. The string entered is displayed in a TextEditBox node that is part of the Keyboard node. The Keyboard node must have the key
Page: KeyboardDialog
Table of Contents Extends: Dialog Description The KeyboardDialog node class is a special type of Dialog node that prompts the user to enter an alphanumeric text string. The KeyboardDialog node class includes an interrnal Keyboard node to allow the user t

L

Page: Label
Table of Contents Extends: Group Description The Label node class is used to display a string of text. The Label node class supports many options including: Specifying the color of the font Specifying the font to be used by specifying a TrueType/OpenType
Page: LabelList
Table of Contents Extends: ArrayGrid Also See Related Page: List and Grids Markup - LabelList Markup Description The LabelList node class is a simple list class that can be used to display a list of items. Each item can include a text string and an option
Page: LabelList Markup
Example Applications: LabelListExample.zip https://sdkdocs.roku.com/download/attachments/4262893/LabelListExample.zip?version=2&modificationDate=1471018798839&api=v2, LabelListFocusStyleExample.zip https://sdkdocs.roku.com/download/attachments/4262893/L
Page: Layout/Group Nodes
The following node classes allow you group and arrange sets of renderable node classes.
Page: Layout/Groups Markup
Table of Contents There are a few Roku SceneGraph node classes that group screen sub-elements together to allow them to be used as a group: ButtonGroup LayoutGroup ButtonGroup Markup Example Application: ButtonGroupExample.zip Node Class Reference: Button
Page: LayoutGroup
Table of Contents Extends: Group Description The LayoutGroup node class manages the position of its child nodes by arranging them in a row from left to right (horizontal layout), or in a column from top to bottom (vertical layout). Fields provide options
Page: List and Grid Nodes
The following are the list and grid node classes included in the SceneGraph API.
Page: ListPanel
Table of Contents Extends: Panel Description The ListPanel node class allows you to easily create a Panel that adheres to the Roku layout and behavior for panels that contain a LabelList or MarkupList node. The ListPanel provides the following functional
Page: Lists and Grids Markup
Overview The lists and grids node classes are the foundation of a Roku SceneGraph user interface. You want to carefully select and configure a list or grid node class, and integrate it into your user interface design. You have the following list and grid
Page: Loading and Running Your Application
Table of Contents Enabling Development Mode on your box Before you are able to load a development application to your box, you must enable development mode on your Roku Streaming device. Development mode can be enabled only on a linked device. Your device

M

Page: MarkupGrid
Table of Contents Extends: ArrayGrid Also See Related Page: List and Grids Markup - MarkupGrid Markup Description The MarkupGrid node class is a is a generic grid class that can be used to display a set of items arranged into a 2D grid. The contents of
Page: MarkupGrid Markup
Example Application: MarkupGridExample.zip Node Class Reference: MarkupGrid The MarkupGrid node class uses the same methods as the MarkupList node class to create a custom grid item appearance. In MarkupGridExample.zip, we use the same grid content meta
Page: MarkupList
Table of Contents Extends: ArrayGrid Also See Related Page: List and Grids Markup - MarkupList Markup Description The MarkupList node class is a generic list class that can be used to display a list of items. The contents of each list item is an instanc
Page: MarkupList Markup
Example Application: MarkupListExample.zip Node Class Reference: MarkupList The MarkupList node class provides a customizable list that can include multiple graphic images and labels, in virtually any type of design and configuration for the list items.
Page: MaskGroup
Table of Contents Extends: Group Description The MaskGroup node class allows an alpha mask bitmap to be applied to the rendering of its children. This allows effects such as having a list fade out at the bottom to be easily created. MaskGroup nodes do no
Page: Measuring channel performance
Table of Contents Beginning with Roku OS 9.1, you can measure the performance of your channel to verify that it meets Roku's performance benchmark certification requirements https://developer.roku.com/develop/channel-store/certification#3performance. The
Page: Media Playback Markup
Table of Contents Finally, let's see how to play streaming media files in a Roku SceneGraph application. We just have to add one of the following media playback nodes to the application (or maybe both): Audio Video These two media playback nodes both have
Page: Media Playback Nodes
The following are the node classes that provide media playback.
Page: MiniKeyboard
Table of Contents Extends: Group Description The MiniKeyboard node class allows a user to enter a string of letters and numerals. The string entered is displayed in a TextEditBox node that is part of the MiniKeyboard node. The MiniKeyboard node is intend
Page: Monetization in Developer Dashboard
Table of Contents Using the Developer Dashboard to Set Up Monetization The in-channel purchasing or pay-to-install products you want applied to your channel are chosen in Developer Dashboard prior to implementing the code. For developers new to Roku devel

N

Page: Node
Table of Contents Description The abstract base class of all SceneGraph nodes and the equivalent of the BrightScript roSGNode component. See roSGNode for supported interfaces. Node class objects do not draw anything and are skipped in the render traversal
Page: Node Field Observers
All node and component fields can have observers attached to them. These observers continuously monitor the state of the specified field, and if the field changes, a specified callback function is triggered to perform an action in response to the field st
Page: Non-Certified Channels
The Roku platform supports both public and non-certified channel. Public channels are published in the Roku Channel Store and discoverable from the Search feature on the Roku home page. Non-certified channel, however, are used for QA and beta testing pur

O

Page: onKeyEvent()
Syntax function onKeyEvent(key as String, press as Boolean) as Boolean ... end function Synopsis The onKeyEvent() function receives remote control key events from the firmware, and allows you to write event handlers for a node or component in response t
Page: Optimization Techniques
Table of Contents SGNode Initialization Offload Initialization. Keep init() in the main scene and its static children as minimal as possible. Having too much "upfront" initialization will cause the channel to take a long time loading the main scene. Leave
Page: Other Inherited Properties
In addition to inheriting a transform matrix from its parent, each node in the SceneGraph also inherits visibility and opacity information. (Opacity is the opposite of transparency: 75% opacity is the same as 25% transparency.) The visible field stores a
Page: Overhang
Table of Contents Extends: Group http://sdkdocs.roku.com/display/sdkdoc/Group Description The Overhang node provides a information bar that is displayed at the top of a screen in many Roku channels. The regions occupied by the overhang can be filled with
Page: OverhangPanelSetScene
Table of Contents Extends: Scene Description The OverhangPanelSetScene node class provides a convenient way to create a Scene node that has set with default Overhang and PanelSet nodes. The layout of the Overhang and PanelSet use the default sizes for SDK

P

Page: Packaging Roku Channels
Publishing on the Roku Channel Store requires several core items — such as source code, images, and fonts — to be "packaged." This enables developers to publish channels while keeping all intellectual property safely encrypted. The process of “packaging a
Page: Panel
Table of Contents Extends: Group Description The Panel node is used to create sliding panels for channel UI, similar to those in the Roku OS home screen, Fields Field Type Default Use panelSize string narrow Write-Only Specifies one of the default panel
Page: PanelSet
Table of Contents Extends: Group Description The PanelSet node provides the panel sliding behavior seen in the Roku home screen. The PanelSet node manages the position of a set of child Panel nodes, and implements the left and right panel sliding behavio
Page: ParallelAnimation
Table of Contents Extends: AnimationBase Description The ParallelAnimation node class allows you to specify that a set of animations should occur simultaneously. The children of a ParallelAnimation node specify the set of animations to be executed. Note
Page: ParentalControlPinPad
Available since firmware version 8. Description ParentalControlPinPad is a variant of the PinPad component https://sdkdocs.roku.com/display/sdkdoc/PinPad, although it does have a few key differences: The pin, pinLength, and secureMode fields are made priv
Page: Performance FAQ
Table of Contents To find exactly what you are looking for, you may use your browser "FIND" button to locate an item on this page. Question Answer Can I have a background video playing in my channel navigation screen? Yes. A common channel design is to
Page: PinDialog
Table of Contents Extends: Dialog Description The PinDialog node class is a special type of Dialog node that prompts the user to enter a numeric string. The PinDialog node class includes an internal PinPad node to allow the user to input a numeric value,
Page: PinPad
Table of Contents Extends: Group Description The PinPad node is a simple widget that allows you to enter a fixed length numeric string. The string that is entered is displayed in a set of boxes above the PinPad node keyboard, with each box displaying a s
Page: Playing Videos
Table of Contents Playing any type of video requires just one SceneGraph node class: Video. To play a video, you must first prepare the files to be served to the Roku Player: the video files must have been encoded in one of the formats supported by a Roku
Page: Poster
Table of Contents Extends: Group Description The Poster node class draws an image with the top/left corner located at the origin of the node local coordinate system. Because the Poster node class extends the Group node class, a Poster node can have child
Page: PosterGrid
Table of Contents Extends: ArrayGrid Also See Related Page: List and Grids Markup - PosterGrid Markup Description The PosterGrid node is a simple grid class that can be used to display two-dimensional grids of posters. In addition to the poster, each ite
Page: PosterGrid Markup
Example Application: PosterGridExample.zip Node Class Reference: PosterGrid The PosterGrid node class shows a grid of graphic images that allow a user to select a content item or option from the grid. The postergridscene.xml component file in PosterGrid
Page: Prioritizing authenticated channels in Roku Search
Overview The Roku Event Dispatcher (RED) is a simple library that allows channels to share in-channel user behaviors and events with Roku. This document describes the uses cases for prioritizing channels in search results and tracking sign-up abandonment.
Page: Processing Power
Overview If your channel is experiencing low frame rate or laggy transitions, Processing Power is probably the culprit. The difference in CPU between the low end and high end Roku device is large, and will likely only continue to grow as new models are re
Page: Program Statements
Table of Contents DIM name (dim1, dim2, …, dimK) DIM ("dimension") is a statement that provides a short cut to creating roArray objects. It sets variable name to type "roArray", and creates Arrays of Arrays as needed for multi-dimensional arrays. The dime
Page: ProgressDialog
Table of Contents Extends: Dialog Description The ProgressDialog node class is a special type of Dialog node that includes the dialog title region and a spinning icon as the body of the dialog. The ProgressDialog node class uses a BusySpinner node to dis
Page: Publishing Roku Channels
Once a Roku channel has been designed, developed and thoroughly tested - the final step is publishing on the Roku platform. The following guide goes over the channel distribution models available on the Roku platform and how to:

Q

R

Page: RadioButtonList
Table of Contents Extends: LabelList Also See Related Page: List and Grids Markup - RadioButtonList Markup Description The RadioButtonList node class is a simple list class that can be used to display a list of mutually exclusive radio buttons. Each item
Page: RadioButtonList Markup
Example Application: RadioButtonListExample.zip Node Class Reference: RadioButtonList Overview The RadioButtonList node class provides a list where a single list item can be exclusively selected by pressing the OK remote key when the item is focused. Wh
Page: Rectangle
Table of Contents Extends: Group Description The Rectangle node class draws a solid color rectangle with the top/left corner of the rectangle drawn at the origin of the node local coordinate system. Because the Rectangle node class extends the Group node
Page: Remote Control Buttons
The Roku remote is unique to our platform, with a specific set of buttons each triggering different commands. Some buttons, like the dPad, are likely familiar to any user or developer. Other buttons, like the Instant Replay or Star buttons, might seem a l
Page: Remote Control Events
The SceneGraph architecture supports a notion of remote control key focus. At any time, any node in the SceneGraph node tree can be assigned the remote control key focus. The node with key focus is unique, so when focus is assigned to a node, the currentl
Page: Renderable Node Markup
Table of Contents How to Create and Display Node Classes on the Screen As described in SceneGraph XML Guide, there are three basic renderable node classes (node classes that draw on the display screen): Rectangle Label Poster Rectangle Markup Example Appl
Page: Renderable Nodes
This section contains details of the fundamental SceneGraph node classes that can render to the screen. The rendered screen elements of all SceneGraph API node classes are derived from these fundamental renderable node classes.
Page: Reserved Words
Like other programming languages, BrightScript has a number of reserved words that have specific meanings to the Roku platform. These words cannot be used for other purposes in your channels. These words include: And Box CreateObject Dim Each Else ElseI
Page: roAppInfo
roAppInfo returns information about the application. Supported Interfaces ifAppInfo Description roAppInfo retrieves the developer ID, which can be useful during development. It also retrieves manifest values, such as the title and version number, avoiding
Page: roAppManager
The Application Manager APIs set application level attributes, which mostly affect the look-and-feel of the application. The use of screen styles gives each application a consistent look-and-feel, but it's often desirable to customize attributes such as c
Page: roArray
An array stores an indexed collection of BrightScript objects. Each entry of an array can be a different type, or they may all of the same type. Supported Interfaces ifArray ifArrayGet ifArraySet ifEnum ifArrayJoin ifArraySort Description An roArray is cr
Page: roAssociativeArray
An associative array (also known as a map, dictionary or hash table) allows objects to be associated with string keys. Associative arrays are built into the language. They can be accessed implicitly by using the dot or bracket operators, or by calling fun
Page: roAudioGuide
Available since firmware version 7.5 This component is only available on the following devices: Roku Streaming Stick (3600X), Roku Express (3700X) and Express+ (3710X), Roku Premiere (4620X) and Premiere+ (4630X), Roku Ultra (4640X), and any Roku TV runni
Page: roAudioMetadata
The roAudioMetadata component provides developers access to audio file metadata included in many audio files. This should enable some audiofiles to deliver the information needed to fill out an roSpringboard screen without passing the info in a separate x
Page: roAudioPlayer
The Audio Player object provides the ability to setup the playing of a series of audio streams. The object accepts an array of content meta-data objects, describing the audio and providing url's for accessing each stream. The component understands the fol
Page: roAudioPlayerEvent
The roAudioPlayer sends the roAudioPlayerEvent with the following predicates that indicate its valid event types: isListItemSelected() as Boolean A stream has been selected to start playing. GetIndex() as Integer Returns index of audio stream. isStatusMes
Page: roAudioResource
The roAudioResouce allows .wav files to be cached to memory and quickly played at any time. Supported Interfaces ifAudioResource Description roAudioResource is intended to support short audio clips which need to be played with very little latency. The sy
Page: roBitmap
The roBitmap component contains image data and provides an interface (ifDraw2D) for drawing. Bitmaps can be used for a variety of purposes, such as for sprites, compositing, or as double buffers. Supported Interfaces ifDraw2D Description roBitmaps store f
Page: roBoolean
Object equivalent for intrinsic type Boolean. Supported Interfaces ifBoolean ifToStr Description This is useful in the following situations: When an object is needed, instead of an intrinsic value. For example, "roList" maintains a list of objects. If a
Page: roByteArray
The byte array component is used to contain and manipulate an arbitrary array of bytes. Supported Interfaces ifByteArray ifArray ifArrayGet ifArraySet ifEnum Description This object contains functions to convert strings to or from a byte array, as well as
Page: roCaptionRenderer
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roCaptionRendererEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roCECStatusEvent
Available since firmware version 8. Description roCECStatusEvent determines active source status for set boxes. Channels subscribing to the roCECStatusEvent will be notified when the active-source status of the device changes per the CEC message traffic.
Page: roChannelStore
Supported Interfaces ifChannelStore ifSetMessagePort http://sdkdocs.roku.com/display/sdkdoc/ifSetMessagePort ifGetMessagePort http://sdkdocs.roku.com/display/sdkdoc/ifGetMessagePort Supported Events roChannelStoreEvent Description The roChannelStore compo
Page: roChannelStoreEvent
The roChannelStore sends an roChannelStoreEvent in response to a call to any of several Get* methods in ifChannelStore. The following predicates indicate its valid event types: isRequestSucceeded() as Boolean The previous Get request has completed success
Page: roCodeRegistrationScreen
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roCodeRegistrationScreenEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roCompositor
The roCompositor allows the composition and animation of multiple roBitmaps and roRegions. Supported Interfaces ifCompositor Description The roCompositor can create and manage roSprites in a z-ordered list. The sprites can be of arbitrary size and can be
Page: roDataGramSocket
The roDataGramSocket component enables Brightscript apps to send and receive UDP packets. The interface is modeled on and works much like standard Berkeley sockets. Supported Interfaces ifSocket ifSocketAsync ifSocketStatus ifSocketOption ifSocketCastOpti
Page: roDateTime
The roDateTime provides an interface to obtain the current date/time for the player and manipulate date/times. Supported Interfaces ifDateTime Note: some firmware versions may implement ifDateTime as ifRoDateTime. Description This component provides sever
Page: roDeviceCrypto
The roDeviceCrypto component enables you to encrypt and decrypt data on a device using a key that is unique per channel, device, or model. Using a channel key for example, you can encrypt data for a channel so that it may only be decrypted by that same ch
Page: roDeviceInfo
The roDeviceInfo component provides an interface to obtain attributes about the device. Supported Interfaces ifDeviceInfo ifSetMessagePort ifGetMessagePort Supported Events roDeviceInfoEvent Description These attributes are not changeable by the script, b
Page: roDeviceInfoEvent
Available since Roku OS 8. The roDeviceInfo component sends the roDeviceInfoEvent with the following predicates that indicate its valid event types: isStatusMessage() as Boolean Device status has changed. GetInfo() as Object Returns an roAssociativeArray
Page: roDouble
Object equivalent for intrinsic type 'Double'. Supported Interfaces ifDouble ifToStr Description roDouble is a legacy object name, corresponding to the intrinsic Double object. Applications should use Double literal values and/or Double-typed variables d
Page: roEVPCipher
The EVP Cipher component provides an interface to the OpenSSL EVP library of symmetric cipher commands. The EVP library provides a high-level interface to cryptographic functions to implement digital "envelopes". Supported Interfaces ifEVPCipher Descripti
Page: roEVPDigest
The EVP Digest component provides an interface to the OpenSSL EVP library of message digest algorithms. The EVP library provides a high-level interface to cryptographic hash functions. Supported Interfaces ifEVPDigest Description roEVPDigest processes an
Page: roFileSystem
The roFilesystem component implements common filesystem inspection and modificationroutines. Supported Interfaces ifFileSystem ifSetMessagePort ifGetMessagePort Supported Events roFileSystemEvent Description All paths are matched case-insensitively, regar
Page: roFileSystemEvent
The roFileSystem component sends the roFileSystemEvent with the following predicates that indicate its valid event types: isStorageDeviceAdded() as Boolean A storage device was inserted in the USB port. GetMessage() as String Returns volume name of added
Page: roFloat
Object equivalent for intrinsic type 'Float'. Supported Interfaces ifFloat ifToStr Description This is useful in the following situations: If any object exposes the ifFloat interface, that object can be used in any expression that expects an intrinsic val
Page: roFont
roFont represents a particular font, from a font-family (eg. Arial), with a particular pixel size (e.g 20), and a particular boldness or italicness. Supported Interfaces ifFont Description roFont is used in conjunction with roFontRegistry to create and ma
Page: roFontMetrics (deprecated)
This component is deprecated. Developers should use roFont methods (GetOneLineHeight and GetOneLineWidth). The roFontMetrics object allows you to get display size information for a specific font returned by the roFontRegistry.Get() method. Supported Int
Page: roFontRegistry
The roFontRegistry object allows you to create roFont objects, either using the default font or using fonts in TrueType or OpenType files packaged with your application. Supported Interfaces ifFontRegistry Description This object is created with no parame
Page: roFunction
Object equivalent for intrinsic type Function. Supported Interfaces ifFunction ifToStr
Page: roGridScreen
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roGridScreenEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roHdmiHotPlugEvent
The roHdmiStatus sends the roHdmiHotPlugEvent with the following predicates that indicate its valid event types: isHdmiHotPlug() as Boolean An HDMI hot plug has occurred. GetMessage() as String Returns the string "HdmiHotPlug". GetIndex() as Integer The
Page: roHdmiStatus
The HDMI status component provides an interface to the current HDMI operational status. Supported Interfaces ifHdmiStatus ifSetMessagePort Description This component allows you to query the status of the HDMI connection for the device through the ifHdmiSt
Page: roHdmiStatusEvent
The roHdmiStatus sends the roHdmiStatusEvent with the following predicates that indicate its valid event types: isHdmiStatus() as Boolean An HDMI status event has occurred. GetMessage() as String Returns the string "HdmiHotPlug". GetIndex() as Integer T
Page: roHMAC
The HMAC component provides an interface to the OpenSSL HMAC functions. These functions generate a Message Authentication Code (MAC) based on a key, in such a way that no one without the key could plausibly generate the MAC. HMAC uses a digest (hash) al
Page: roHttpAgent
Available since firmware version 7.2 Supported Interfaces ifHttpAgent Description All Scene Graph nodes can use the roHttpAgent component to support cookies, custom HTTP headers, and support secure HTTP file transfer protocols, such as passing certificate
Page: roImageCanvas
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roImageCanvasEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roImageMetadata
The roImageMetadata component provides developers access to image file metadata included in many .jpg EXIF headers. Supported Interfaces ifImageMetadata Description roImageMetadata currently only works with local file Urls. This object is created without
Page: roInput
An roInput object can be used to receive events sent from a network client using the External Control Protocol (ECP), as described in External Control API. Note that a channel that wants to accept deep link parameters while running without relaunching the
Page: roInputEvent
The roInput component sends the roInputEvent with the following predicates that indicate its valid event types: isInput() as Boolean An input event was received. GetInfo() as Object Returns an roAssociativeArray describing the input event: Key Type Valu
Page: roInt
Object equivalent for intrinsic type Integer. Supported Interfaces ifInt ifIntOps ifToStr Description This is useful in the following situations: When an object is needed, instead of an intrinsic value. For example, "roList" maintains a list of objects. I
Page: roInvalid
Object equivalent for intrinsic type 'Invalid'. Supported Interfaces ifToStr
Page: roKeyboardScreen
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roKeyboardScreenEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: Roku Advanced Layout Editor
The Roku Advanced Layout Editor (RALE) http://devtools.web.roku.com/roku-advanced-layout-editor/ is a tool that lets developers or designers dynamically layout the UI elements of a channel for quick prototyping and design purposes. Changes made in the too
Page: Roku Advertising Framework
Table of Contents Overview The Roku Advertising Framework (RAF) is a universal video ad solution integrated directly into the core Roku SDK as a common library. RAF is required for channels that include ads, see Certification https://developer.roku.com/de
Page: Roku Analytics Component
Available since firmware version 8. Table of Contents Overview Roku analytics component is a component library which implements Google Analytics, Omniture, and Ooyala Analytics, amongst others. The library creates a simple method for using SceneGraph chan
Page: Roku Channel Manifest
Table of Contents Root Level The root level of all Roku Channels must contain a manifest file (pkg:/manifest http://pkg/manifest) containing important attributes for the application. The manifest file must be UTF-8 encoded. The attributes in the manifest
Page: Roku Federated Identity Single Sign-On
Table of Contents Introduction This specification defines a mechanism and protocols for the Roku Federated Identity SSO (RF SSO) service, whereby a Channel Partner can authorize a Roku service to share a federated identity unique to that channel in order
Page: Roku OS Release Notes
Table of Contents SDK Update Release Notes: version 9.1 - 4/9/2019 Roku OS 9.1 adds new line-level debugging to the BrightScript Profiler tool, which enables developers to better pinpoint high memory and CPU usage. In addition, this update adds signal bea
Page: Roku Pay and In-Channel Purchasing
Table of Contents Overview of Roku Pay The core services of Roku Pay are the billing of customers for subscriptions and the management of invoicing. You can bill customers within your Roku channel for a subscription or prior to installing your channel. Yo
Page: Roku Plugin for Eclipse IDE
Table of Contents Overview of the Roku Plug-In The Roku plug-in for Eclipse gives you the power to quickly create your channel and deploy it to a device for testing. The Roku plug-in for the Eclipse IDE offers channel development in BrightScript, includin
Home page: Roku SDK Documentation
Welcome to the Roku Software Development Kit (SDK) documentation. This section of our documentation is for programmers who intend to write a custom channel and deploy it to the Channel Store. If you are not a programmer but a content provider or publishe
Page: Roku Search
Table of Contents Roku Search provides another way to convert Roku users into customers of your VOD channel, besides the Roku Channel Store. Roku Search is located on the main menu of the Roku home-screen, and allows Roku users to search for a particular
Page: Roku's Master UI
While developers have the ability to build and design their channel to meet nearly any aesthetics they prefer, users will still be experiencing your Channel within the Roku UI experience. This Roku Master UI has its own set of conventions and system contr
Page: roList
Supported Interfaces ifList ifArray ifArrayGet ifArraySet ifEnum ifListToArray Description The list object implements the interfaces: ifList, ifArray, ifEnum and therefore can behave like an array that can dynamically add members. The array operator [ ] c
Page: roListScreen
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roListScreenEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roLocalization
The roLocalization object provides functions to assist in localization. This component is available beginning with firmware version 4.3. Supported Interfaces ifLocalization Description This object provides functions to assist in localization. It is crea
Page: roLongInteger
Object equivalent for intrinsic type LongInteger. This is available in firmware 7.0 or later. Supported Interfaces ifLongInt ifToStr Description roLongInteger is the object name corresponding to the intrinsic LongInteger object.
Page: roMessageDialog
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roMessageDialogEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roMessagePort
A Message Port is the place messages (events) are sent. Supported Interfaces ifMessagePort Description When using BrightScript, you would not call these functions directly. Instead, use the "Wait" BrightScript statement. This object is created with no pa
Page: roMicrophone
Available since firmware version 7.6 Supported Interfaces ifMicrophone ifSetMessagePort ifGetMessagePort Supported Events roMicrophoneEvent Description The roMicrophone API allows channel applications to receive audio data from the user’s microphone-suppo
Page: roMicrophoneEvent
Available since firmware version 7.6 The roMicrophone component sends the roMicrophoneEvent with the following predicates that indicate its valid event types: IsRecordingInfo() as Boolean True when the microphone is open. GetInfo() as Object Returns an ro
Page: roOneLineDialog
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roOneLineDialogEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roParagraphScreen
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roParagraphScreenEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roPath
The roPath component provides developers an easy way to create valid file system paths. Supported Interfaces ifPath ifString Description The roPath component is a convenience class that implements ifString while providing additional validation and path in
Page: roPinEntryDialog
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roPinEntryDialogEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roPosterScreen
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roPosterScreenEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roRegex
The roRegex component provides the powerful regular expression processing of the PCRE library to Brightscript strings. Supported Interfaces ifRegex Description Please see the PCRE documentation (http://www.pcre.org/ http://www.pcre.org/) for documentation
Page: roRegion
The roRegion component is used to represent a subsection of a bitmap. Supported Interfaces ifRegion Description The region is specified with an x,y, width, and height as well as a time field for use with animated sprites and a wrap field which causes the
Page: roRegistry
The Registry is an area of non-volatile storage where a small number of persistent settings can be stored. Supported Interfaces ifRegistry Description The Registry provides a means for an application to write and read small amounts of data such as setting
Page: roRegistrySection
A Registry Section enables the organization of settings within the registry. Different registry sections may have their own keys with the same name. In other words, key names are scoped within the registry section to which they belong. Supported Interface
Page: roRSA
The RSA component provides an interface to the OpenSSL RSA library of signing algorithms. The RSA component is available in firmware version 4.7 and later. Supported Interfaces ifRSA Description This component can be used to sign/verify using RSA. Typica
Page: roScreen
The roScreen component provides a full screen drawing surface that can be stacked and that you can receive input events from. Supported Interfaces ifScreen ifDraw2D ifSetMessagePort ifGetMessagePort Supported Events roUniversalControlEvent Description You
Page: roSearchHistory
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roSearchScreen
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roSearchScreenEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roSGNode
Table of Contents The roSGNode object is the BrightScript equivalent of SceneGraph XML file node creation. Supported Interfaces ifAssociativeArray ifSGNodeChildren ifSGNodeField ifSGNodeDict ifSGNodeFocus ifSGNodeBoundingRect ifSGNodeHttpAgentAccess Suppo
Page: roSGNodeEvent
An roSGNode object sends roSGNodeEvent messages to a specified port when changes occur in nodes. An roSGNodeEvent is also sent as the argument of field observer callback functions. Both of these cases allow a SceneGraph application to respond to events.
Page: roSGScreen
Table of Contents The roSGScreen object is a SceneGraph canvas that displays the contents of a SceneGraph Scene node tree. Supported Interfaces ifRoSGScreen Supported Events roSGScreenEvent https://sdkdocs.roku.com/display/sdkdoc/roSGScreenEvent Descripti
Page: roSGScreenEvent
roSGScreenEvents are events sent to a scene graph roSGScreen by the framework. Other than when notifying the channel's main BrightScript thread that the screen is being closed, and thus that the channel should be terminated, channels do not generally han
Page: roSlideShow
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roSlideShowEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roSocketAddress
The roSocketAddress is used by the roStreamSocket and roDataGramSocket components for TCP and UDP traffic respectively. Supported Interfaces ifSocketAddress Description This object is created without any arguments: CreateObject("roSocketAddress") Methods
Page: roSocketEvent
An roStreamSocket or roDataGramSocket object sends the roSocketEvent to indicate a change in the status of the socket. The socket must enable specific event notifications via the notify methods of ifSocketAsync. GetSocketID() as Integer Returns the ID o
Page: roSpringboardScreen
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roSpringboardScreenEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roSprite
Supported Interfaces ifSprite Description The roSprite object cannot be created directly with a CreateObject() call. It must be associated with a managing roCompositor object. This association is implicitly created by creating an roSprite object with the
Page: roStreamSocket
The roStreamSocket component enables BrightScript apps to accept and connect to TCP streams as well as send and receive data with them. The interface is modeled on and works much like standard Berkeley sockets. Supported Interfaces ifSocketConnection ifSo
Page: roString
Object equivalent for intrinsic type 'String'. Supported Interfaces ifString ifStringOps ifToStr Description This is useful in the following situations: When an object is needed, instead of an intrinsic value. For example, "roList" maintains a list of obj
Page: roSystemLog
The roSystemLog component enables the application to receive events from the Roku Streaming Player that are intended for reporting errors and trends, rather than trigger a response to a user action. Table of Contents Supported Interfaces ifSystemLog Descr
Page: roSystemLogEvent
roSystemLogEvents are sent when enabled via roSystemLog. roSystemLogEvent has the following method: GetInfo() as Object Returns an AssociativeArray containing information describing the event. All event AAs have the following base keys: LogType String
Page: roTextScreen
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roTextScreenEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roTextToSpeech
Please note this component is only available on the following devices: Roku Streaming Stick (3600X), Roku Express (3700X) and Express+ (3710X), Roku Premiere (4620X) and Premiere+ (4630X), Roku Ultra (4640X), and any Roku TV running Roku OS version 7.2 an
Page: roTextToSpeechEvent
Please note this component is only available on the following devices: Roku Streaming Stick (3600X), Roku Express (3700X) and Express+ (3710X), Roku Premiere (4620X) and Premiere+ (4630X), Roku Ultra (4640X), and any Roku TV running Roku OS version 7.2 an
Page: roTextureManager
The Texture Manager provides a set of API's for managing an roBitmap cache. Supported Interfaces ifTextureManager http://sdkdocs.roku.com/display/rokudocs/ifSetMessagePort ifSetMessagePort http://sdkdocs.roku.com/display/sdkdoc/ifSetMessagePort ifGetMessa
Page: roTextureRequest
An roTextureRequest is used to make requests to the roTextureManager. Supported Interfaces ifTextureRequest ifHttpAgent Description An roTextureRequest object is created using the CreateObject() method and passing it a URI string. CreateObject("roTextureR
Page: roTextureRequestEvent
The roTextureManager sends the roTextureRequestEvent after completing a request. GetId() as Integer Returns the unique id of the request. GetState() as Integer Returns the state of the request. See ifTextureRequest.GetState() for the list of states. Ge
Page: roTimespan
The Timespan object provides an interface to a simple timer for tracking the duration of activities. It's useful for tracking how an action has taken or if a specified time has elapsed from some starting event. Supported Interfaces ifTimespan Description
Page: roUniversalControlEvent
The roScreen object sends the roUniversalControlEvent with the following related methods. If an app constrains the events processed to just the roUniversalControlEvent, the app will work with any controller. The GetID(), GetChar(), GetKey(), and IsPress()
Page: roUrlEvent
The roUrlTransfer component sends the roUrlEvent with the following methods: GetInt() as Integer Returns the type of event. The following event types are currently defined: 1 transfer complete 2 transfer started. Headers are available for suitable protoco
Page: roUrlTransfer
A roUrlTransfer object transfers data to or from remote servers specified by URLs. It can perform mutual authentication with a web server. Supported Interfaces ifUrlTransfer ifHttpAgent ifSetMessagePort ifGetMessagePort Events Supported roUrlEvent Descrip
Page: roVideoPlayer
The roVideoPlayer component implements a video player with more programmatic control, but less user control than the roVideoScreen component. Supported Interfaces ifVideoPlayer ifHttpAgent ifSetMessagePort ifGetMessagePort Supported Events roVideoPlayerEv
Page: roVideoPlayerEvent
The roVideoPlayer sends the roVideoPlayerEvent with the following predicates that indicate its valid event types: isStreamStarted() as Boolean The video stream has started playing. GetIndex() as Integer Returns the number of seconds from play to start str
Page: roVideoScreen
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: roVideoScreenEvent
This component is deprecated. Beginning July 1st, 2017, any new channels using this component will be rejected during certification. Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.
Page: RowList
Table of Contents Extends: ArrayGrid Also See Related Page: List and Grids Markup - RowList Markup RowList Overview The RowList node class provides a vertically-scrollable list, containing rows of independent horizontally-scrollable individual items. Each
Page: RowList Markup
Example Application: RowListExample.zip Node Class Reference: RowList The RowList node class incorporates characteristics of both lists and grids, and allows the same type of custom appearance and behavior of the list items (and the list rows) as in the
Page: roXMLElement
roXMLElement is used to contain an XML tree. Supported Interfaces ifXMLElement Description Example: <tag1>this is some text</tag1> Would parse such that: Name = "tag1" Attributes = invalid Body = roString with "this is some text" Example:
Page: roXMLList
Contains a list of roXML objects. Supported Interfaces ifList ifListToArray https://sdkdocs.roku.com/display/sdkdoc/ifListToArray ifXMLList Description Normally roXMLList objects are not created via CreateObject(), but are returned from various ifXMLEleme
Page: Runtime Functions
Table of Contents CreateObject(classname as String, [optional parameters]) as Object Creates a BrightScript Component of class classname specified. Return invalid if the object creation fails. Some Objects have optional parameters in their constructor tha

S

Page: Scene
Table of Contents Extends: Group Description The Scene node class serves as the root of a SceneGraph node tree. Every roSGScreen object must have a Scene node, or a node that derives from the Scene node class as its root, including an XML markup componen
Page: SceneGraph Animations
The SceneGraph API includes several nodes to animate screen elements. You can move screen elements around, make them disappear and reappear, and change color. Animating screen elements requires the use of one of the node classes derived from AnimationBase
Page: SceneGraph API Reference
The following provides complete reference information on all node classes, component XML file elements, component functions, and BrightScript components and interfaces, available in the Roku SceneGraph API. Each node description includes a table of the fi
Page: SceneGraph BrightScript
Table of Contents Two new BrightScript objects, roSGScreen and roSGNode, have been defined to allow our SceneGraph technology to be used in scripting. BrightScript SceneGraph Scene Creation Currently, a fairly strict ordering must be used in BrightScript
Page: SceneGraph Compilation
SceneGraph components are compiled as the application is started. All SceneGraph component files (with the extension *.xml), and any related BrightScript files (with the extension *.brs), in the pkg:/components directory, are compiled. BrightScript files
Page: SceneGraph Components
There are two BrightScript components that have been added to the Roku SDK to enable scripting SceneGraph applications. These are roSGScreen and roSGNode.
Page: SceneGraph Coordinate Systems
Each renderable node has a local coordinate system associated with it with an origin at (0,0) with x increasing left-to-right and y increasing top-to-bottom. Each node can also have a 2D transformation specified that transform its local coordinate system
Page: SceneGraph Core Concepts
Roku has introduced a new programming framework for developing applications. This new framework incorporates two new key concepts: SceneGraph rendering of the application screens XML configuration of the SceneGraph screens The goal of this new programming
Page: SceneGraph Data Scoping
Table of Contents SceneGraph applications have data object scoping rules that are similar to traditional programming languages. You have: function scope: objects that can only be accessed within the function in which they were defined component scope: obj
Page: SceneGraph Developer Extensions
Overview SceneGraph Developer Extensions (SGDEX) is a collection of sample code that demonstrates how a developer can use pre-built, reusable Roku SceneGraph (RSG) components to enable rapid development while following a consistent UX paradigm. The Develo
Page: SceneGraph Developer Extensions Components
ComponentController Extends: Group https://sdkdocs.roku.com/display/sdkdoc/Group Description The ComponentController component implements the basic default view management. It essentially implements the view stack. Further, the component also handles view
Page: SceneGraph Events
This section describes the events used by all SceneGraph nodes.
Page: SceneGraph Interfaces
This section describes the BrightScript interfaces used by all SceneGraph nodes.
Page: SceneGraph Localization
Table of Contents You can supply localized versions of the strings and package graphical images used in a SceneGraph application package. The SceneGraph application can then automatically insert the localized versions of the strings and graphical images t
Page: SceneGraph Performance Guide
Overview As a Roku developer, building a unique and visually appealing channel is likely one the first things on your mind - and rightfully so. While this is certainly possible (and highly encouraged!) with SceneGraph, it's important to remember that func
Page: SceneGraph Samples
Table of Contents SceneGraph XML Tutorial This SceneGraph XML tutorial walks you through the development of a complete Roku SceneGraph application using the following steps: We start with simple examples of defining renderable nodes to appear at certain l
Page: SceneGraph Threads
Table of Contents SceneGraph introduced multi-threaded operations to Roku application programming. The following are the basic threads available to a SceneGraph application programmer: Main BrightScript Thread This is the thread that is launched for all R
Page: SceneGraph XML Overview
Table of Contents The term SceneGraph refers to a design algorithm and associated programming constructs that are widely used in computer graphics systems, such as video games. A SceneGraph uses a tree structure of image element nodes to define an interac
Page: Screensavers
Table of Contents Overview A screensaver is a channel which is run automatically when the system has been idle for a period of time. The length of the period is settable by the user. If more than one screensaver is installed, one is selected by the user a
Page: script
Table of Contents Description The <script> element allows the definition of functions to initialize the component, and to respond to events (including key events) and field value changes. The BrightScript interfaces for the SceneGraph nodes used by Bright
Page: ScrollableText
Table of Contents Extends: Group Description The ScrollableText node class provides an interactive, vertically scrolling pane of text. This is typically used to display several paragraphs of text to the user that are too long to fit onto the display, suc
Page: ScrollingLabel
Table of Contents Extends: Group Description The ScrollingLabel node class provides an automatic way to make a string scroll horizontally if it does not fit within the specified width. If the string can be drawn within the specified maximum width it is j
Page: Security Overview
Table of Contents System Security The Roku Streaming Player is designed to play a variety of streaming content directly from the Internet. We understand that this content is valuable to the content owners and must be protected from unauthorized access to
Page: SequentialAnimation
Table of Contents Extends: AnimationBase Description The SequentialAnimation node class allows you to specify that a set of animations should occur sequentially. The children of the SequentialAnimation node specify the set of animations to be executed. N
Page: SimpleLabel
Extends: Group https://sdkdocs.roku.com/display/sdkdoc/Group Overview The SimpleLabel node class is used to display a single line of text. SimpleLabel is a lightweight complement to the Label node. It supports simplified font style specification and is m
Page: Sliding Panels Markup
Table of Contents Roku SceneGraph pioneers the use of sliding panels in a TV user interface, providing instant familiarity for smart phone users who "swipe" screens of information billions of times a day. The sliding panels node classes consist of three p
Page: Sliding Panels Nodes
The following are the sliding panel node classes that allow you set up panels of content that slide on and off the display screen.
Page: SoundEffect
Available since firmware version 7.5 Table of Contents Extends: Node Description The SoundEffect node class is used to play audio sound effects that can be triggered from events that occur in the UI. Typically, these sound effects are short audio clips, b
Page: Specifying Display Resolution
Table of Contents SceneGraph applications allow you to specify an intended display screen resolution for your user interface application. But SceneGraph applications also automatically scale the screen elements for screen displays and Roku players that do
Page: Statement Summary
BrightScript supports the following familiar looking statement types: If / Then / Else If / Else / End If For / To / End For / Step / Exit For For Each / In / End For / Exit For While / End While / Exit While Function / End Function / As / Return Print Re
Page: Static Analysis Tool
Table of contents Overview The channel publishing flow includes a Static Analysis Tool used to analyze the channel's BrightScript source code and detect common issues without having to submit for certification. This arms developers with the information th
Page: Streaming Specifications
Page: System Memory (DRAM)
Table of Contents Overview At a glance: Roku devices have anywhere from 256 MB DRAM on the lowest end devices, to 1.5 GB DRAM on the Dallas https://sdkdocs.roku.com/display/sdkdoc/The+Roku+Channel+Developer+Program#TheRokuChannelDeveloperProgram-RokuModel

T

Page: TargetGroup
Available since firmware version 7.5 Table of Contents Extends: Group Description The TargetGroup node class associates a set of rectangular regions that children of the group will occupy. Like MarkupList, the TargetGroup has a content field containing th
Page: TargetList
Available since firmware version 7.5 Table of Contents Extends: TargetGroup https://sdkdocs.roku.com/display/sdkdoc/TargetGroup Description The TargetList node class adds useful functionality to the TargetGroup node by making is easy to set up lists and r
Page: TargetSet
Available since firmware version 7.5 Table of Contents Extends: Node https://sdkdocs.roku.com/display/sdkdoc/node Description The TargetSet node class is used to specify a set of target regions where items in a TargetGroup https://sdkdocs.roku.com/display
Page: Task
Table of Contents Extends: Node Description The Task node class allows you to specify a function to be spawned in a different thread, and run asynchronously with respect to both the scene rendering thread and the main application thread. A Task node also
Page: Testing In-Channel Purchasing
Table of Contents Overview of Testing In-Channel Products Developers can test billing for an in-channel product on a side-loaded channel using the "Use for billing testing" feature, eliminating the need to create a private channel to see if billing produc
Page: Text to Speech
Note: This feature is only available on the following devices: Roku Streaming Stick (3600X), Roku Express (3700X) and Express+ (3710X), Roku Premiere (4620X) and Premiere+ (4630X), Roku Ultra (4640X), and any Roku TV running Roku OS version 7.2 and later.
Page: TextEditBox
Table of Contents Extends: Group Description The TextEditBox node class is intended to display a string of characters as they are typed. When focused, it displays a flashing cursor to indicate the text insertion position. TextEditBox nodes are automatica
Page: Texture Memory
Table of Contents Overview A common offense is simply using too much texture memory. It's important to realize that simply using a larger image does not necessarily ensure a higher quality end result. Rather, using unnecessarily large images will more oft
Page: The Roku Channel Developer Program
Table of Contents Roku offers content owners and publishers the ability to create their own channels on the Roku devices and to make those channels available to Roku users. The Roku SDK documentation contains the necessary information for creating a Roku
Page: Theme attributes for views
SceneGraph Developer Extensions (SGDEX) support customizing elements in the views. Using the theme attributes Set theme attributes at the start of a channel in the Show(args) function. Do not set global theme attributes before opening each view. To change
Page: Timer
Table of Contents Extends: Node Description The Timer node class generates an observable event after a specified amount of time has elapsed. Fields Field Type Default Use control string "none" Used to control the operation of the Timer node. Recognized v
Page: Top Development Tips for the Roku Platform
Make sure you capture all of the events sent by the roVideoScreen or you may miss important playability information. Know the remote control codes for special screens: Dump Core: Home 5x, Up, Rew 2x, FF 2x Debug Info on screen: Home 5x, Rew 3x, FF 2x Chan
Page: Transitioning to SceneGraph
The following summarizes how to transition from the older Roku API to SceneGraph applications. In general, SceneGraph handles events without requiring you to write custom event loops, and allows you easily add custom event handlers by observing virtually
Page: Trick Mode Support
Table of Contents Two types of trick mode support (FF/REW/SEEK) are provided. For developers who generate and publish image archives in the Roku BIF (Base Index Frame) file format, scene-based trick-mode using index frames will be supported. A specificati
Page: Tutorial Overview
Every ZIP file example in this tutorial is a complete application, in that it consists of at least a scene component (a component extended from a scene node class, such as Scene, or OverhangPanelSetScene), and possibly any other components needed for the
Page: Typographic Nodes
The following node classes allow you to set the font characteristics of the text in a SceneGraph application, and display scrolling text.
Page: Typography
The SceneGraph API includes the Font node class for specifying the font characteristics to be used by your application. Each node class that renders text on the screen display includes a font field to set the font characteristics for the node. There is a
Page: Typography Markup
Table of Contents Roku SceneGraph offers two special node classes to display text: ScrollingLabel ScrollableText ScrollingLabel Markup Example Application: ScrollingLabelExample.zip Node Class Reference: ScrollingLabel The ScrollingLabel node class is a s

U

Page: Update an Existing Channel
Updating a channel follows many of the same steps as submitting a new channel. On the Developer Dashboard https://developer.roku.com/developer, select Manage My Channels https://developer.roku.com/developer-channels/channels and select the channel that
Page: Using the Content Manager
Content Management The SceneGraph Developer Extension's (SGDEX) Content Manager simplifies task management for developers by using a Content Handler to view as well as manage the Task Nodes, and streamline the multi-threaded nature of Roku SceneGraph Node
Page: Using ViewStack
Views are full-screen SceneGraph Developer Extension components that can be used as a template to build a view instead of creating one from scratch. SceneGraph Developer Extensions (SGDEX) supports out of the box stacking of the views. This means that you
Page: Using Widgets
The SceneGraph API includes several widget node classes suh as buttons and keyboards that can be incorporated into your scenes and custom SceneGraph components. Widget Nodes The following are the widget node classes supplied by Roku as part of the SceneGr
Page: UX Design Guidelines
This document highlights Roku's approach to TV UIs, with progressive levels of requirements which are crucial to pass Roku's Channel Certification process as well as create a well-designed Roku Channel. While channels that do not implement all best practi

V

Page: Vector2DFieldInterpolator
Table of Contents Extends: Node Description Vector2DFieldInterpolator specifies a keyframe animation sequence to be applied to a pair Vector2D field of a node. Most typically, this is used to animate the (x,y) coordinates of a node's translation field. A
Page: Video
Table of Contents Extends: Group Description The Video node class provides a controlled play of live or VOD video. The Video node includes a wide variety of internal nodes to support trick play, playback buffering indicators, and so forth. Playback buffer

W

Page: Web Service API
Table of Contents The Roku Web Service API allows subscribers who signed up on Roku to use your service on other platforms. For instance, this API can be used to determine whether a subscription on Roku is still valid so the subscriber can be granted acce
Page: Widget Nodes
The following node classes are the various widget node classes that you can incorporate into your SceneGraph components.
Page: Widgets Markup
Table of Contents Roku SceneGraph provides several "widget" node classes. Most of these should be very familiar if you have set up user interfaces for applications on other operating systems and platforms; others are more specific to the Roku platform: Bu
Page: Working with Screens
Table of Contents This section applies to non-Scene Graph based channels only. For best practices for Scene Graph channel program flow and navigation, see Controlling Screen Program Flow. Screens The primary user interface abstraction in the Roku object

X

Page: XML Components
An XML-based markup language has been added to the SceneGraph API that allows new SceneGraph components to be defined consisting of a set of SceneGraph nodes loaded from a declarative description, with interactive or animated behaviors added using Brights
Page: XML Elements
The following are the component XML file elements used in SceneGraph applications.

Y

Z

Page: Z-Order/Parent-Child Markup
Table of Contents This section of the tutorial shows the sequence that several renderable nodes are drawn on the screen, and the general concepts of inheritance of properties in child nodes from parent nodes. You'll see how to organize a node tree to achi
Page: ZoomRowList
Available since firmware version 9 Extends: ArrayGrid https://sdkdocs.roku.com/display/sdkdoc/ArrayGrid Overview The ZoomRowList node allows a row of the Row-Row Grid to smoothly zoom up to a larger size when that row has focus. Rows in this node are ca

!@#$