2012-04-04 62 views
9

我正在开发一款三星智能电视的简单游戏。当某些事情发生如准备好,胜利,失败时,我想播放小的声音文件。我不想处理闪存播放器,播放器控件..有没有一种方法来使用JavaScript来触发一个预定义音量的播放声音动作,我不想在代码中多次执行此操作。在三星智能电视上播放声音

+0

HTML5音频标签,明显的“播放”方法。更高级的:预先加载,不要在需要之前启动。 – kirilloid 2012-04-04 07:29:45

+0

我没有自己尝试,但我读了智能电视不支持HTML5的音频标签的地方。 – Enes 2012-04-04 07:33:07

回答

8

您需要添加玩家对象(SAMSUNG-INFOLINK-PLAYER)到您的<body>标签:

<object id="pluginPlayer" style="visibility: hidden; width: 0px; height: 0px; opacity: 0.0" classid="clsid:SAMSUNG-INFOLINK-PLAYER"></object> 

然后在应用程序的JavaScript只是使用此功能:

var playerObj = document.getElementById('pluginPlayer'); 
playerObj.Play("absolute_url_to_your_mp3"); 

由于播放器插件执行不同的位置在Samsung的文件系统中,您需要始终使用文件的绝对路径。它可以是远程的,但是您可以使用您应用的的location.href来获取可放置mp3的应用工作目录的绝对本地路径。

检查的文件,在这里:

http://www.samsungdforum.com/Guide/View/Developer_Documentation/Samsung_SmartTV_Developer_Documentation_2.5/API_Reference/JavaScript_APIs/Device_API/Player

5

这是我的解决方案:

添加到的index.html文件

<body> 
    <object id="pluginPlayer" border=0 classid="clsid:SAMSUNG-INFOLINK-PLAYER"> 
... 
... 
... 
</body> 

我的.js文件里面Scene1.js

SceneScene1.prototype.initialize = function() { 
var Player = document.getElementById('pluginPlayer'); 
var retVal=Player.Play("http://mysite.com/android/smartTV/little_wing.mp3"); 
... 
... 
... 
} 
1

我用电视2013年和2014年款的SDK版本5.1和我有下面的代码工作:

<object id="pluginPlayer" classid="clsid:SAMSUNG-INFOLINK-PLAYER"></object> 

var playerObj = document.getElementById('pluginPlayer'); 
var fileName = location.pathname.substring(location.pathname.lastIndexOf("/") + 1); 
playerObj.Play(document.location.href.split(fileName)[0] + 'test.mp3'); 

而且这种替代也可以(使用Flash):

<div style="position:absolute; z-index:-1;"> 
    <object type="application/x-shockwave-flash" width="100" height="50" id="fplayer"> 
     <param name="movie" value="test.swf"/> 
     <param name="quality" value="high"/> 
     <param name="bgcolor" value="blue"/> 
    </object> 
</div> 

非常感谢Dobiatowski!