HTML Application SDK
A0.101
|
Date | Owner | Version | Reason & Change |
---|---|---|---|
04 Aug 2016 | Melek Uzun | A0.1 | Initial Format Change |
18 Aug 2016 | Tamer Temizer | A0.2 | Deleted obsolete information about CustomDownloadManager |
01 Sep 2016 | Mevlüt Mert Çil | A0.3 | Updated the explanation for registerDownloadURL function |
30 Sep 2016 | Elif Koca & Mücahit Arduç & Mevlüt Mert Çil & Tamer Temizer | A0.4 | Added code snippets to demonstrate the usage of the functions. |
14 Oct 2016 | Tamer Temizer | A0.5 | Moved Supported API Table to a separate page. Added ActivityMonitor, AsyncDataProvider, ChannelExtensions and TvKeyboardStatus to the documentation. |
1 Nov 2016 | Engin Yurek | A0.6 | Added exception messages of OIPF Plugins |
24 Nov 2016 | Günseli Çizmeli | A0.7 | Modified KeySet interface description in ApplicationManager |
24 Nov 2016 | Coşkun Deniz | A0.8 | Updated pvr related functions. |
24 Nov 2016 | Özgün Bal | A0.9 | Given wrong input parameter cases are mentioned for DatabaseManager, DateTimeSettings and SoundSettings. Information of enumeration is edited in StorageManager. |
26 Nov 2016 | Günseli Çizmeli | A0.10 | Added detailed information for KeySet interface in ApplicationManager |
28 Nov 2016 | Coşkun Deniz | A0.11 | Added isFormatRequired function that accepts path argument. |
06 Dec 2016 | Coşkun Deniz | A0.12 | Updated ActivityMonitor documentation. |
22 Dec 2016 | Engin Yürek | A0.13 | Updated ActivityMonitor documentation. |
27 Dec 2016 | Merve Albayrak | A0.14 | Updated StorageManager documentation. |
09 Jan 2017 | Coşkun Deniz | A0.15 | Removed unsupported plugins from documentation. |
18 Jan 2017 | Mücahit Arduç | A0.16 | Updated documentation of getListOfPlayableFiles function. |
18 Feb 2017 | Fatih Aslan | A0.17 | Updated documentation of InputManager externalSourceListUpdated |
24 Feb 2017 | Bahar Aksongur | A0.18 | Updated ApplicationManager, GeneralSettings, SoundSettings, DisplaySettings and PowerSettings documentations. |
24 Feb 2017 | Ece Oktay | A0.19 | Updated documentation of StorageManager getFileMd5. |
27 Feb 2017 | Fatih Okut | A0.20 | Updated documentation of DatabaseManager |
7 Mar 2017 | Coşkun Deniz | A0.21 | Updated code snippets of ChannelExtensions |
9 Mar 2017 | Fatih Aslan | A0.22 | Updated code snippets of SmartTvA_API |
9 Mar 2017 | Fatih Aslan | A0.23 | Updated code snippets of SmartTvA_API |
13 Mar 2017 | Bahar Aksongur | A0.24 | Updated code snippets of RemoteKeyGenerator, Rs232LanCommand, StandbyController. |
20 Mar 2017 | Fatih Okut | A0.25 | Updated code snippets for AsyncDataProvider, ChildLock and DatabaseManager. |
20 Mar 2017 | Günseli Çizmeli | A0.26 | Updated code snippets for SoftwareUpdateController. |
20 Mar 2017 | Merve Albayrak | A0.27 | Updated code snippets for PictureSettings, Screenshot, TVPreferences, TvKeyboardStatus. |
23 Mar 2017 | Merve Albayrak | A0.28 | Updated StorageManager documentation. |
28 Mar 2017 | Engin Yürek | A0.29 | Updated code snippets for ActivityMonitor, ChannellistHelper, DateTimeSettings. |
05 Apr 2017 | Merve Albayrak | A0.30 | Updated Screenshot documentation. |
13 Apr 2017 | Merve Albayrak | A0.31 | Updated StorageManager documentation for checkEmptySpace, checkTotalSize and isInternalUSB functions. |
17 Apr 2017 | Engin Yürek | A0.32 | Updated code snippets for InputManager. |
18 Apr 2017 | Merve Albayrak | A0.33 | Updated code snippets for MacId, NetworkManager and StorageManager. |
26 Apr 2017 | Engin Yürek | A0.34 | Updated DateTimeSettings documentation. |
03 May 2017 | Fatih Okut | A0.35 | Updated code snippets for CustomDownloadManager. |
29 May 2017 | Bahar Aksongur | A0.36 | Added new function to StorageManager. |
13 Jun 2017 | Ece Oktay | A0.37 | Added new functions to PictureSettings. |
14 Jun 2017 | Belgin Dönder | A0.38 | Added new functions to TvKeyboardStatus. |
19 Jun 2017 | Coşkun Deniz | A0.39 | Separated PowerSettings plugin documentation from GeneralSettings. Added new method to set sleep timer. |
30 Jun 2017 | Coşkun Deniz | A0.40 | Extended SoundSettings plugin. |
05 Jul 2017 | Coşkun Deniz | A0.41 | Extended SoundSettings plugin with balance, headphone volume, and headphone output methods. Existing get/setVolumeLevel methods will only operate on tv volume from now on. |
05 Jul 2017 | Engin Yürek | A0.42 | Extended DateTimeSettings plugin. |
07 Jul 2017 | Engin Yürek | A0.43 | Extended SoundSettings plugin. |
10 Jul 2017 | Fatih Okut | A0.44 | JSON events altered to functions. |
10 Jul 2017 | Coşkun Deniz | A0.45 | Extended SoundSettings plugin with bass gain, and hard of hearing methods. |
11 Jul 2017 | Coşkun Deniz | A0.46 | Added methods to get min/max volume levels to SoundSettings plugin. Updated documentation of setVolumeLevel. |
11 Jul 2017 | Fatih Aslan | A0.47 | Added new methods to PictureSettings plugin related to colour shift set/get and reset all picture settings to the default values. |
12 Jul 2017 | Coşkun Deniz | A0.48 | Extended PictureSettings plugin with picture mode, and contrast methods. |
13 Jul 2017 | Engin Yürek | A0.49 | Extended ChannellistHelper plugin. Added set channel list method. |
14 Jul 2017 | Fatih Okut | A0.50 | Extended PictureSettings plugin with dynamic contrast methods. |
16 Jul 2017 | Fatih Okut | A0.51 | Extended PictureSettings plugin with color temperature methods. |
18 Jul 2017 | Coşkun Deniz | A0.52 | Extended PictureSettings plugin with 3d left/right swap methods. Updated return values of 2d/3d related methods. |
18 Jul 2017 | Fatih Okut | A0.53 | Extended PictureSettings plugin with film mode and skin tone methods. |
19 Jul 2017 | Coşkun Deniz | A0.54 | Extended PictureSettings plugin with brightness, and sharpness methods. |
20 Jul 2017 | Coşkun Deniz | A0.55 | Extended PictureSettings plugin with colour, and backlight methods. Updated return of setContrastLevel, and setSkinToneLevel. |
21 Jul 2017 | Fatih Aslan | A0.56 | Extended GeneralSettings plugin with get room id method |
28 Jul 2017 | Fatih Okut | A0.57 | Extended PictureSettings plugin with white balance methods |
30 Jul 2017 | Fatih Aslan | A0.58 | Extended SoftwareUpdateController plugin with rf software update search start/stop methods |
01 Aug 2017 | Fatih Aslan | A0.59 | Updated SoftwareUpdateController plugin explanations and added new events regarding rf software update search |
01 Aug 2017 | Coşkun Deniz | A0.60 | Added code snippets for mheg functions. |
10 Aug 2017 | Ece Oktay | A0.61 | Removed documentation of StorageManager DVRFileStatusEvent. |
22 Aug 2017 | Mevlüt Mert Çil | A0.62 | Fixed the naming of the TV mode enumerations in General Settings. |
29 Aug 2017 | Coşkun Deniz | A0.63 | Added new plugin FileManager. |
12 Sep 2017 | Ece Oktay | A0.64 | Updated code snippets and enums of CustomDownloadManager. |
13 Sep 2017 | Coşkun Deniz | A0.65 | Updated documentation of MediaFile creationTime, and lastModifyTime attributes. |
19 Sep 2017 | Onur Göksel | A0.66 | Updated documentation of MediaFile TypeFile, TypeFolder and TypeInvalid attributes. MediaTypeRecord is removed |
21 Sep 2017 | Mücahit Arduç | A0.67 | added new plugin SystemInformation |
22 Sep 2017 | Onur Göksel | A0.68 | added getRamUsagePercentage and getCpuUsagePercentage functions to SystemInformation plugin |
05 Oct 2017 | Mücahit Arduç | A0.69 | added storage information for DatabaseManager plugin |
30 Nov 2017 | Mehmet Arif Cengiz | A0.70 | SORT_* tags are changed so that documentation can be sorted alphabetically |
05 Dec 2017 | Onur Göksel | A0.71 | added getPanelWidth and getPanelHeight functions to DisplaySettings plugin |
06 Dec 2017 | Onur Göksel | A0.72 | added sample codes for makeDir, getLastMountedUSBPath and format functions of StorageManager plugin |
04 Jan 2018 | Ece Oktay | A0.73 | Updated the documentation style for events and made spelling and punctuation changes in their descriptions |
10 Jan 2018 | Mehmet Arif Cengiz | A0.74 | Edited doxygen output scope operator |
22 Feb 2018 | Engin Yurek | A0.75 | Changed return type of GeneralSettings getRoomId function |
2 March 2018 | Belgin Dönder | A0.76 | Added new functions to Application Manager to handle scrollbar on start url. |
29 March 2018 | Bahar Aksongur | A0.77 | Edited CustomDownloadManager DOWNLOAD_FILE_WRITE_ERROR documentation |
29 March 2018 | Fatih Okut | A0.78 | Added Language Key to KeySet Plugin and made RemoteKeyGenerator refer to this page for keycodes. |
28 May 2018 | Bahar Aksongur | A0.79 | Extended StorageManager Plugin with getFileExistence and getFileSize methods. |
11 June 2018 | Bahar Aksongur | A0.80 | Extended getFileExistence method of StorageManager to check existence of directories in addition fo files. |
11 July 2018 | Mehmet Arif Cengiz | A0.81 | PDF documentation generation is arranged |
11 July 2018 | Onur Göksel | A0.82 | New key (VENDOR_VK_DEVICE_PREVIOUS:663) is added for keyset_others |
28 September 2018 | Mehmet Arif Cengiz | A0.83 | PDF document is rearranged. Footers and headers are added. |
2 October 2018 | Engin Yürek | A0.84 | ChannellistHelper plugin and CustomDownloadManager plugin documentations are updated |
04 October 2018 | Ece Oktay | A0.85 | List of keys in the KeySet Interface is extended. |
08 October 2018 | Engin Yürek | A0.86 | ChannellistHelper plugin documentation is updated. |
10 October 2018 | Ece Oktay | A0.87 | Modified the definition of the KeySet.setValue() method. |
18 October 2018 | Ece Oktay | A0.88 | Removed VK_CLEAR from list of keys. |
22 October 2018 | Fatih Aslan | A0.89 | Edited StorageManager mediaFileReadProgressEvent explanation. |
22 October 2018 | Ece Oktay | A0.90 | Modified documentation of KeySet Interface. |
23 October 2018 | Ece Oktay | A0.91 | Removed numeric representation of keycodes for KeySet Interface and added missing keycodes. |
26 October 2018 | Ece Oktay | A0.92 | Removed VENDOR_VK_DEVICE_MEDIA_GUIDE from KeySet Interface. |
30 October 2018 | Engin Yürek | A0.93 | ChannellistHelper plugin documentation is updated. |
7 December 2018 | Fatih Aslan | A0.94 | NetworkManager plugin joinWifiNetwork documentation is updated. |
7 March 2019 | Günseli Çizmeli | A0.95 | Supported API table is updated. |
05 April 2019 | Ece Oktay | A0.96 | Added definition for Screenshot.takeScreenshot() method screenshot_mode argument modes. |
02 May 2019 | Ece Oktay | A0.97 | Updated definition for Screenshot.takeScreenshot() method. |
17 May 2019 | Ece Oktay | A0.98 | Updated KeySet.setValue() method description. |
27 May 2019 | Ece Oktay | A0.99 | Added VENDOR_VK_DEVICE_CHANNELS for TV key on the remote controller. |
25 June 2019 | Özler Ergün | A0.100 | KeySet Interface is extended with VENDOR_VK_DEVICE_PAP and VENDOR_VK_DEVICE_MUSIC keys |
18 September 2019 | Vecihe Alataş | A0.101 | KeySet Interface is extended with VENDOR_VK_DEVICE_TEXTPATMIX and VENDOR_VK_DEVICE_MEDIABROWSER keys |
Opera SDK V4.6.1 which has Chromium M44 in its core is the last stable version used in MB1XX TVs. Opera is upgrading itself continuously to support for working new features with the Opera Devices SDK.
Developers can use all the debug tools such as web inspector while they are developing HTML5, CSS3 applications. They can make a connection between their PC and TV browser then they can debug applications remotely. (Note: They need to be in same network. Also the Chrome/Chromium version on PC should be between 44-49. The connection cannot be established with later versions.)
Also, Opera has a TV emulator that allows web developers to test HTML5 application running the Opera Devices SDK. For more information: http://www.operasoftware.com/products/tv/tv-emulator
Opera browser that is mentioned above can work on all MB1XX products. Here is some details for MB120 platform;
Device has ~170 MB free disk capacity and ~690 MB heap size. This free storage area is using for various purposes. ~120 MB is separated for OAD operation. Opera browser is able to allocate maximum 110 MB from remaining area. Note that; if OAD starts, Opera cannot use its storages.
DatabaseManager plugin stores its data in persistent storage whose free size is about 20MB.
Opera has ~25 MB max disk cache size which is maximum limit of the HTTP data that will be cached on disk, but note that; the amount of cached data is not the same as the amount of disk space it will use.Opera sets local storage limit and persistent storage limit to ~10 MB. This memories is shared by all web apps running in the browser.Opera also sets temporary storage limit to ~65 MB. This memory is also shared by all web apps running in the browser, but it is important that each app can at most use up to 20% of this storage.
Opera browser “App Cache” uses %20 of temporary storage limit. Also, it can store maximum ~3000 cookie. To meet the limit, cookies are removed (oldest first). Cookies accessed in last 30 days are not removed regardless of max cookie value.
There are 3 ways for starting developed HTML5 based applications on MB1XX products.
After these operations, digital signage products will be opened with developed HTML/JS applications at startup.
After connecting the TV to the PC using a serial cable or telnet, you can open the HTML tests using the terminal. You can type SETURL <load url="URL_PATH"> command or OPENURL "URL_PATH" command to open HTML page. URL_PATH can be both "http://" and "file://" protocols. OPENURL just starts the URL, but SETURL deselects the current channel and then opens the web page.
Note; This command will create a browser window that has 1920x1080 resolution for Signage products and 1280x720 resolution for other products.
Developed applications can be opened by “starturl.txt” file. "starturl.txt" file should only contain a URL to the application. The URL should be on the first line of the text file. This file should be put into the root folder of a USB. Developer should do USBOPERATIONS for updating starturl correctly. In order to do that, one should enter the menu and then enter the numbers “4725” using the remote controller when the TV is opened. “Service Menu” screen will be seen. “USB Operations” which is the button at the bottom should be chosen. This will load the application link that was written in “starturl.txt” file into the TV. After closing the “Service Menu” screen, the application link will be opened when the Internet key button on the remote controller is pressed.
Note; This command will create a browser window that has 1920x1080 resolution for Signage products and 1280x720 resolution for other products.
MB1XX TV almost has full functionality for running HTML5 based UI applications. Developed applications are able to communicate with device.
Firstly, some mandatory features such as OIPF, HBBTV standards should be supported to establish this communication. MB1XX supports big part of OIPF R2-Volume-5 v2.3 and HBBTV 1.5 standards.
Also, in some cases, applications might need custom functionalities that OIPF or HBBTV does not have. For these situations, there are some custom plugins to manage device. You can find details in Supported API Table
For OIPF specifications:
http://www.oipf.tv/web-spec/volume5.html
For HBBTV specifications:
https://www.hbbtv.org/wp-content/uploads/2015/07/HbbTV-specification-1-5_Aug2012.pdf
Note: OIPF specifications cover HBBTV standards
ApplicationManager custom plugin can be used for creating new windows or can be managed existing windows with it.
Energy saving mode and 3D information can be queried, other settings are not implemented yet.
UI, Audio and Subtitle settings can be managed.
OIPF ParentalRating functionality can be used. Internet lock status can be retrieved with TVPreferences plugin. Child lock status can be retrieved from ChildLock Plugin
There is a custom plugin for Reminders, OIPF functionality can be used for Records.
There is a custom plugin object for DateTimeSettings.
There is custom plugin object for NetworkManager.
There is custom plugin object for SoftwareUpdateController.
Active standby, Auto TV Off, HbbTV, TV mode, Mheg features can be managed by custom plugins.
It can be managed with OIPF Video Broadcast object
OIPF supports.
OIPF supports.
OIPF Download Manager is not supported. But, browser’s (Opera) File System API can be used for downloading files small enough to fit in the device’s internal storage. Please see the "Platform Specifications" section for storage limitations. For larger files, e.g, video files, please use the CustomDownloadManager plugin which writes to a connected USB drive instead of the device's internal storage.
Records or videos can be played with video/mp4 objects.
StandbyController custom plugin can be used. This plugin provides function to query whether TV is in active standby or not. Also, it can enter/quit active standby state.
InputManager custom plugin can be used.
Volume settings can be managed via Video Broadcast object or SoundSettings Custom Plugin can be used.
DatabaseManager Custom plugin can be used to save key/value pairs.
The internal web server can be used to access data served from usb disks. /mnt/ path is served. (e.g http://localhost/mnt/hd0a/myapplication.html)
OIPF plugins throw DOM exceptions with three different messages for different cases. Message types are listed below