2011-05-21 36 views
1

我正在开发一个android 3.0平板电脑的应用程序,它应该在WebView中播放swf文件。 首先我试图从设备上打开swf文件,而不是通过互联网,没有运气。 WebView出现了,但在WebView内部,我所能看到的只是一个黑屏(在右边有一个3-4像素宽的白线)。 如果我将相同的URL加载到设备浏览器,则Flash文件播放良好。 我想我缺少WebView设置的东西,但经过几个小时的搜索和谷歌搜索,我仍然不知道什么。WebView不会在Android上播放swf文件

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

感谢您的任何答案非常mouch。 Ripityom

+0

的可能重复的[加载的SWF到web视图(http://stackoverflow.com/questions/2994116/load-an-swf-into-a-webview)这似乎提供了解决方案。 – 2011-05-22 16:49:07

回答

5

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

android:hardwareAccelerated = "true" 

我的清单文件。

+0

这很有趣!我能不能问一下在这种情况下,正在使用什么设备和Android版本?在我的两个设备上,swf文件在未启用hardwareAccelerated设置的情况下工作。 – 2011-05-28 09:13:59

+0

几个折腾几天看一个空白的屏幕后,我发现了这个...机器人:硬件加速=“真” ......我发誓。它救了我的天! – 2012-04-01 05:12:25

2

我只是复制&将你的代码粘贴到一个新的项目中,改变了swf文件的位置,它的工作完美。 (在.swf文件完成下载之前,屏幕是空白的,在某些情况下可能需要一段时间)。

您的应用程序是否具有INTERNET权限?该网址绝对正确?尝试使用几个不同的SWF文件,看看是否有区别。

0

Thx Pipityom。属性“android:hardwareAccelerated”拯救了我的生命。为我工作。

在这里,我发布了来自android开发者文档的解释“从Android 3.0开始,硬件加速的OpenGL渲染器可用于应用程序,以提高许多常见2D图形操作的性能,当启用硬件加速渲染器时,大多数在Canvas,Paint,Xfermode,ColorFilter,Shader和Camera中的操作都会加速,从而导致更平滑的动画,更平滑的滚动和更好的响应性,即使对于没有明确使用框架的OpenGL库的应用程序也是如此。不是所有的OpenGL的2D操作的加速。如果启用硬件加速渲染器,测试您的应用程序,以确保它可以利用的渲染没有错误“。