Filter
-
Content Type
-
Category
Mobile/Wearable
Visual Display
Digital Appliance
Platform
Recommendations
Filter
events advertisement
blogwe’re excited to share a selection of this year’s sessions, covering everything from ai to iot to gaming. we’ll be announcing even more in the coming weeks, so stay tuned! bixby and the new exponential frontier of intelligent assistants hear from key leaders of the bixby team, and get answers to your most important questions: how is bixby different? how will i, as a developer, make money by integrating my services with bixby? understand bixby's vision for a new open ecosystem for developers, and how to get involved. learn more. streamlining iot systems: smartthings cloud-to-cloud device integrations learn about the developer workspace to integrate cloud-connected devices with smartthings which will streamline the development and go-to-market processes. learn more. a quick look inside your games: gpuwatch tutorial + gameengine talk get a detailed look at the tools and sdks available through the galaxy gamedev program that help you create high-performance gaming experiences with ease. learn technical tips from samsung and unity to help your games perform better. learn more. check out all of the available sessions on the sdc website. register now to secure your seat!
Lori Fraleigh
success story uiux, design, mobile, marketplace
blogrecognized for “best creative app” in our best of galaxy store awards 2019 is concepts by tophatch. tophatch empowers creative people with design tools that simplify the creative process with smarter, more intuitive technology. david brittain, co-founder and ceo of tophatch, shares how concepts got started, what it takes to maintain your app’s performance, and tips on how indie designers can establish a successful app development business. tell us about concepts. concepts is an infinite creative workspace for visual thinkers, designers and illustrators. concepts is used by designers at companies like unity, illumination entertainment, hp, and disney globally to create and share everything from visual notes and storyboards to architectural layouts and product designs., we built concepts from the ground up for touch and stylus-based devices. when tablets first began to come out, we saw other apps were transplanting awkward desktop mechanics to mobile interfaces instead of writing for the new ecosystem. we saw that design on a mobile platform could be a lot more intuitive and fun and knew that much more was possible. we've been working on our vision for 7 years now, and our software, stylus, and device performance are so fluid that our designers prefer concepts over paper. how is the app used? concepts is a powerful creative tool that allows you to explore and communicate ideas with a quick, natural workflow. the app allows you to sketch, edit, and communicate your ideas with liquid, vector-based brushes, and precision tools. the infinite canvas lets you flow with your ideas as far as they’ll go, with fluid pens and brushes that come in designer copic colors. the app's customizable layout, easy-to-use layers, drag+drop imports, and precision grids help you sketch and design effortlessly. everything you draw is an editable vector that can be updated and moved around the canvas, saving you valuable work time.. concepts is used by creative professionals for note taking, mind mapping, drawing, storyboarding, graphic design, product iteration, interior design and architectural planning. what is concepts' development methodology? our development methodology is highly iterative. we take each feature through a complete design cycle. we focus on building one feature at a time, iterate until it’s clean and well developed, then ship a beta as quickly as we can to hear from our users. they are a fantastic group who give us insightful feedback, which we incorporate before releasing the final product. this means we're delivering releases every week on one platform or another. tell us about the tophatch team behind concepts. our company has been distributed globally from the very start - often called remote, but it works well for us. ben and i started the company and worked together on concepts for a year before meeting in-person. we embrace the benefits of a distributed team and avoid the downsides where we can. that means trusting each team member to get their work done and embracing asynchronous workflows. people in the team work the hours and days that work best for them and plan and schedule their work to minimize blocking dependencies on other people. was concepts designed for mobile phones or tablets? is there a difference? concepts is designed for tablet and stylus first, as the larger screen gives users the most space to sketch and think. when we brought it to android, we were likely the first major app built for chrome os first - it has a large screen, stylus, and resizable windows we wanted to make sure we supported well. we then made it work for phones, although our design did account for this up-front. it’s a challenge to offer the same tools and functionality on really small screens. ultimately, we have to bias our decisions to the devices our paying users care about the most, which are the ones that give them the most space to work. what’s your approach to user experience and design principles in app development? our general philosophy is that a good design interface allows creators to focus on what they want to get done. concepts is a creative app that helps you to work efficiently, so tools are simple, customizable, and only where you need them. if you forget you're using the app as you're "in the zone”, then we have achieved our goal. in concrete terms, this means minimizing the steps in a workflow, avoiding pop-ups and notifications that block progress, and allowing the user to customize layout and tools so the features they need are close at hand (or tap). another key principle for us is taking a humble position - we don't assume we have the right answers. we listen closely to what our customers want, we prototype features, get feedback, and then adapt. sometimes this is painful as it means starting again from scratch on a feature we've put weeks of effort into, but in the long run, it's the right choice. how have you maintained your app’s performance since launch? we focus on the long-term success and health of concepts. we are constantly looking at all aspects of the app's performance. how are we doing with downloads? how well do users convert to becoming paying users? how much time do they spend using the app? we then have to pick an area of focus and look at how to improve that area. roughly speaking, we tend to spend 3-6 months focusing on one area at a time, as we have found this level of commitment is needed to get results. it's often hard to move the needle unless you commit to a few cycles of changes - this way you can measure what you try, see the results, and adapt your approach. what advice do you have for indie developers and designers attempting to develop a successful app business? focus. that's the biggest competitive advantage you have. find your niche that the big companies are not paying attention to. build something amazing that is loved by your group of customers. and if your business model requires you making money, make sure you are asking for money from those customers from the very beginning. it's a very clear metric as to whether you are building something that meets a customer's needs. once you have conquered the niche, expand from there. what is next for concepts? our big focus over the coming months is cross-platform workflows. our goal is to make it easy to share and collaborate on content across android, windows, and ios. how has samsung helped your business? the number one way samsung helps is by producing so many amazing products that support a stylus. nine out of the top ten devices that use concepts on android are made by samsung! a high performance tablet that supports palm rejection and a stylus with pressure and tilt response is key to concepts being a great experience. with the best of galaxy store awards 2020 selections approaching mid-year, what tips do you have to stand out from the crowd? it's probably not what they want to hear, but i'd recommend not focusing on awards. focus on making your customers happy :) . we want to thank david for talking with us about tophatch’s award winning design tools, how concepts was developed and the importance of monitoring app performance and tips for indie developers interested in building a successful app business. if you’re on a samsung galaxy device, you can check out their app. follow us on twitter at @samsung_dev for more developer interviews as well as tips for building games, apps, and more for the galaxy store. find out more about our best of galaxy store awards.
Samsung Developers
tutorials mobile, game
blogat gdc 2019, arm and samsung were joined on stage in the “all-in-one guide to vulkan on mobile” talk to share their learning from helping numerous developers and studios in optimizing their vulkan mobile games. in tandem, arm released vulkan best practices for mobile developers to address some of the most common challenges faced when coding vulkan applications on mobile. it includes an expansive list of runnable samples with full source code available online. this blog series delves in detail into each sample, investigates individual vulkan features, and demonstrates best practices of how to use them. overview setting up a vulkan swapchain involves picking between options that don’t have a straightforward connection to performance. the default options might not be the most efficient ones, and what works best on a desktop may be different from what works on mobile. looking at the vkswapchaincreateinfokhr struct, we identified three options that need a more detailed analysis: presentmode: what does each present mode imply in terms of performance? minimagecount: which is the best number of images? pretransform: what does it mean, and what do we need to do about it? this blog post covers the first two points, as they are both tied to the concept of buffering swapchain images. surface transform is quite a complex topic that we'll cover in a future post on the arm community. choosing a present mode vulkan has several present modes, but mobile gpus only support a subset of them. in general, presenting an image directly to the screen (immediate mode) is not supported. the application will render an image, then pass it to the presentation engine via vkqueuepresentkhr. the presentation engine will display the image for the next vsync cycle, and then it will make it available to the application again. the only present modes which support vsync are: fifo: vk_present_mode_fifo_khr mailbox: vk_present_mode_mailbox_khr we will now each of these in more detail to understand which one is better for mobile. figure 1 shows an outline of how the fifo present mode works. the presentation engine has a queue (or “fifo”) of images, in this case, three of them. at each vsync signal, the image in front of the queue displays on screen and is then released. the application will acquire one of the available ones, draw to it and then hand it over to the presentation engine, which will push it to the back of the queue. you may be used to this behavior from other graphics apis, double or triple buffering – more on that later! an interesting property of the fifo present mode is that if the gpu can process images really fast, the queue can become full at some point. when this happens, the cpu and the gpu will idle until an image finishes its time on screen and is available again. the framerate will be capped at a stable 60 fps, corresponding to vsync. this idling behavior works well on mobile because it means that no unnecessary work is performed. the extra cpu and gpu budget will be detected by the dvfs (dynamic voltage and frequency scaling) system, which reduces their frequencies to save power at no performance cost. this limits overheating and saves battery life – even a small detail such as the present mode can have a significant impact on your users' experience! let us take a look at mailbox now. the main difference, as you can see from figure 2 below, is that there is no queue anymore. the presentation engine will now hold a single image that will be presented at each vsync signal. the app can acquire a new image straight away, render to it, and present it. if an image is queued for presentation, it will be discarded. mobile demands efficiency; hence, the word "discarded" should be a big red flag when developing on mobile – the aim should always be to avoid unnecessary work. since an image was queued for presentation, the framerate will not improve. what is the advantage of mailbox then? being able to keep submitting frames lets you ensure you have the latest user input, so input latency can be lower versus fifo. the price you pay for mailbox can be very steep. if you don't throttle your cpu and gpu at all, one of them may be fully utilized, resulting in higher power consumption. unless you need low-input latency, our recommendation is to use fifo. choosing the number of images it is now clear that fifo is the most efficient present mode for mobile, but what about minimagecount? in the context of fifo, minimagecount differentiates between double and triple buffering, which can have an impact on performance. the number of images you ask for needs to be bound within the minimum and maximum images supported by the surface (you can query these values via surface capabilities). you will typically ask for 2 or 3 images, but the presentation engine can decide to allocate more. let us start with double buffering. figure 4 outlines the expected double-buffering behavior. double buffering works well if frames can be processed within 16.6ms, which is the interval between vsync signals at a rate of 60 fps. the rendered image is presented to the swapchain, and the previously presented one is made available to the application again. what happens if the gpu cannot process frames within 16.6ms? double buffering breaks! as you can see from figure 5, if no images are ready when the vsync signal arrives, the only option for the presentation engine is to keep the current image on screen. the app has to wait for another whole vsync cycle before it acquires a new image, which effectively limits the framerate to 30 fps. a much higher rate could be achieved if the gpu could keep processing frames. this may be ok for you if you are happy to limit framerate to 30 fps, but if you're aiming for 60 fps, you should consider triple buffering. even if your app can achieve 60 fps most of the time, with double buffering the tiniest slowdown below 60 fps results in an immediate drop to 30 fps. figure 6 shows triple buffering in action. even if the gpu has not finished rendering when vsync arrives, a previous frame is queued for presentation. this means that the presentation engine can release the currently displayed image and the gpu can acquire it as soon as it is ready. in the example shown, triple buffering results in ~50 fps versus 30 fps with double buffering. the sample our vulkan best practice for mobile developers project on github has a sample on swapchain images, that specifically compares double and triple buffering. you can check out the tutorial for the swapchain images sample. as you can see from figures 7 and 8, triple buffering lets the app achieve a stable 60 fps (16.6 ms frame time), providing x2 higher frame rate. when switching to double buffering the framerate drops. we encourage you to check out the project on the vulkan mobile best practice github page and try this or other samples for yourself! the sample code gives developers on-screen control to demonstrate multiple ways of using the feature. it also shows the performance impact of the different approaches through real-time hardware counters on the display. you are also warmly invited to contribute to the project by providing feedback and fixes and creating additional samples. please also visit the arm community for more in-depth blogs on the other vulkan samples.
Attilio Provenzano
Distribute Galaxy Store Games
webgalaxy store games reach millions of galaxy device users by distributing your games in galaxy store! go to seller portal go to seller portal bring your game to galaxy store galaxy store is pre-loaded on all samsung galaxy tablets and phones. open a new revenue stream, diversify your sales, and increase your market share by bringing your game to galaxy store. get started in galaxy store bring your game to users instantly through cloud streaming take a user from an ad click directly into your game and increase accessibility to all compatible samsung galaxy devices. get started with instant plays 2.0 galaxy store—your winning game plan with billions of downloads in over 180 countries, samsung's galaxy store is the marketplace for your games on samsung galaxy devices. distribute your games in galaxy store to tap into the mobile gaming global revenue. bring your game to galaxy store and reach the hundreds of millions of active samsung galaxy device users. prepare register with seller portal monetize integrate with samsung iap launch publish in galaxy store level up run promotions and offer discounts video thumbanil galaxy store with the latest games, ultimate exclusives, best offers, expert recommendations and personalized content, galaxy store is the place for endless discovery. get more. game more. learn more samsung provides an app store for galaxy devices as well as many tools to help you improve the performance of your games, platforms to increase your user base, and services to increase your revenue. learn more about these tools, services, and opportunities available to your brand. galaxy store samsung's marketplace for your games and apps, with galaxy device users in over 180 countries. discover galaxy store see what galaxy store can bring to your game. prep your game for galaxy store recommendations for creating your apk before submitting to galaxy store. gaming hub a high-engagement premium marketing channel reaching the global galaxy user base. galaxy gamedev looking for information on game development in general? galaxy gamedev provides technical support and best practices for game development in both the android and galaxy ecosystems. galaxy performance sdk the galaxy performance sdk enables the system and the application to communicate and react to changes in resource availability and demand. monetize your game discover different ways to generate revenue in galaxy store. create in-app purchase items use samsung iap to sell game items. includes examples, unity and unreal plugins, and more. view performance metrics use galaxy store statistics, included with seller portal, to view sales, downloads, conversion, and so much more. marketing resources promotional guidelines and tools to help you become a successful seller in galaxy store. third-party attribution platforms track user data using third-party attribution platforms integrated with galaxy store. add a galaxy store review link share a link from your app to your app's review page. positive reviews can influence purchases. gaming-focused podcasts listen to these industry leaders to learn how to design, develop, and distribute your game titles with samsung. go to all podcasts hyunah kwon samsung electronics aurelien lavaud gameloft / asphalt chris benjaminsen frvr jong woo samsung game services success stories go to blogs learn how other gaming partners have been successful {{pagetype}} {{pagecategorydisplay}} {{title}} {{shortdesc}} {{authorname}} have questions? samsung answers your frequently asked questions, provides a forum to communicate with other game developers, or can answer your questions directly. faq frequently asked questions about game development for samsung devices and galaxy store. game development forum ask questions and discuss ideas with other game developers. ask a question submit a developer support request and we'll respond as soon as possible.
Develop Smart TV
docnacl toolchain importantdue to nacl deprecation by the chromium project, tizen tv will continue its support for nacl only until 2021-year products meanwhile, tizen tv will start focusing on high-performance, cross-browser webassembly from 2020-year products the native client technology allows to run native c/c++ applications inside a web browser tizen web applications can take full advantage of the increased performance of native code over javascript nacl sdk pepper toolchain 63 newmay 22, 2018 pepper toolchain 1 68gb pepper toolchain 56apr 10, 2018 pepper toolchain 2 06gb pepper toolchain 47apr 04, 2017 pepper toolchain 2 02gb pepper toolchain 42apr 08, 2016 pepper toolchain 1 12gb pepper toolchain 37dec 03, 2015 pepper toolchain 974 03mb pepper toolchain 31feb 26, 2016 pepper toolchain 1,297mb pepper 63 new & changed features low-latency mode in nacl player api low-latency mode in video decoder api bug fixes samsung specific fixes various bug fixes and performance improvements known issues n/a pepper 56 new & changed features samsung specific changes tizen file system interface added bug fixes samsung specific fixes fixed memory leaks in nacl player chromium specific fixes fixed dynamic library loadin with glibc known issues n/a pepper 47 new & changed features samsung specific changes nacl player interfaces updated support for h265 codec in nacl player added loading shared libraries with nacl glibc toolchain enabled update of program tv specific interfaces chromium specific changes upgraded llvm to version 3 6 since pepper 43 the c11/c++11 acquire, release and acq_rel memory orders are now generated by default since pepper 43 bug fixes samsung specific fixes fixed an error nacl_io does not propagate socket errors properly chromium specific fixes fixed a code generation bug on arm when dealing with 16-bit load/store and bswap which led to a nacl validation failure since pepper 43 known issues n/a pepper 42 new & changed features samsung specific changes support in nacl_io for multicasting using samsung specific pepper api added nacl player interfaces removed gesture recognition interface update of program tv specific interfaces chromium specific changes added compositor interfaces since pepper 37 compilation speed improvements due to validation caching of the translator and linker since pepper 38 performance improvement of simd vector shuffle since pepper 38 postmessageandawaitresponse is now stable and allows javascript to communicate synchronously with nacl embeds since pepper 39 pnacl is now based on llvm 3 5 since pepper 41 the x86 nacl validators accept instructions from the avx1 extensions since pepper 41 the x86 nacl validators accept instructions from the fma3 extensions, as well as avx2 instructions except vgather the sdk now contains experimental versions of i686-nacl-clang, x86_64-nacl-clang, and arm-nacl-clang as well as the clang++ equivalents these toolchains are based on the same llvm version as pnacl, but can be used to generate nacl nexe files instead of translating a pexe locally or using the gcc toolchain bug fixes n/a known issues n/a technical document pepper_42 api reference pepper 37 new & changed features samsung specific changes added program tv specific interfaces added udp multicast support extension interface added removable storage interfaces added gesture recognition interface chromium specific changes the nacl_io library now includes a fuse mount since pepper 33 translation now uses dynamic load balancing, making translation time faster since pepper 35 upgraded llvm to version 3 4 since pepper 35 bug fixes n/a known issues n/a technical document pepper_37 api reference pepper 31 new & changed features chromium specific changes improved socket support in the nacl_io library bug fixes n/a known issues n/a technical document pepepr_31 api reference
Develop Smart TV
apivoiceinteraction api to use samsung product api, <script type="text/javascript" src="$webapis/webapis/webapis js"></script> should be loaded in index html samsung tvs allow developers to use voice commands such as navigation, search, selection and media control to control their application the voice assistant in the tv can be bixby or other assistants regardless of which assistant is used, the application will interact with it via the voice interaction apis for best results, we recommend the application to be implemented with all the features that are described in this document since 6 0 product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol summary of interfaces and methods interface method voiceinteractionmanagerobject voiceinteractioncallback optional voiceapplicationstate onupdatestate ;optional boolean onnavigation voicenavigation voicenavigation ;optional boolean onsearch voicesearchterm voicesearchterm ;optional boolean onplay ;optional boolean onstop ;optional boolean onpause ;optional boolean onexit ;optional boolean onselection long voiceselection ;optional boolean ontitleselection domstring title ;optional boolean onfastforward ;optional boolean onrewind ;optional domstring onsearchcollection voicesearchterm voicesearchterm ;optional boolean onchangeappstate voiceapplicationstate state ;optional boolean onchangeprevioustrack ;optional boolean onchangenexttrack ;optional boolean onrestart ;optional boolean onskipbackward long offsetseconds ;optional boolean onskipforward long offsetseconds ;optional boolean onsetplayposition long position ;optional boolean onchangesubtitlemode mediafunctionmode mode ;optional boolean onchangeshufflemode mediafunctionmode mode ;optional boolean onchangescreenfitmode mediafunctionmode mode ;optional boolean onzoom mediazoommode zoom ;optional boolean onrotate mediarotatemode direction ;optional boolean onchange360mode mediafunctionmode mode ;optional boolean onchangerepeatmode mediarepeatmode mode ;optional boolean oncontinuewatching ;optional boolean oncustom domstring jsonobjectstring ;optional domstring onrequestcontentcontext ;optional boolean onadditiontolist listitem list ;optional boolean onremovalfromlist listitem list ;optional boolean onplaylist listitem list ;optional boolean onbrowselist listitem list ;optional boolean onskipad ; voicesearchterm voiceinteractioncontentcontext voiceinteractionmanager domstring getversion ;void setcallback voiceinteractioncallback callback ;void listen ;domstring getdatafromsearchterm voicesearchterm voicesearchterm, voicesearchtermfield field ;domstring buildcollectiondeeplinkdata domstring appid, domstring title, domstring payload ;domstring buildcollectionshowdata domstring appid, domstring title, domstring payload, domstring thumbnail ;voiceinteractioncontentcontext buildvoiceinteractioncontentcontextitem long positionx, long positiony, domstring title, domstring[] aliasarr, boolean bfocused ;domstring buildvoiceinteractioncontentcontextresponse voiceinteractioncontentcontext[] contentcontextarr ; 1 type definitions 1 1 voiceapplicationstate the application status handled via voice interaction enum voiceapplicationstate { "none", "home", "list", "player", "setting", "search", "unknown" }; the following values are supported none application default status home the status of application's home list the status of application showing something in list player the status of application playing something setting the status of application showing its setting search the status of application searching its content unknown the status of unknown 1 2 voicenavigation the navigation via voice interaction enum voicenavigation { "nav_previous", "nav_next", "nav_left", "nav_right", "nav_up", "nav_down", "nav_show_more", "nav_unknown" }; the following values are supported nav_previous the navigation for the previous page nav_next the navigation for the next page nav_left the navigation for the left item nav_right the navigation for the right item nav_up the navigation for the upper item nav_down the navigation for the down item nav_show_more the navigation for the detail page nav_unknown the navigation for unknown 1 3 voicesearchtermfield defines the fields which can be delivered via voice search enum voicesearchtermfield { "search_term_utterance", "search_term_title", "search_term_genre", "search_term_cast", "search_term_content_type", "search_term_release_date_from", "search_term_release_date_to" }; the following values are supported search_term_utterance the field for the full utterance search_term_title the field for the title search_term_genre the field for the genre search_term_cast the field for the cast search_term_content_type the field for the content type movie/tvshow search_term_release_date_from the field for the start date time iso 8601 search_term_release_date_to the field for the end date time iso 8601 1 4 mediafunctionmode enum for the param of media control function mode enum mediafunctionmode { "media_function_on", "media_function_off" }; the following values are supported media_function_on media function mode on media_function_off media function mode off 1 5 mediarotatemode enum for the param of rotate enum mediarotatemode { "media_rotate_left", "media_rotate_right" }; the following values are supported media_rotate_left media rotate mode left media_rotate_right media rotate mode right 1 6 mediazoommode enum for the param of zoom enum mediazoommode { "media_zoom_in", "media_zoom_out" }; the following values are supported media_zoom_in media zoom mode in media_zoom_out media zoom mode out 1 7 mediarepeatmode enum for the param of media repeat enum mediarepeatmode { "media_repeat_off", "media_repeat_one", "media_repeat_all" }; the following values are supported media_repeat_off media repeat mode off media_repeat_one media repeat mode for one track media_repeat_all media repeat mode for all tracks 1 8 listitem enum for the param of list item enum listitem { "list_bookmarks", "list_watch_later", "list_unknown" }; the following values are supported list_bookmarks bookmarks list_watch_later watchlater list_unknown unknown 2 interfaces 2 1 voiceinteractionmanagerobject the voiceinteractionmanagerobject interface defines what is instantiated by the webapis object from the tizen platform there will be a webapis voiceinteraction object that allows access to the functionality of the voice interaction api to use the voice interaction api, the following privileges must be declared in the manifest file of the application if they are not declared, all usage of these apis are blocked, and security exceptions are thrown to use these privileges, the minimum ‘required_version’ is 6 0 [nointerfaceobject] interface voiceinteractionmanagerobject { readonly attribute voiceinteractionmanager voiceinteraction; }; webapi implements voiceinteractionmanagerobject; since 6 0 attributes readonly voiceinteractionmanager voiceinteraction this attribute defines the namespace for voiceinteraction apis 2 2 voiceinteractioncallback every voice interaction application should implement a callback function, so that the assistant can operate the controls your application can interact with voice assistant by passing the callbacks in webapis voiceinteraction setcallback and calling webapis voiceinteraction listen except onupdatestate, onsearchcollection callbacks, the return value for the callback is the boolean flag for support or not if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function [callback, nointerfaceobject] interface voiceinteractioncallback { optional voiceapplicationstate onupdatestate ; optional boolean onnavigation voicenavigation voicenavigation ; optional boolean onsearch voicesearchterm voicesearchterm ; optional boolean onplay ; optional boolean onstop ; optional boolean onpause ; optional boolean onexit ; optional boolean onselection long voiceselection ; optional boolean ontitleselection domstring title ; optional boolean onfastforward ; optional boolean onrewind ; optional domstring onsearchcollection voicesearchterm voicesearchterm ; optional boolean onchangeappstate voiceapplicationstate state ; optional boolean onchangeprevioustrack ; optional boolean onchangenexttrack ; optional boolean onrestart ; optional boolean onskipbackward long offsetseconds ; optional boolean onskipforward long offsetseconds ; optional boolean onsetplayposition long position ; optional boolean onchangesubtitlemode mediafunctionmode mode ; optional boolean onchangeshufflemode mediafunctionmode mode ; optional boolean onchangescreenfitmode mediafunctionmode mode ; optional boolean onzoom mediazoommode zoom ; optional boolean onrotate mediarotatemode direction ; optional boolean onchange360mode mediafunctionmode mode ; optional boolean onchangerepeatmode mediarepeatmode mode ; optional boolean oncontinuewatching ; optional boolean oncustom domstring jsonobjectstring ; optional domstring onrequestcontentcontext ; optional boolean onadditiontolist listitem list ; optional boolean onremovalfromlist listitem list ; optional boolean onplaylist listitem list ; optional boolean onbrowselist listitem list ; optional boolean onskipad ; }; since 6 0 methods onupdatestate developers must specify the current application status to the onupdatestate function to get a proper voice control from the voice assistant this function is called right before processing every utterance, so that the voice assistant can be aware of the application status dynamically depending on the status, the callback function called could be different therefore, it is important to return the real status of the application optional voiceapplicationstate onupdatestate ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol return value optional voiceapplicationstate the status of the current application status "none" application is in its default status same as "player" status "list" the application is showing something in list during this status, the utterances "play this" or "play" will call onselection 0 the utterance "previous" will call onnavigation "nav_previous" "player" the application is playing a piece of content during this status, the utterance "play this" will call onplay since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "list"; } } ; onnavigation to support navigation controls via voice, the application should have the following callbacks otherwise, the key event will be generated optional boolean onnavigation voicenavigation voicenavigation ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters voicenavigation the navigation enumeration via voice return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "list"; }, onnavigation function voicenavigation { var bsupport = true; console log "onnavigation " + voicenavigation ; switch voicenavigation { case "nav_previous " // "previous page" break; case "nav_next" // "next page" break; case "nav_left" // "go to left" break; case "nav_right" // "move to right" break; case "nav_up" // "move up" break; case "nav_down" // "go down" break; // if there is no callback implementation for these enums, // tv will generate remote control key events "arrowright", "arrowleft", "arrowup", "arrowdown" case "nav_show_more" // "show me more" break; default bsupport = false; break; } return bsupport; } } ; onsearch for a contents search provided by the application, it can receive a search utterance to show the search results in order to support the search via voice, the application must be registered to samsung tv's companion search application and have the following callbacks the onsearch parameter has a specific format to learn more about it, please refer to the getdatafromsearchterm some callbacks are not called by default such as onsearch to receive all the callback signals on the development stage, request a key from samsung and apply the key to the manifest of your tizen application the following example shows how to add the "http //developer samsung com/tizen/metadata/support-vif-devfeature" key to the manifest file optional boolean onsearch voicesearchterm voicesearchterm ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters voicesearchterm the object contains the information via voice return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example <?xml version="1 0" encoding="utf-8"?> <widget xmlns="http //www w3 org/ns/widgets" tizen="http //tizen org/ns/widgets" id="http //yourdomain/voiceinteractionwebsample" version="1 0 0" viewmodes="maximized"> <access origin="" subdomains="true"></access> < application id="abcdefghrj voiceinteractionwebsample" package="abcdefghrj" required_version="6 0"/> <content src="index html"/> <feature name="http //tizen org/feature/screen size normal 1080 1920"/> <icon src="icon png"/> < metadata key="http //developer samsung com/tizen/metadata/support-vif-dev-feature" value="true"/> <name>voiceinteractionwebsample</name> < privilege name="http //developer samsung com/privilege/voicecontrol"/> < privilege name="http //developer samsung com/privilege/microphone"/> < profile name="tv-samsung"/> </widget> @endcode @param voicesearchterm the object contains the information via voice @see getdatafromsearchterm @throw none n/a @return boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function @code webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "home"; }, onsearch function voicesearchterm { console log "onsearch " + json stringify voicesearchterm ; var title = webapis voiceinteraction getdatafromsearchterm voicesearchterm, "search_term_title" ; var genre = webapis voiceinteraction getdatafromsearchterm voicesearchterm, "search_term_genre" ; console log "request to search " + title + ", " + genre ; return true; } } ; onplay supports the media control to handle playback play optional boolean onplay ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "player"; }, onplay function { // tv default action generates the remote control key, "mediaplay" console log "onplay called" ; return true; } } ; onstop supports the media control to handle playback stop optional boolean onstop ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "player"; }, onstop function { // tv default action generates the remote control key, "mediastop" console log "onstop called" ; return true; } } ; onpause supports the media control to handle playback pause optional boolean onpause ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "player"; }, onpause function { // tv default action generates the remote control key, "mediaplaypause" console log "onpause called" ; return true; } } ; onexit supports the media control to handle playback exit optional boolean onexit ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "player"; }, onexit function { // tv default action generates the remote control key, "exit" console log "onexit called" ; return true; } } ; onselection to support selection controls via voice, the application should have the following callbacks this callback supports the ordinal, relative selection control optional boolean onselection long voiceselection ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters voiceselection the relative index via voice, ex the last item is -1, the current item is 0, the first item is 1 return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "list"; }, onselection function voiceselection { var bsupport = true; console log "onselection " + voiceselection ; switch voiceselection { case -1 // "select the last one" break; case 0 // "select this" break; default { if voiceselection >= 1 // "select the first one" { // select the voiceselection th item // index of the first item is 1 console log "for ordinal " + voiceselection ; } else { bsupport = false; } } break; } return bsupport; } } ; ontitleselection title selection refers to an utterance in the format "select {title name}" to support the title selection via voice, the following two callbacks are required onrequestcontentcontext and ontitleselection the onrequestcontentcontext callback provides the information regarding the content of the screen such as title and position to the samsung tv this method will be invoked at the beginning of every utterance the response consists of positionx int , positiony int , title string , alias string array and bfocused bool the title property is used for asr conversion and the other properties are used to set the priority of each title the ontitleselection callback receives the title name from the utterance optional boolean ontitleselection domstring title ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters title the string input via voice return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "list"; }, onrequestcontentcontext function { console log "onrequestcontentcontext " ; var result = []; try { var item = { "positionx" 0, "positiony" 0, "title" "title text1", "alias" ["title1", "my text1"], "bfocused" true }; result push item ; var item2 = { "positionx" 1, "positiony" 0, "title" "title text2", "alias" ["title2", "my text2"], "bfocused" false }; result push item2 ; result push webapis voiceinteraction buildvoiceinteractioncontentcontextitem 2,0,"title text3", ["title3", "my text3"], false ; } catch e { console log "exception [" + e code + "] name " + e name + " message " + e message ; } return webapis voiceinteraction buildvoiceinteractioncontentcontextresponse result ; }, ontitleselection function title { console log "ontitleselection" + title ; return true; } } ; onfastforward supports the media control to handle playback ff optional boolean onfastforward ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "player"; }, onfastforward function { // tv default action generates the remote control key, "mediafastforward" console log "onfastforward called" ; return true; } } ; onrewind supports the media control to handle playback rewind optional boolean onrewind ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "player"; }, onrewind function { // tv default action generates the remote control key, "mediarewind" console log "onrewind called" ; return true; } } ; onsearchcollection supports the search utterance appending to the default search application the value of the result for the search term optional domstring onsearchcollection voicesearchterm voicesearchterm ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters voicesearchterm the object contains the information via voice return value optional domstring the formatted value of the result for the search term since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "none"; }, onsearchcollection function voicesearchterm { log "onsearchcollection " + json stringify voicesearchterm ; var result = []; //appname and appid are of the ui application to get the payload on launch result push webapis voiceinteraction buildcollectiondeeplinkdata "a1b2c3d4ef mytizenappid", "mytizenapp", "page_id=123456&method=voice" ; return json stringify result ; } } ; onchangeappstate to support the utterance of shortcut commands, the application must have the onchangeappstate callback optional boolean onchangeappstate voiceapplicationstate state ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters state the application context via voice return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "none"; }, onchangeappstate function state { // tv default action launches the samsung tv firstscreen, menu or search application depending on the input parameter // "go to home", "go to settings", "go to search" console log "onchangeappstate " + state ; var bsupport = true; switch state { case "home" // go to app's home break; default bsupport = false; break; } return bsupport; } } ; onchangeprevioustrack in order to handle requests to move to the previous track via voice, the application should override the onchangeprevioustrack callback optional boolean onchangeprevioustrack ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onchangeprevioustrack function { console log "onchangeprevioustrack" ; return true; } } ; onchangenexttrack in order to handle requests to move to the next track via voice, the application should override the onchangenexttrack callback optional boolean onchangenexttrack ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onchangenexttrack function { console log "onchangenexttrack" ; return true; } } ; onrestart in order to handle requests to restart to this track via voice, the application should override the onrestart callback optional boolean onrestart ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onrestart function { console log "onrestart" ; return true; } } ; onskipbackward in order to handle requests to skip backward via voice, the application should override the onskipbackward callback optional boolean onskipbackward long offsetseconds ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters offsetseconds the relative position in seconds return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onskipbackward function offsetseconds { console log "onskipbackward " + offsetseconds ; return true; } } ; onskipforward in order to handle requests to skip forward via voice, the application should override the onskipforward callback optional boolean onskipforward long offsetseconds ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters offsetseconds the relative position in seconds return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onskipforward function offsetseconds { console log "onskipforward " + offsetseconds ; return true; } } ; onsetplayposition in order to handle requests to set play position via voice, the application should override the onsetplayposition callback optional boolean onsetplayposition long position ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters position the absolute position in seconds return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onsetplayposition function position { console log "onsetplayposition " + position ; return true; } } ; onchangesubtitlemode in order to handle requests to turn the subtitle feature on/off via voice, the application should override the onchangesubtitlemode callback optional boolean onchangesubtitlemode mediafunctionmode mode ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters mode media_function_on turning on / media_function_off turning off return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onchangesubtitlemode function mode { console log "onchangesubtitlemode" ; switch mode { case "media_function_on" console log "function on" ; break; default console log "function off" ; break; } return true; } } ; onchangeshufflemode in order to handle requests to turn the shuffle feature on/off via voice, the application should override the onchangeshufflemode callback optional boolean onchangeshufflemode mediafunctionmode mode ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters mode media_function_on turning on / media_function_off turning off return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onchangeshufflemode function mode { console log "onchangeshufflemode" ; switch mode { case "media_function_on" console log "function on" ; break; default console log "function off" ; break; } return true; } } ; onchangescreenfitmode in order to handle requests to turn the screen fit feature on/off via voice, the application should override the onchangescreenfitmode callback optional boolean onchangescreenfitmode mediafunctionmode mode ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters mode media_function_on turning on / media_function_off turning off return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onchangescreenfitmode function mode { console log "onchangescreenfitmode" ; switch mode { case "media_function_on" console log "function on" ; break; default console log "function off" ; break; } return true; } } ; onzoom in order to handle requests to zoom in/out via voice, the application should override the onzoom callback optional boolean onzoom mediazoommode zoom ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters zoom media_zoom_in zoom in / media_zoom_out zoom out return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onzoom function zoom { console log "onzoom" ; switch zoom { case "media_zoom_in" console log "zoom in" ; break; default console log "zoom out" ; break; } return true; } } ; onrotate in order to handle requests to rotate left/right via voice, the application should override the onrotate callback optional boolean onrotate mediarotatemode direction ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters direction media_rotate_left rotate left / media_rotate_right rotate right return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onrotate function direction { console log "onrotate" ; switch direction { case "media_rotate_left" console log "rotate left" ; break; default console log "rotate right" ; break; } return true; } } ; onchange360mode in order to handle requests to turn the 360 feature on/off via voice, the application should override the onchange360mode callback optional boolean onchange360mode mediafunctionmode mode ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters mode media_function_on turning on / media_function_off turning off return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onchange360mode function mode { console log "onchange360mode" ; switch mode { case "media_function_on" console log "function on" ; break; default console log "function off" ; break; } return true; } } ; onchangerepeatmode in order to handle requests to change the repeat mode via voice, the application should override the onchangerepeatmode callback optional boolean onchangerepeatmode mediarepeatmode mode ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters mode media_repeat_off repeat mode off / media_repeat_one repeat this track / media_repeat_all repeat all tracks return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onchangerepeatmode function mode { console log "onchangerepeatmode" ; switch mode { case "media_repeat_one" console log "one" ; break; case "media_repeat_all" console log "all" ; break; default console log "off" ; break; } return true; } } ; oncontinuewatching in order to handle requests to launch the application with playing the history track via voice, the application should override the oncontinuewatching callback to play the history track this callback will be called after launching the application optional boolean oncontinuewatching ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung device may perform its basic function since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, oncontinuewatching function { console log "oncontinuewatching" ; return true; } } ; oncustom supports the custom voice assistant action optional boolean oncustom domstring jsonobjectstring ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters jsonobjectstring the string stringified json object return value optional boolean boolean value of whether the app supports this feature voice assistant action will get the response "{"result_code" "success"}" for true, "{"result_code" "failure"}" for false/undefined since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "list"; }, oncustom function jsonobjectstring { console log "oncustom " + jsonobjectstring ; try { var customobject = json parse jsonobjectstring ; for var key in customobject { if customobject hasownproperty key { console log "key " + key + ", value " + customobject[key] ; } } } catch e { console log "exception [" + e code + "] name " + e name + " message " + e message ; return false; } return true; } } ; onrequestcontentcontext in order to support the voice title selection via voice, the application should override the onrequestcontentcontext callback, return the jsonobject string for the current content context list showing optional domstring onrequestcontentcontext ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol return value optional domstring domstring containing jsonobject string for the content context list since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "list"; }, onrequestcontentcontext function { log "onrequestcontentcontext " ; var result = []; try { var item = webapis voiceinteraction buildvoiceinteractioncontentcontextitem 1,1,"test", ["test set", "test title"], true ; result push item ; var item2 = webapis voiceinteraction buildvoiceinteractioncontentcontextitem 2,1,"test2", ["test set 2", "test title 2"], false ; result push item2 ; } catch e { console log "exception [" + e code + "] name " + e name + " message " + e message ; } return webapis voiceinteraction buildvoiceinteractioncontentcontextresponse result ; } } ; onadditiontolist in order to handle requests to add this context to list via voice, the application should override the onadditiontolist callback optional boolean onadditiontolist listitem list ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters list list_bookmarks bookmarks / list_watch_later watch later / list_preference preference / list_subscription subscription return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung tv may perform its basic function since 6 5 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onadditiontolist function list { console log "onadditiontolist" ; switch list { case "list_bookmarks" console log "add this context to bookmarks" ; break; case "list_watch_later" console log "add this context to watch later" ; break; case "list_preference" console log "like this context" ; break; case "list_subscription" console log "subscribe to context" ; break; default break; } return true; } } ; onremovalfromlist in order to handle requests to remove this context from list via voice, the application should override the onremovalfromlist callback optional boolean onremovalfromlist listitem list ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters list list_bookmarks bookmarks / list_watch_later watch later / list_preference preference / list_subscription subscription return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung tv may perform its basic function since 6 5 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onremovalfromlist function list { console log "onremovalfromlist" ; switch list { case "list_bookmarks" console log "remove this context from bookmarks" ; break; case "list_watch_later" console log "remove this context from watch later" ; break; case "list_preference" console log "dislike this context" ; break; case "list_subscription" console log "unsubscribe from this context" ; break; default break; } return true; } } ; onplaylist in order to handle requests to play this context from list via voice, the application should override the onplaylist callback optional boolean onplaylist listitem list ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters list list_preference preference / list_subscription subscription / list_watch_later watch later return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung tv may perform its basic function since 6 5 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onplaylist function list { console log "onplaylist" ; switch list { case "list_preference" console log "play liked content" ; break; case "list_subscription" console log "play subscription content" ; break; case "list_watch_later" console log "play watch later content" ; break; default break; } return true; } } ; onbrowselist in order to handle requests to browse this context from list via voice, the application should override the onbrowselist callback optional boolean onbrowselist listitem list ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters list list_preference preference / list_subscription subscription / list_watch_later watch later return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung tv may perform its basic function since 6 5 code example webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onbrowselist function list { console log "onbrowselist" ; switch list { case "list_preference" console log "browse liked content" ; break; case "list_subscription" console log "browse subscription content" ; break; case "list_watch_later" console log "browse watch later content" ; break; default break; } return true; } } ; onskipad in order to handle requests to skip ad content via voice, the application should override the onskipad callback optional boolean onskipad ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol return value optional boolean boolean value of whether the app supports this feature if a callback returns the false/undefined value, or there is no callback implementation for the utterance, samsung tv may perform its basic function since 6 5 code example webapis voiceinteraction setcallback { onupdatestate function { return "player"; }, onskipad function { console log "onskipad" ; return true; } } ; 2 3 voicesearchterm this interface represents information about the voice search term [nointerfaceobject] interface voicesearchterm { readonly attribute domstring? utterance; readonly attribute domstring? title; readonly attribute domstring? genre; readonly attribute domstring? cast; readonly attribute domstring? contenttype; readonly attribute domstring? from; readonly attribute domstring? to; }; attributes readonly domstring utterance [nullable] the field for the full utterance readonly domstring title [nullable] the field for the title readonly domstring genre [nullable] the field for the genre readonly domstring cast [nullable] the field for the cast readonly domstring contenttype [nullable] the field for the content type movie/tvshow readonly domstring from [nullable] the field for the start date time iso 8601 readonly domstring to [nullable] the field for the end date time iso 8601 2 4 voiceinteractioncontentcontext this interface represents information about the content context for an item [nointerfaceobject] interface voiceinteractioncontentcontext { attribute long positionx; attribute long positiony; attribute domstring title; attribute boolean bfocused; }; attributes long positionx the field for x-axis position of the item long positiony the field for y-axis position of the item domstring title the field for the title of the item boolean bfocused the field for whether this item has a focus 2 5 voiceinteractionmanager the voiceinteractionmanager interface is the top-level interface for the voiceinteractionmanager api that provides access to the module functionalities [nointerfaceobject] interface voiceinteractionmanager { domstring getversion ; void setcallback voiceinteractioncallback callback ; void listen ; domstring getdatafromsearchterm voicesearchterm voicesearchterm, voicesearchtermfield field ; domstring buildcollectiondeeplinkdata domstring appid, domstring title, domstring payload ; domstring buildcollectionshowdata domstring appid, domstring title, domstring payload, domstring thumbnail ; voiceinteractioncontentcontext buildvoiceinteractioncontentcontextitem long positionx, long positiony, domstring title, domstring[] aliasarr, boolean bfocused ; domstring buildvoiceinteractioncontentcontextresponse voiceinteractioncontentcontext[] contentcontextarr ; }; methods getversion this method gets the plugin's version number domstring getversion ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol return value domstring domstring return value of plugin's version exceptions webapiexception with error type unknownerror in any other error case with error type securityerror, if the application does not have the privilege to call this method since 6 0 code example try { var version = webapis voiceinteraction getversion ; console log "works with voiceinteraction [" + version + "]" ; } catch e { console log "exception [" + e code + "] name " + e name + " message " + e message ; } setcallback api to define callback functions for the voice interaction commands void setcallback voiceinteractioncallback callback ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters callback composing the functions to be called for the voice interaction commands exceptions webapiexception with error type unknownerror in any other error case with error type typemismatcherror, if an input parameter is not compatible with its expected type with error type securityerror, if the application does not have the privilege to call this method since 6 0 code example try { webapis voiceinteraction setcallback { onupdatestate function { return "list"; }, onnavigation function vn { console log "onnavigation" + vn ; return true; }, onselection function voiceselection { console log "onselection" + voiceselection ; return true; } } ; } catch e { console log "exception [" + e code + "] name " + e name + " message " + e message ; } listen api to start listening the voice interaction commands after setting callbacks by setcallback void listen ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol exceptions webapiexception with error type unknownerror in any other error case with error type securityerror, if the application does not have the privilege to call this method since 6 0 code example try { webapis voiceinteraction listen ; } catch e { console log "exception [" + e code + "] name " + e name + " message " + e message ; } getdatafromsearchterm api to parse the searchterm from samsung side domstring getdatafromsearchterm voicesearchterm voicesearchterm, voicesearchtermfield field ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters voicesearchterm the voicesearchterm from samsung side as search term field the field enum to get the value return value domstring the result string formatted exceptions webapiexception with error type unknownerror in any other error case with error type securityerror, if the application does not have the privilege to call this method with error type invalidvalueserror, if any input parameter contains an invalid value with error type typemismatcherror, if an input parameter is not compatible with its expected type since 6 0 code example var title = webapis voiceinteraction getdatafromsearchterm voicesearchterm, "search_term_title" ; var genre = webapis voiceinteraction getdatafromsearchterm voicesearchterm, "search_term_genre" ; buildcollectiondeeplinkdata api to build data for search collection easily domstring buildcollectiondeeplinkdata domstring appid, domstring title, domstring payload ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters appid the app id to be shown in the search application, and to launch the payload title the title to be shown in the search application payload the payload value to be passed with application launch request return value domstring the result string formatted exceptions webapiexception with error type unknownerror in any other error case with error type typemismatcherror, if any input parameter is not domstring type with error type securityerror, if the application does not have the privilege to call this method since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "none"; }, onsearchcollection function voicesearchterm { log "onsearchcollection " + json stringify voicesearchterm ; var result = []; // appname and appid are of the ui application to get the payload on launch try { result push webapis voiceinteraction buildcollectiondeeplinkdata "a1b2c3d4ef mytizenappid", "mytizenapp", "page_id=123456&method=voice" ; } catch e { console log "exception [" + e code + "] name " + e name + " message " + e message ; } return json stringify result ; } } ; buildcollectionshowdata api to build data for search collection easily domstring buildcollectionshowdata domstring appid, domstring title, domstring payload, domstring thumbnail ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters appid the app id to be shown in the search application, and to launch the payload title the title to be shown in the search application payload the payload value to be passed with application launch request thumbnail the thumbnail url, path to be shown in the search application return value domstring the result string formatted exceptions webapiexception with error type unknownerror in any other error case with error type typemismatcherror, if any input parameter is not domstring type with error type securityerror, if the application does not have the privilege to call this method since 6 0 code example webapis voiceinteraction setcallback { onupdatestate function { console log "assistant tries to get app state" ; return "none"; }, onsearchcollection function voicesearchterm { log "onsearchcollection " + json stringify voicesearchterm ; var result = []; // appname and appid are of the ui application to get the payload on launch try { result push webapis voiceinteraction buildcollectionshowdata "a1b2c3d4ef mytizenappid", "mytizenapp", "page_id=123456&method=voice", "http //myservice com/content/123456 png" ; } catch e { console log "exception [" + e code + "] name " + e name + " message " + e message ; } return json stringify result ; } } ; buildvoiceinteractioncontentcontextitem api to build the voiceinteractioncontentcontext of an item voiceinteractioncontentcontext buildvoiceinteractioncontentcontextitem long positionx, long positiony, domstring title, domstring[] aliasarr, boolean bfocused ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters positionx x-axis position of the item positiony y-axis position of the item title the title of the item aliasarr the alias titles of the item bfocused whether this item has a focus return value voiceinteractioncontentcontext the voiceinteractioncontentcontext object containing an item showing exceptions webapiexception with error type unknownerror in any other error case with error type typemismatcherror, if any input parameters are not compatible with its expected type since 6 0 code example onrequestcontentcontext function { console log "onrequestcontentcontext " ; var result = []; try { var item = webapis voiceinteraction buildvoiceinteractioncontentcontextitem 1,1,"test", ["test set", "test title"], true ; result push item ; } catch e { console log "exception [" + e code + "] name " + e name + " message " + e message ; } return webapis voiceinteraction buildvoiceinteractioncontentcontextresponse result ; } buildvoiceinteractioncontentcontextresponse api to build the response of onrequestcontentcontext callback function from voiceinteractioncontentcontext domstring buildvoiceinteractioncontentcontextresponse voiceinteractioncontentcontext[] contentcontextarr ; product tv privilege level public privilege http //developer samsung com/privilege/voicecontrol parameters contentcontextarr voiceinteractioncontentcontext objects of the items showing return value domstring the domstring of jsonobject string containing the items showing exceptions webapiexception with error type unknownerror in any other error case with error type typemismatcherror, if any input parameters are not compatible with its expected type since 6 0 code example onrequestcontentcontext function { console log "onrequestcontentcontext " ; var result = []; try { var item = webapis voiceinteraction buildvoiceinteractioncontentcontextitem 1,1,"test", ["test set", "test title"], true ; result push item ; } catch e { console log "exception [" + e code + "] name " + e name + " message " + e message ; } return webapis voiceinteraction buildvoiceinteractioncontentcontextresponse result ; } 3 full webidl module voiceinteraction { enum voiceapplicationstate { "none", "home", "list", "player", "setting", "search", "unknown" }; enum voicenavigation { "nav_previous", "nav_next", "nav_left", "nav_right", "nav_up", "nav_down", "nav_show_more", "nav_unknown" }; enum voicesearchtermfield { "search_term_utterance", "search_term_title", "search_term_genre", "search_term_cast", "search_term_content_type", "search_term_release_date_from", "search_term_release_date_to" }; enum mediafunctionmode { "media_function_on", "media_function_off" }; enum mediarotatemode { "media_rotate_left", "media_rotate_right" }; enum mediazoommode { "media_zoom_in", "media_zoom_out" }; enum mediarepeatmode { "media_repeat_off", "media_repeat_one", "media_repeat_all" }; enum listitem { "list_bookmarks", "list_watch_later", "list_unknown" }; [nointerfaceobject] interface voiceinteractionmanagerobject { readonly attribute voiceinteractionmanager voiceinteraction; }; webapi implements voiceinteractionmanagerobject; [callback, nointerfaceobject] interface voiceinteractioncallback { optional voiceapplicationstate onupdatestate ; optional boolean onnavigation voicenavigation voicenavigation ; optional boolean onsearch voicesearchterm voicesearchterm ; optional boolean onplay ; optional boolean onstop ; optional boolean onpause ; optional boolean onexit ; optional boolean onselection long voiceselection ; optional boolean ontitleselection domstring title ; optional boolean onfastforward ; optional boolean onrewind ; optional domstring onsearchcollection voicesearchterm voicesearchterm ; optional boolean onchangeappstate voiceapplicationstate state ; optional boolean onchangeprevioustrack ; optional boolean onchangenexttrack ; optional boolean onrestart ; optional boolean onskipbackward long offsetseconds ; optional boolean onskipforward long offsetseconds ; optional boolean onsetplayposition long position ; optional boolean onchangesubtitlemode mediafunctionmode mode ; optional boolean onchangeshufflemode mediafunctionmode mode ; optional boolean onchangescreenfitmode mediafunctionmode mode ; optional boolean onzoom mediazoommode zoom ; optional boolean onrotate mediarotatemode direction ; optional boolean onchange360mode mediafunctionmode mode ; optional boolean onchangerepeatmode mediarepeatmode mode ; optional boolean oncontinuewatching ; optional boolean oncustom domstring jsonobjectstring ; optional domstring onrequestcontentcontext ; optional boolean onadditiontolist listitem list ; optional boolean onremovalfromlist listitem list ; optional boolean onplaylist listitem list ; optional boolean onbrowselist listitem list ; optional boolean onskipad ; }; [nointerfaceobject] interface voicesearchterm { readonly attribute domstring? utterance; readonly attribute domstring? title; readonly attribute domstring? genre; readonly attribute domstring? cast; readonly attribute domstring? contenttype; readonly attribute domstring? from; readonly attribute domstring? to; }; [nointerfaceobject] interface voiceinteractioncontentcontext { attribute long positionx; attribute long positiony; attribute domstring title; attribute boolean bfocused; }; [nointerfaceobject] interface voiceinteractionmanager { domstring getversion ; void setcallback voiceinteractioncallback callback ; void listen ; domstring getdatafromsearchterm voicesearchterm voicesearchterm, voicesearchtermfield field ; domstring buildcollectiondeeplinkdata domstring appid, domstring title, domstring payload ; domstring buildcollectionshowdata domstring appid, domstring title, domstring payload, domstring thumbnail ; voiceinteractioncontentcontext buildvoiceinteractioncontentcontextitem long positionx, long positiony, domstring title, domstring[] aliasarr, boolean bfocused ; domstring buildvoiceinteractioncontentcontextresponse voiceinteractioncontentcontext[] contentcontextarr ; }; };
Develop Mobile Galaxy S Pen Remote
apipackage class tree deprecated index help com.samsung.android.sdk.penremote class buttonevent java.lang.object com.samsung.android.sdk.penremote.buttonevent public class buttonevent extends object a class that extracts button related information from an spenevent. field summary fields modifier and type field and description static int action_down a pressed gesture has started. static int action_up a pressed gesture has finished. constructor summary constructors constructor and description buttonevent(spenevent spenevent) create a buttonevent from spenevent object. method summary all methods instance methods concrete methods modifier and type method and description int getaction() returns the kind of action being performed. long gettimestamp() returns time in nanosecond at which the event happened. methods inherited from class java.lang.object clone, equals, finalize, getclass, hashcode, notify, notifyall, tostring, wait, wait, wait field detail action_down public static final int action_down a pressed gesture has started. see also: constant field values action_up public static final int action_up a pressed gesture has finished. see also: constant field values constructor detail buttonevent public buttonevent(spenevent spenevent) create a buttonevent from spenevent object. parameters: spenevent - spenevent has button information. since: 1.0.0 method detail getaction public int getaction() returns the kind of action being performed. returns: the action, such as action_down or action_up. since: 1.0.0 gettimestamp public long gettimestamp() returns time in nanosecond at which the event happened. returns: time in nanosecond at which the event happened. since: 1.0.0
success story mobile, game
blogmarch is game time, and not just for college basketball. with ar, vr, and now foldable phones, there’s a lot of exciting new platforms and tools for developers to push gameplay to the next level. and with the game developers conference taking place in san francisco from march 18-22, we’ll be highlighting all things mobile gaming with samsung. during the month of march, we’ll feature interviews with developers from some of the most successful mobile games of all time. we’ll share insights on the future of gaming from samsung leaders and one of our gaming partners, microsoft. and of course, highlight developments in the galaxy gamedev world, such as the new vulkan api and how to optimize games for faster performance. with the samsung galaxy fold about to hit the market, we’re partnering with google to share tips and advice on how developers can create games that adapt to multiple surfaces. we’ll show how devs and designers can take advantage of these new form factors to grow reach and engagement among consumers. as we announced last month, the galaxy s10 is the first mobile device to be optimized for games created on the unity platform. we’re excited to have worked with them on new, gaming engine-enhancing adaptive performance feature. so, get ready to up your dev game this month. follow us on @samsung_dev to keep up-to-date on the latest mobile gaming developments. keep an eye on our blog for more detailed content on optimizing your games, and make sure to sign up for the samsung developer program to take advantage of exclusive benefits and access helpful developer resources.
Lori Fraleigh
Develop Smart TV
docextension libraries extension libraries are additional features supported by the samsung smart tv these features are built-in and you can use them to further enhance your application the features include, for example, the following libraries webassembly webassembly provides a way to run code written in among others c and c++ on the web at near native speed using the webassembly javascript apis, you can load webassembly modules into a javascript smart tv app and share functionality between the two learn more | get sdk smart view sdk extend your mobile applications to the big screen create seamless tv and mobile experiences using android, javascript, and ios apis learn more | get sdk nacl the native client nacl technology allows you to run native c/c++ applications in a web browser use the power of native code to enhance the performance of your tizen tv web applications learn more | get sdk importantdue to nacl deprecation by the chromium project, tizen tv will continue its support for nacl only until 2021-year products meanwhile, tizen tv will start focusing on high-performance, cross-browser webassembly from 2020-year products toast toast is a very useful tool for tv web application developers samsung has created toast, an open source project, to reduce overhead in tv web application development learn more caph caph is a web application ui framework designed for easy and quick smart tv web application development you can develop visually-impressive applications using the caph framework learn more | get sdk
Develop Smart Signage
docweb inspector features this topic describes web inspector features you can use to help debug and optimize your application the web inspector provides a debugging environment where you can, for example, control javascript execution and monitor various information about your application while it runs the web inspector has the following tabs elements the "elements" tab allows you to see the web page components the css style, event listeners, and properties console the "console" tab allows you to inspect the javascript console operation you can interact with your page programmatically any errors or warnings on your page are shown in the console sources the "sources" tab allows you to inspect the javascript source page and debug your javascript code this tab supports watch expressions, callstack, scope variables, and break point operation in addition, it supports basic debugging operations continue, step over, step into, and step out network the "network" tab allows you to inspect resources downloaded over the network timeline the "timeline" tab allows you to perform advanced timing and speed analysis you can see how long the browser takes to handle dom events, and render and paint windows on the timeline, the time spent loading and rendering the application content is shown with colored bars loading blue time spent loading html content scripting yellow time spent loading javascript files rendering violet time spent rendering content painting green time spent loading graphics, such as images and icons profiles the "profiles" tab allows you to inspect the javascript performance analyses you can inspect cpu, heap, and memory allocation profiles application the "application" tab allows you to inspect resources you can interact with frames containing resources, such as html, javascript, css, images, and fonts you can also inspect websql and html5 databases, local storage, cookies, and the application cache audits the "audits" tab allows you to analyze a page as it loads and provide suggestions and optimizations for decreasing load time and increase perceived or real responsiveness
We use cookies to improve your experience on our website and to show you relevant advertising. Manage you settings for our cookies below.
These cookies are essential as they enable you to move around the website. This category cannot be disabled.
These cookies collect information about how you use our website. for example which pages you visit most often. All information these cookies collect is used to improve how the website works.
These cookies allow our website to remember choices you make (such as your user name, language or the region your are in) and tailor the website to provide enhanced features and content for you.
These cookies gather information about your browser habits. They remember that you've visited our website and share this information with other organizations such as advertisers.
You have successfully updated your cookie preferences.