Android WebView中的Flash - 如何自动设置全屏?

8

我正在将Flash SWF加载到Android WebView中。

我希望SWF能够立即全屏并获得焦点。

负责处理Flash的类名是com.adobe.flashplayer.FlashPaintSurface。观察日志,当我手动全屏Flash时,它会调用com.adobe.flashplayer.FlashPaintSurface.toggleFullScreen()

我的第一个问题是:如何手动调用Flash SWF的该方法?

请注意,在嵌入了Flash的webview中,我似乎唯一能够正确全屏它的方法(使Flash的surfaceview全屏显示而不是Flash显示在webview view的顶部)是用两个手指触摸屏幕,直到屏幕顶部弹出一个界面,但这种方法并不可靠。

至于焦点,我在我的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 解决此问题。


我已经找到了解决焦点问题的方法,就是在HTML <body>中添加onload="document.OBJECTID.focus();",并在<EMBED>中添加id="OBJECTID" name="OBJECTID"。但是,我仍然无法正确调用该方法。 - corey
1
我不确定这是否可能,当您在浏览器中运行swf时,通常只能通过用户事件(如触摸或鼠标点击)全屏。这是为了安全起见。如果应用程序在Adobe Air中运行,则可以在无需用户交互的情况下全屏。 - Neil
2个回答

0

我之前解决在Webview中加载flv视频的问题时,使用了类似以下代码,已经得到了成功。这可能会有所帮助。

嵌入标签看起来像这样:

<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>

0
每个 Adobe 的 Android 应用程序都使用一个名为 "application.xml" 的文件作为其默认描述符:
在编写任何代码之前,请查看该文件。它会在每个版本中更改,但我上次使用它是为了设置这个变量(Full_screen)...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接