如何在安卓设备上运行.swf文件

6
我刚开始接触Android并着手处理Flash对象,我指的是.swf文件。我已经阅读了许多关于使用WebView来加载存储在assets/SD位置的swf文件的内容,但始终无法实现。我得到了一些建议来自如何在WebView中播放本地swf文件、flash播放器、Adobe Air的特性设置swf以制作apk等。但是由于以下原因,我仍然不能令.swf文件运行令人满意:
  1. 即使我将所有东西都设置为上述链接中的设置,我也会得到一个空白屏幕,这让我感到失望,因为flash播放器当前不是默认值(“启动默认值”选项在设置->应用程序->Flash播放器->默认情况下启动),因此我无法运行flash内容。

  2. 我已经应用了Adobe AIR来获得swf文件的apk,但由于两个原因:a)非常费力的过程和b)需要每次安装Adobe AIR,使整个目的失败。

  3. Flash中有很多术语/混淆,以及很多新闻表示Flash没有为移动领域更新其产品,而Android正在“拥有”/“试图”转向html 5。

我希望你们都能解决这个问题,使Flash SWF对象在Android上运行,尽可能少地使用浏览器插件。我希望我的工作尽可能少地支持文件以提高工作效率和教育性。
我在此附上了一段代码片段,我正在努力完成工作以使swf文件运行:
  1. Approach One :

        import android.annotation.SuppressLint;
        import android.app.Activity;
        import android.os.Bundle;
        import android.webkit.WebSettings;
        import android.webkit.WebView;
        import android.widget.LinearLayout;
    
        @SuppressLint("SetJavaScriptEnabled")
        public class SWFViewer extends Activity {
        WebView wvswf;
        LinearLayout linearLayout;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_swfviewer);
            linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
            wvswf = new WebView(SWFViewer.this);
            wvswf.getSettings().setJavaScriptEnabled(true);
            wvswf.getSettings().setPluginState(WebSettings.PluginState.ON);
            wvswf.getSettings().setAllowFileAccess(true);
            linearLayout.addView(wvswf, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
    
        String Url = "file:///android_asset/main.swf";
        wvswf.loadUrl(Url);
    
            }
    
    }
    

布局如下:

        <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.winit.nunna.swfviewer"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8"
        android:maxSdkVersion="16" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="READ_EXTERNAL_STORAGE"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.winit.nunna.swfviewer.SWFViewer"
            android:label="@string/app_name"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
  1. 第二种方法

使用Adobe AIR SDK,我们可以使用主SWF文件、一些XML配置文件和应用签名来创建一个APK文件。

结论:第一种方法最简单但没有输出结果。

12-20 13:56:28.457: INFO/WindowManager(162): MediaPlayer.is not PlayingVideo

后面的内容翻译如下:

后一种方法有很多额外依赖,非常麻烦。

请给我更好的选择来获得性价比高/中等性能的Flash输出。


请注意,Adobe已经决定不再支持Android上的Flash。 - CommonsWare
我无法理解“Android不支持Flash”的含义,如果您能为我解释一下,那将是非常有帮助的。此外,我现在正在了解SWFObject,我认为它可以在HTML5中以非Flash方式使用Flash对象,请对此发表评论。谢谢。 - Sri Krishna
2
如果你使用搜索引擎搜索“android flash”,你会发现以下网址:http://www.theverge.com/2012/8/14/3241727/flash-for-android-dies,http://www.zdnet.com/androids-flash-player-is-dead-live-with-it-7000002668/,http://www.digitaltrends.com/mobile/adobe-flash-for-android-gone-with-barely-a-whimper/,http://readwrite.com/2012/08/14/adobe-flash-on-android-rip,http://www.webmonkey.com/2012/08/no-more-flash-for-android/,http://tech.slashdot.org/story/12/08/15/1441200/adobe-officially-kills-new-flash-installations-on-android等等。AIR可能仍然可用。 - CommonsWare
谢谢关于Flash Death的信息,但我想知道如何使用现有的Flash对象,如果不实施,那么我需要从头开始创建大量代码来显示效果。我想知道是否有任何方法可以从Flash中获取内容并将其用于显示相同的效果。还请对SWFObject进行更多评论。 - Sri Krishna
@Shri Krishna 你好,我想开发一个应用程序,在Android设备上播放swf文件,而不需要任何第三方依赖。我在谷歌上搜索了很多,但没有找到可行的解决方案。请给我一些提示,我该如何开始?Adobe AIR是一个好选择吗?如果你有重要的链接,请提供给我。先感谢你了。 - Bhadresh
显示剩余3条评论
1个回答

0

在原生的Android(Java)代码中,没有简单的方法来集成swf文件而不使用WebView。

如果您声明通过使用相同的swf构建Adobe AIR APK解决了问题,那么我认为您已经解决了将swf导入Android的问题,但实际上并没有做到您在上面提出的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接