2013-06-20 3 views
3

태그에 index.html 태그의 다양한 내용을 넣을 것입니다. 그 중 하나가 비디오입니다. 비디오 메뉴에서 선택하면, 내가 플레이어와 오디오 물건을 올려 그들을 초기화 :삼성 스마트 TV 응용 프로그램에서 볼륨을 제어 할 수 없습니다.

var html_data = '<object id="pluginPlayer" border=0 classid="clsid:SAMSUNG-INFOLINK-PLAYER"></object>'; 
html_data += '<object id="pluginAudio" border=0 classid="clsid:SAMSUNG-INFOLINK-AUDIO"></object>'; 
widgetAPI.putInnerHTML($('#main-content')[0], html_data); 

을하고 난

Player.init(); 
Audio.init(); 
Player.setVideoURL(url); 
Player.playVideo(); 

비디오로 초기화가 재생되기 시작하고 난으로 볼륨을 조절하려고 할 때

Error Detail: Uncaught TypeError: Object #<HTMLObjectElement> has no method 'SetVolumeWithKey' 

오에 - + 볼륨 키 난 다음 추적을 얻을 ther 손, 플레이어 (같은 방식으로 초기화되고 사용되는) 플레이어는 그 방법에 아무런 문제가 없다. 여기

코드이다

index.html을

<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> 
<script type="text/javascript" language="javascript" src="$MANAGER_WIDGET/Common/API/Plugin.js"></script> 
<script type="text/javascript" language="javascript" src='$MANAGER_WIDGET/Common/jquery.js'></script> 
... 
<script language="javascript" type="text/javascript" src="app/javascript/Main.js"></script> 
<script language="javascript" type="text/javascript" src="app/javascript/Player.js"></script> 
<script language="javascript" type="text/javascript" src="app/javascript/Audio.js"></script> 

Main.js

Main.keyDown = function() 
{ 
    var keyCode = event.keyCode; 
    switch(keyCode){ 
    ... 
     case tvKey.KEY_VOL_DOWN: 
     case tvKey.KEY_PANEL_VOL_DOWN: 
      alert("VOL_DOWN"); 
      Audio.setRelativeVolume(1); 
     break; 
    } 
    ... 
} 

Audio.js

var Audio = 
{ 
    plugin : null 
} 

Audio.init = function(){ 
    var success = true; 
    this.plugin = document.getElementById("pluginAudio"); 
    if (!this.plugin) 
    { 
     success = false; 
    } 
    return success; 
} 

Audio.setRelativeVolume = function(delta){ 
    //error reports here 
    this.plugin.SetVolumeWithKey(delta); 
} 

Audio.getVolume = function(){ 
    alert("Volume : " + this.plugin.GetVolume()); 
    return this.plugin.GetVolume(); 
} 

내가 전에 HTML의 머리와의 .js 통화 후 pluginAudio 개체를 추가하려고했습니다,

Main.onLoad = function(){ 

    window.onshow = function() { 
     //pluginAPI.registKey(tvKey.KEY_VOL_UP); 
     //pluginAPI.registKey(tvKey.KEY_VOL_DOWN); 
     //pluginAPI.registKey(tvKey.KEY_PANEL_VOL_UP); 
     //pluginAPI.registKey(tvKey.KEY_PANEL_VOL_DOWN); 
     //pluginAPI.unregistKey(tvKey.KEY_VOL_UP); 
     //pluginAPI.unregistKey(tvKey.KEY_VOL_DOWN); 
    } 
} 

로/등록 취소 키를 등록하려고 심지어 dev에 포럼에서 삼성 전자 테스트 응용 프로그램을 시도하고, 볼륨 키를 시도 할 때 동일한 오류가 발생합니다.

어떤 아이디어가 잘못 되었습니까? 볼륨 업/다운 키 (키 값 7과 11 - 잘못 입력하지 않은 경우)가있는 사용자 정의 비디오 (TV 프로그램 아님) 볼륨을 제어해야합니다.

+0

멋진 프로젝트 : '그 상황에서 this.plugin' 단지'HTMLObjectElement' 따라서이 방법은'SetVolumeWithKey' 존재하지 않는처럼 소리? 변수를 더 이상 파고 들지 않으면 서 해상도가 확실하지 않습니다. – DaveHogan

+0

고마워요, 그렇습니다 만, 이것 같은 것은 거의 없습니다. :) ** pluginAudio **와 ** pluginPlayer ** (비디오 용) 모두'[object HTMLObjectElement]'입니다. 객체는 메서드를 보유해야하지만 플레이어 만 (작동), 오디오는 않습니다. 더 명확하게하기 위해 내가 개선 할 수있는 것을 볼 것입니다. 도움을 주셔서 감사합니다! – markoc

+0

어쨌든 그 SEF 객체를 index.html 헤더에 넣으면 SEF 객체에 대한 스크립트 삽입을하지 않습니다. – imkrisna

답변

4

솔루션은 매우 간단합니다. 다른 사람이 나 같은 비슷한 문제가있는 경우에 대비하여 질문에 답할 것입니다. 모든

첫째, 나는 index.html 머리에 개체를 추가로 필요 (그리고도 오디오 이동) :

<object id="pluginAudio" border=0 classid="clsid:SAMSUNG-INFOLINK-AUDIO"></object> 
<object id="pluginObjectTVMW" border="0" classid="clsid:SAMSUNG-INFOLINK-TVMW"></object> 
<object id="pluginObjectNNavi" border=0 classid="clsid:SAMSUNG-INFOLINK-NNAVI"></object> 

pluginObjectTVMW에 선언 할 수 있습니다

var Main = 
{ 
    pluginAPI: null 
}; 

주요 차이점은 내가하려고했던 것입니다 window.onshow이지만 window.onLoad이어야하므로 다음과 같아야합니다 (모듈로드 시간이 있음) :

튜토리얼 23,516,

NNavi 모듈 설명 :

NNavi 모듈은 DTV 플랫폼 (DUID와 서버 타입 예) 삼성 스마트 TV의 특정 기능을 제어한다. NNavi 모듈의 SetBannerState (nState) 기능은 TV 볼륨을 표시합니다.nState는 볼륨 OSD를 표시하기 위해 '1'로 설정됩니다. 화면에 볼륨 OSD를 표시하려면 Common.API.Plugin의 unregist() 기능을 사용하여 볼륨 키, 음소거, 나가기, 메뉴 및 Internet @ TV 키를 등록 해제하십시오.

및 오디오의 변화는 다음과 같습니다

Audio.setRelativeVolume = function(delta){ 
    this.plugin.SetVolumeWithKey(delta); 
    //apply volume to player 
    Player.plugin.audioVol(this.plugin.GetVolume); 
} 

마지막으로 참고 내가 언급 한 것처럼 나는 선수처럼 대신 "수요"를 삽입하는, head 태그에 오디오 플러그인을 이동 한 것입니다 처음에는

그건 기본적으로입니다. 초보자는 물건을 완전히로드 할 때까지 기다리지 않고 실수를했으나 즉시 Player (pluginPlayer)가 속임수로 빠져 나갔습니다.

감사

관련 문제