如何使用WebView播放swf文件并从我的assets目录访问该文件?

时间:2012-05-08 03:44:00

标签: android webview flash

我是android和flash开发的新手。我正在为我的吉他应用程序创建一个节拍器,使用闪光灯来实现节拍器部分。我已经有一个吉他的工作项目和我为节拍器动画创建的单独的flash文件。

我在这个网站上做了很多研究,似乎找不到任何有用的东西,我的代码如下。我只是犯了一个新手的错误,或者有更大的东西,我可以尝试,这对我来说会更好。

我的目标是让活动访问Metronome.swf文件并像flash生成的.apk一样播放。

这是我的metronome.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<WebView
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
   />
</LinearLayout>

这是我的MetronomeActivity.java文件:

package itcs4155.group4.guitarTeacher;


import android.os.Bundle;
import android.webkit.WebView;

public class MetronomeActivity extends BaseActivity {
   private WebView mWebView;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.metronome);


        mWebView = (WebView)findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setPluginsEnabled(true);


        String html = "<object width=\"768\" height=\"1024\"> <param name=\"movie\" value=\"file:///android_asset/Metronome.swf\"> <embed src=\"file:///android_asset/Metronome.swf\" width=\"768\" height=\"1024\"> </embed> </object>";
        String mimeType = "text/html";
        String encoding = "utf-8";
        mWebView.loadDataWithBaseURL("null", html, mimeType, encoding, "");
    }
}

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

有时可能会出现swf文件加载到Web视图上的情况。不会显示。

尝试在 清单文件 中添加android:android:hardwareAccelerated =“true”。

<application android:hardwareAccelerated="true">
        <activity ... />
        <activity android:hardwareAccelerated="true" />
    </application>

这可能会有所帮助......

答案 1 :(得分:0)

像上面提到的Akshay一样,

<activity android:hardwareAccelerated="true" />
需要添加

,但是我遇到的问题是swf无法完全加载或加载初始swf。我的解决方案是指出

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mWebView = (WebView) findViewById(R.id.web_engine);
    mWebView.getSettings().setPluginsEnabled(true);
    mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    mWebView.setBackgroundColor(Color.parseColor("#000000"));
    mWebView.loadUrl("file:///android_asset/swfFile.html");


}

请注意,要使用setPluginsEnabled,您需要将API版本降级为10或11。

您的html文件通常在发布swf文件时生成,或者您可以添加:

<div id="flashContent">
        <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="100%" id=**"Something**" align="middle">
            <param name="movie" value="**Something.swf**" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#000000" />
            <param name="play" value="true" />
            <param name="loop" value="true" />
            <param name="wmode" value="direct" />
            <param name="scale" value="showall" />
            <param name="menu" value="true" />
            <param name="devicefont" value="false" />
            <param name="salign" value="" />
            <param name="allowScriptAccess" value="sameDomain" />
            <!--[if !IE]>-->
            <object type="application/x-shockwave-flash" data="**Something.swf**" width="100%" height="100%">
                <param name="movie" value="**Something.swf**" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#000000" />
                <param name="play" value="true" />
                <param name="loop" value="true" />
                <param name="wmode" value="direct" />
                <param name="scale" value="showall" />
                <param name="menu" value="true" />
                <param name="devicefont" value="false" />
                <param name="salign" value="" />
                <param name="allowScriptAccess" value="sameDomain" />
            <!--<![endif]-->
                <a href="http://www.adobe.com/go/getflash">
                    <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Obtener Adobe Flash Player" />
                </a>
            <!--[if !IE]>-->
            </object>
            <!--<![endif]-->
        </object>
    </div>