三星电视SDK - 让一个简单的应用程序工作

时间:2013-12-26 21:45:49

标签: samsung-smart-tv

我正在尝试为SDK 5.0b提供一个非常简单的HTML / JavaScript应用程序,其说明在这里...

http://samsungtvdev.blogspot.com/2013/04/smamsung-smart-tv-how-to-write-hello.html

我可以启动VirtualBox 4.2.16并在模拟器的菜单中查看我的应用程序。但是,当我启动它时,背景是黑色的,我看不到我的应用程序。我还在模拟器中看到一些关于'RegisterType()'和其他函数不可用的警告。

我试过在三星SDK论坛上发布这个,但它已经相当死了。我也尝试了建议here,但手动复制应用程序似乎也不起作用。任何人对如何使这个工作有任何想法?

编辑:这是HTML代码。这不过是一个“你好世界”的例子。

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>HelloWorld</title>

        <!-- TODO : Common API -->
        <script type="text/javascript" language="javascript" src="$MANAGER_WIDGET/Common/API/Widget.js"> </script>
        <script type="text/javascript" language="javascript" src="$MANAGER_WIDGET/Common/API/TVKeyValue.js"> </script>

        <!-- TODO : Javascript code -->
        <script language="javascript" type="text/javascript" src="app/javascript/Main.js"></script>

        <!-- TODO : Style sheets code -->
        <link rel="stylesheet" href="app/stylesheets/Main.css" type="text/css">

        <!-- TODO: Plugins -->

    </head>

    <body onload="Main.onLoad();" onunload="Main.onUnload();">

        <!-- Dummy anchor as focus for key events -->
        <a href="javascript:void(0);" id="anchor" onkeydown="Main.keyDown();"></a>

        <!-- TODO: your code here -->
        <div id="outputDiv"></div>
    </body>
</html>

这是JavaScript代码。

var widgetAPI = new Common.API.Widget();
var tvKey = new Common.API.TVKeyValue();

var Main =
{

};

Main.onLoad = function()
{
    // Enable key event processing
    this.enableKeys();
    widgetAPI.sendReadyEvent();

    alert("App loaded!");
};

Main.onUnload = function()
{

};

Main.enableKeys = function()
{
    document.getElementById("anchor").focus();
};

Main.keyDown = function()
{
    var keyCode = event.keyCode;
    alert("Key pressed: " + keyCode);

    switch(keyCode)
    {
        case tvKey.KEY_RETURN:
        case tvKey.KEY_PANEL_RETURN:
            alert("RETURN");
            widgetAPI.sendReturnEvent();
            break;
        case tvKey.KEY_LEFT:
            alert("LEFT");
            break;
        case tvKey.KEY_RIGHT:
            alert("RIGHT");
            break;
        case tvKey.KEY_UP:
            alert("UP");
            break;
        case tvKey.KEY_DOWN:
            alert("DOWN");
            break;
        case tvKey.KEY_ENTER:
        case tvKey.KEY_PANEL_ENTER:
            alert("ENTER");
            document.getElementById("outputDiv").innerHTML += "<h1>Hello, World!</h1><br/>";
            break;
        default:
            alert("Unhandled key");
            break;
    }
};

以下是日志: http://pastebin.com/mZULDGc6

3 个答案:

答案 0 :(得分:0)

1。)查找拼写错误,拼写错误和缺少逗号。三星智能电视SDK似乎非常严格,因为你没有适当的控制台,如果你忘记逗号或其他什么,你不会有任何错误

2.)检查你的HTML / CSS

也许你应该发布你的代码,以便我仔细看看。

编辑:您忘记在HTML头中添加脚本了。您必须添加在项目中使用的每个脚本文件,例如Main.js.那将是

<script language="javascript" type="text/javascript" src="app/javascript/Main.js"></script>

以及所有必需的Samsung SmartTV API脚本文件。

答案 1 :(得分:0)

首先我看到的,你忘记了html中的“锚”标签。

<a href="javascript:void(0);" id="anchor" onkeydown="Main.keyDown();"></a>

不包含html页面中的外部JS文件和标准智能电视sdk文件:

<script type="text/javascript" language="javascript" src="$MANAGER_WIDGET/Common/API/Widget.js"> </script>
<script type="text/javascript" language="javascript" src="$MANAGER_WIDGET/Common/API/TVKeyValue.js"> </script>

然后添加

<body onload="Main.onLoad();" onunload="Main.onUnload();">

你确定加载了图片吗?在控制台中打印。 为什么div阻挡画布内的位置,将其移到外面。我认为代码以js错误开头,所以你什么都看不到。要小心点。

答案 2 :(得分:0)

我有同样的问题并通过添加背景来修复它:红色;用于css中的body标签。