WebView不在Android上播放swf文件

时间:2011-05-21 12:31:41

标签: android flash android-webview

我正在开发一个Android 3.0平板电脑的应用程序,它应该在WebView中播放swf文件。 首先,我尝试从设备打开swf文件,而不是通过互联网,没有运气。 WebView显示,但在WebView中我只能看到一个黑屏(右侧有3-4 px宽的白线)。 如果我将相同的URL加载到设备浏览器,则Flash文件可以正常播放。 我想我在WebView设置上遗漏了一些东西,但经过几个小时的搜索和谷歌搜索后,我仍然不知道是什么。

Java代码:

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    setContentView(R.layout.presentation);

    presentationWebView = (WebView) findViewById(R.id.presentation_webview);

    presentationWebView.getSettings().setJavaScriptEnabled(true);
    presentationWebView.getSettings().setPluginsEnabled(true);
    presentationWebView.getSettings().setAllowFileAccess(true);
    presentationWebView.loadUrl("http://my_domain/fileName.swf");

}

presentation.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <WebView
        android:id = "@+id/presentation_webview"
        android:layout_width = "fill_parent"
        android:layout_height = "fill_parent"/>
</LinearLayout>

非常感谢你的任何答案。 Ripityom

3 个答案:

答案 0 :(得分:5)

我终于明白了! 只需要添加属性

android:hardwareAccelerated = "true"

到我的清单文件。

答案 1 :(得分:2)

我只是将您的代码复制并粘贴到一个新项目中,更改了swf文件位置,并且它完美运行。 (屏幕为空,直到.swf文件完成下载,在某些情况下可能需要一段时间)。

您的应用是否拥有INTERNET权限?这个URL绝对正确吗?尝试使用几个不同的SWF文件,看看是否有区别。

答案 2 :(得分:0)

Thx Pipityom。属性“android:hardwareAccelerated”拯救了我的生命。也适合我。

在这里,我发布了android开发者文档“从Android 3.0开始,应用程序可以使用硬件加速的OpenGL渲染器”的解释,以提高许多常见2D图形操作的性能。当启用硬件加速渲染器时,大多数操作在Canvas,Paint,Xfermode,ColorFilter,Shader和Camera中加速。这样可以使动画更流畅,滚动更平滑,整体响应更快,即使对于没有明确使用框架的OpenGL库的应用程序也是如此。

请注意,并非所有OpenGL 2D操作都会加速。如果启用硬件加速渲染器,请测试应用程序以确保它可以正确使用渲染器。“