【问题标题】:How can I play a swf file using WebView and accessing the file from my assets directory?如何使用 WebView 播放 swf 文件并从我的资产目录访问该文件?
【发布时间】:2012-05-08 03:44:00
【问题描述】:

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

我在这个网站上做了很多研究,似乎找不到任何有效的东西,我的代码如下。我只是犯了一个菜鸟的错误,还是我可以尝试一些更适合我的更大的东西。

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

这是我的节拍器.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, "");
    }
}

提前感谢您的帮助!

【问题讨论】:

    标签: android webview flash


    【解决方案1】:

    有时可能会发生在 web 视图上加载的 swf 文件不显示的情况。

    尝试在您的清单文件中添加 android:android:hardwareAccelerated="true"。

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

    这可能会有所帮助...

    【讨论】:

      【解决方案2】:

      就像上面提到的 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>
      

      【讨论】:

        猜你喜欢
        • 2011-03-18
        • 2012-03-11
        • 2018-02-05
        • 1970-01-01
        • 2013-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-20
        相关资源
        最近更新 更多