Android WebView 中的 Flash — 如何自动设置全屏?
Posted
技术标签:
【中文标题】Android WebView 中的 Flash — 如何自动设置全屏?【英文标题】:Flash inside Android WebView — How do I set fullscreen automatically? 【发布时间】:2011-08-05 04:18:43 【问题描述】:我正在将 Flash SWF 加载到 android WebView 中。
我希望 SWF 立即全屏并集中显示。
处理闪存的类名是com.adobe.flashplayer.FlashPaintSurface
。看日志,当我手动全屏flash时,它会调用com.adobe.flashplayer.FlashPaintSurface.toggleFullScreen()
。
我的问题的第一部分是:如何为我的 Flash SWF 手动调用该方法?
请注意,对于嵌入了 Flash 的 webview,我似乎能够正确全屏显示它的唯一方法(让 Flash 的 surfaceview
全屏显示而不是在 webview view
上方显示 Flash)是通过触摸用两根手指打开屏幕,直到屏幕顶部弹出一个界面,并且不会可靠地发生。
为了集中注意力,在我的 webview 类中我调用:
@Override
protected boolean drawChild (Canvas canvas, View child, long drawingTime)
if (child.getClass().getName().equals("com.adobe.flashplayer.FlashPaintSurface"))
child.requestFocus();
return super.drawChild(canvas, child, drawingTime);
这并没有像我想象的那样设置焦点。虽然我假设,如果全屏正确,FlashPaintSurface 应该给自己焦点。但如果第一部分不可行,我想至少不必通过在启动时单击它来关注 SWF。
请注意,我是动态执行此操作,而不是调用我自己制作的 SWF,因此我无法使用 Actionscript 解决此问题。
【问题讨论】:
我发现解决焦点问题的方法是添加 onload="document.OBJECTID.focus();"进入 html 和 id="OBJECTID" name="OBJECTID" 进入 我不确定这是否可行,当您在浏览器中运行 swf 时,您通常只能从用户事件进入全屏状态,例如触摸或用鼠标单击。它是为了安全。如果应用在 adobe air 中运行,则无需用户交互即可全屏显示。 【参考方案1】:我已经成功地使用了我之前对Problem to load flv video in webview 的解决方案中的代码。它可能会有所帮助。
嵌入标签如下所示:
<embed
style="width:100%; height:100%"
src="./FLVPlayer.swf?fullscreen=true&video=./expression_sad.flv"
autoplay="true"
quality="high"
bgcolor="#000000"
name="VideoPlayer"
align="middle"
allowScriptAccess="*"
allowFullScreen="true"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer">
</embed>
【讨论】:
【参考方案2】:Adobe 的每个 Android 应用程序都使用一个文件 "application.xml" -- 默认情况下作为其描述符:
在为此编写任何代码之前,请先查看该文件。 它会更改每个版本,但我最后一次使用它是设置这个变量(全屏)..
【讨论】:
以上是关于Android WebView 中的 Flash — 如何自动设置全屏?的主要内容,如果未能解决你的问题,请参考以下文章
Android 3.0.1 的 WebView 中不显示 Flash 视频
当我的活动不可见时,如何在 Android WebView 中暂停 Flash 内容?