开发一个安卓电视盒子的应用,需要响应遥控按键.
index.html为隐藏主页面,负责响应事件调度页面.
list.html中为列表页面 在 plusReady中添加 document.addEventListener("keydown" 去处理遥控码
play.html为播放页面.
页面都是通过 openWindow 指定了 style: {plusrequire: 'later'}, 和 createNew: true,目的是希望PlusReady一直会调用
整个流程:
(1)index.html ---> list.html ------>play.html(遥控响应正常)
(2)play.html (beforeback) --->index.html--->list.html (遥控响应失败)
/////////////////////////////////////////////////////////////////////////////////
//list.html相关的
初始是通过 mui.openWindow({url: "html/list.html",
id: id,
style: {
plusrequire: 'later'
},
extras: data,
show: {
autoShow: true,
duration: durationValue,
aniShow: aniShowType
},
createNew: true});
打开list.html,并且在plusReady添加 document.onkeydown
mui.plusReady(function(){
onPlusReady();
});
OnPlusReady()
{
document.addEventListener("keydown", function(e) {
handleKeydown(e);//遥按钮响应
}, false);
}
使用遥控按钮 选中某个视频后,通过调用
mui.fire(self.opener(), 'play', {itemID:id});//通知打开play.html
self.close();//关闭自己
////////////////////////////////////////////////////////////////////////////////////////
//从play.html通过返回键的处理返回到list.html
mui.init({
beforeback:function()
{
mui.fire(plus.webview.currentWebview().opener(),'playback',
{
domain: domain,
type: type,
fileID :id,
folderID:folderID,
buckets:__buckets
});
return true;
}
});
//////////////////////////////////////////////////////
在index.html中,
window.addEventListener('play', function(e) {
mui.openWindow({url: "html/play.html",
id: id,
style: {
plusrequire: 'later'
},
extras: data,
show: {
autoShow: true,
duration: durationValue,
aniShow: aniShowType
},
createNew: true})
})
window.addEventListener('playback', function(e) {
//重新创建 list.html
mui.openWindow({url: "html/list.html",
id: id,
style: {
plusrequire: 'later'
},
extras: data,
show: {
autoShow: true,
duration: durationValue,
aniShow: aniShowType
},
createNew: true
}
);
}
但是通过play.html在beforeback发送 playback消息通知index.html创建的 list.html 遥控按键完全失灵,只能响应 返回键.
返回首页后重新创建list.html页面后遥控又正常了.
2 个回复
1***@qq.com (作者) - jackwei86
手动置顶
小明子
如果你目标页面已经打开了,你再打开的话其实只是把隐藏的显示出来,plusready肯定不会触发的
解决办法:
1.自己重写openwindow方法
1***@qq.com (作者)
openwindow我指定了createNew: true ,另外 openwindow已经是plus提供的API了,怎么重写?
2019-06-25 10:13
小明子
回复 1***@qq.com: 不是重写plus的,是重写mui的。打开过的页面如果想二次触发的话就需要监听一个事件。
2019-07-23 18:22