虽然Adobe已经宣称不再支持android下的flash播放了,但是在HTML5没有热火起来之前还是有许多地方需要用到flash的,比如希望在android机子上使用以前flash制作的一些游戏或者教学动画。这里写了个demo使用android的WebView控件和Adobe的flash插件来播放本地的卡丁车的swf文件,在android机子上插上USB键盘就可以在android平台机子上玩了。

首先上个播放的效果图

android播放swf文件_第1张图片android播放swf文件_第2张图片

代码架构

android播放swf文件_第3张图片

布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/LinearLayout1"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context=".MainActivity" >    <WebView    android:id="@+id/flashwebview"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    /></LinearLayout>
源代码
package com.example.flashplayer;import java.util.List;import android.net.Uri;import android.os.Bundle;import android.os.Handler;import android.app.Activity;import android.app.ProgressDialog;import android.content.Intent;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.graphics.Color;import android.view.Menu;import android.webkit.WebChromeClient;import android.webkit.WebSettings.PluginState;import android.webkit.WebView;import android.widget.ProgressBar;public class MainActivity extends Activity {private WebView mWebView;private Handler mHandler=new Handler();private String mFlashFilename;private ProgressDialog mProgressDialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mWebView=(WebView)findViewById(R.id.flashwebview);setTitle("flash播放器");setTitleColor(Color.RED);mWebView.getSettings().setPluginsEnabled(true);mWebView.getSettings().setPluginState(PluginState.ON);Intent intent = getIntent();String str = intent.getStringExtra("flashName");if(str==null)mFlashFilename=new String("file:///android_asset/kaka.swf");elsemFlashFilename=str;try {Thread.sleep(500);// 主线程暂停下,否则容易白屏,原因未知} catch (InterruptedException e) {// TODO 自动生成的 catch 块e.printStackTrace();}mProgressDialog=ProgressDialog.show(this, "请稍等...", "加载flash中...", true);mWebView.setWebChromeClient(new WebChromeClient(){@Overridepublic void onProgressChanged(WebView view, int newProgress) {// TODO Auto-generated method stubsuper.onProgressChanged(view, newProgress);System.out.println("newProgress:"+String.valueOf(newProgress));if(newProgress==100){new Handler().postDelayed(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubmProgressDialog.dismiss();}}, 500);}}});if(checkinstallornotadobeflashapk()){mWebView.loadUrl(mFlashFilename);}else{installadobeapk();}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;}//退出时关闭flash播放@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();mWebView.destroy();this.finish();System.gc();}//按下Back按键时关闭flash播放@Overridepublic void onBackPressed() {// TODO Auto-generated method stubmWebView.destroy();this.finish();System.gc();super.onBackPressed();}//后台运行@Overrideprotected void onUserLeaveHint() {// TODO Auto-generated method stubmWebView.destroy();this.finish();System.gc();super.onUserLeaveHint();}//检查机子是否安装的有Adobe Flash相关APK private boolean checkinstallornotadobeflashapk() {PackageManager pm = getPackageManager();List<PackageInfo> infoList = pm.getInstalledPackages(PackageManager.GET_SERVICES);for (PackageInfo info : infoList) {if ("com.adobe.flashplayer".equals(info.packageName)) {return true;}}return false;}//安装Adobe Flash APKprivate void installadobeapk() {mWebView.addJavascriptInterface(new AndroidBridge(), "android");mWebView.loadUrl("file:///android_asset/go_market.html");}private class AndroidBridge {public void goMarket() {mHandler.post(new Runnable() {public void run() {Intent installIntent = new Intent("android.intent.action.VIEW");installIntent.setData(Uri.parse("market://details?id=com.adobe.flashplayer"));startActivity(installIntent);}});}}}
PS:需要在android机子上安装Adobe_Flash_Player_11.1.112.61.apk,android系统版本是4.0.3。

完整工程可以发邮件给229425962@qq.com索取。


更多相关文章

  1. Android实现OCR扫描识别数字图片之图片扫描识别
  2. Android -- Layout布局文件里的android:layout_height等属性为什
  3. sdcardFS(android sdcard存储方案---基于wrapfs文件系统)
  4. 【Android Training - 04】保存数据 [ Lesson 2 - 保存文件]
  5. Android 选择图片、上传图片之PictureSelector
  6. Android的支持库 && app/apk包进系统 && 预置so库进系统 && 预置
  7. Android mainfest文件 android属性 汇总
  8. [Android] 将Android工程做成jar包和资源文件
  9. Android wps文件下载、预览

随机推荐

  1. 解決在 Android(安卓)中使用 Bitmap 造成
  2. android--系统体系结构
  3. [转]Android编译环境 - 编译Native C的he
  4. Eclipse IDE中Android新建项目打红叉的解
  5. android的ant编译打包
  6. Android基础 : Android(安卓)Service
  7. android启动过程及各个镜像间的关系
  8. Android中Socket的实例分析(一)
  9. android 的ViewPager的预加载机制及解决
  10. 【android 】进程、守护进程的实现及进程