Samsung Smart TV Dev – my progress so far…

In late 2011/early 2012, I volunteered to have a go at producing a Samsung TV app – a fairly basic videocast player app for a certain podcast network. As the technology used is HTML/JavaScript – it seemed interesting.

Given Samsung provide a sample app, it seemed to be an easy job. To make it a little more complicated, I wanted to provide an app covering several rss feeds.  So the idea was a “channel selector” page which took you to an episode list for the selected channel, where you could watch an episode.

Painfully, the actual video playing is done via custom Samsung code – so its not possible to fully develop in a browser environment.  You have to use the Samsung emulator.

So, the core of the app was developed in Coffeescript, using middleman to generate a static site to run inside the Samsung TV emulator. I used the serenade.js front end framework – sort of like Backbone.  To make the site flexible without having to release new versions via Samsung, a separate “config” site was used – this defined what podcast feeds to include, logos for them etc.  KeyboardJS was used to manage keyboard input – and make it fairly easy to switch between browser and emulator.

Unfortunately (?) the SDK is still being developed by Samsung, so code that worked initially, then broke when a new version of the SDK came out.

The latest version of this app is available on github – here and some sample config to drive the app.

Given the SDK issues, I reverted to doing a more basic app, that just played one feed.  This has progressed to the point that its had a few reviews with Samsung – I just need to get the time to sort out the last few items.  Its also a middleman based app (though its missing a Gemfile – doh).  The idea is that its a template for producing several apps – not as good from a user experience, but at least its minimal effort from a development perspective.

As I didnt have any ‘real’ Samsung kit to test it on, I have had to rely on the emulator, which worked fairly well – despite having to be run no Windows :(