【问题标题】:How to Play local swf files in a webview如何在 web 视图中播放本地 swf 文件
【发布时间】:2011-05-24 06:40:15
【问题描述】:

我正在尝试在 webview 中播放本地 .swf 文件(保存在资产或 sdcard 中)。但是我没有运气......谁能指导我正确的方式? 我可以通过 url 播放 swf 文件....但是在 webview 中播放本地文件时遇到困难

【问题讨论】:

  • 您使用什么 URL 通过浏览器播放它?这应该是您应该将 WebView 指向的 URL。
  • 我使用的代码为: Flash circa-med.org/circa-med.swf " width="550" height="400"> 它工作正常...而不是 url 我想使用代码作为
  • 你是怎么玩过swf或者flv的视频可以提供一些参考的吗?

标签: android webview


【解决方案1】:

swf2.html:

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html" charset="UTF-8" />
  </head>
  <body>
    <object width="215" height="140">
      <param name="movie" value="choudanse7us.swf">
        <embed src="file:///mnt/sdcard/choudanse7us.swf"
               width="215" height="140">
        </embed>
    </object>
  </body>
</html>

下面是安卓代码

package webView.video;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.webkit.WebView;


public class WebViewActivity extends Activity {
private WebView mWebView;

/** Called when the activity is first created. */
     @Override
     public void onCreate (Bundle savedInstanceState) {
         super. onCreate (savedInstanceState);
         setContentView(R.layout.main);



         // html file with sample swf video in sdcard

         //swf2.html points to swf in sdcard

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


         if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
             System.exit(4);
         } else {
             mWebView.loadUrl("file://" + Environment.getExternalStorageDirectory() + "/swf2.html");
         }

     }
}

【讨论】:

  • 我尝试了相同的代码,但得到了这个错误stackoverflow.com/questions/9308712/…如何解决这个问题?
  • @VENKI 你的问题得到答案了吗?我遇到了同样的问题,在我的应用程序中也显示了带有问号符号的蓝色立方体。我设法解决了它。我在我的设备中安装了闪存,但我仍然得到那个立方体。如果您需要答案,请告诉我。
  • 在你的清单文件中。在&lt;application&gt;&lt;/application&gt; 中添加以下android:hardwareAccelerated="true"&gt; 例如:&lt;application android:theme="@android:style/Theme.NoTitleBar" android:debuggable="true" android:hardwareAccelerated="true"&gt; android:icon="@drawable/ic_launcher" android:label="@string/app_name" &gt; &lt;activity ///// activity code. &lt;/activity&gt; &lt;/application&gt;
【解决方案2】:

对于资产:

webView.loadUrl("file:///android_asset/YourFile.swf");

将播放自动缩放到 WebView 大小的文件。


对于 SD 卡,我希望这样可以工作:

if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
    Log.d(TAG, "No SDCard");
} else {
    webView.loadUrl("file://" + Environment.getExternalStorageDirectory() + "/YourPath/YourFile.swf");
}

(当然是使用 READ_EXTERNAL_STORAGE 权限)。

编辑:您可能还需要设置:

webView.getSettings().setAllowFileAccess(true);

【讨论】:

  • 谢谢,但我怀疑在浏览器(从服务器)中运行 swf 文件时,我们使用这些行:" " + "circa-med.org/circa-med.swf\" width=\"160\" height=\"180\"> " + ""+ "" ...... ..但是对于本地文件如何在 标签下给出路径
  • 嗯,第一个问题是您是否需要将其嵌入到特定像素大小的网页中......如果没有,上述解决方案可能更有用。如果您确实需要嵌入它,&lt;param name=\"movie\" value=\"file:///android_asset/YourFile.swf\"&gt;... 是否适用于资产?如果是这样,您可能可以通过编程方式编辑 HTML 字符串,以将"file://" + Environment.getExternalStorageDirectory() + "/YourPath/YourFile.swf" 的结果作为嵌入文件包含在 SD 卡上的文件中。
  • 你仍然需要设置setAllowFileAccess(true)并添加上面提到的权限,当然,从SD卡读取。
  • 恐怕我以前没有使用过 .3gp 文件——我什至不知道 Android WebView 是否支持它们。 编辑:我刚刚做了一些快速的谷歌搜索,据我所见,我很确定 WebView 无法加载 .3gp 文件。
  • 问题只是WebView没有高度或宽度。将 addView 行更改为:linearLayout.addView(webview, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);。我自己也试过了,效果很好。
【解决方案3】:
package webView.video;


import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.webkit.WebView;


public class WebViewActivity extends Activity {
private WebView mWebView;

/** Called when the activity is first created. */
     @Override
     public void onCreate (Bundle savedInstanceState) {
         super. onCreate (savedInstanceState);
         setContentView(R.layout.main);



         // html file with sample swf video in sdcard

         //swf2.html points to swf in sdcard

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


         if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
             System.exit(4);
         } else {
             mWebView.loadUrl("file://" + Environment.getExternalStorageDirectory() + "/swf2.html");
         }

     }
}

【讨论】:

    猜你喜欢
    • 2012-03-11
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 2017-01-29
    • 1970-01-01
    相关资源
    最近更新 更多