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

首先上个播放的效果图


代码架构


布局文件

    
源代码
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 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. Pycharm安装PyQt5的详细教程
  2. Android(安卓)Studio下载安装使用教程
  3. 如何搭建Android的开发环境->安装虚拟机篇(一)
  4. android 默认签名 debug签名
  5. [置顶] 安卓视频播放器 一行代码快速实现视频播放,Android视频播
  6. 海康威视视频监控demo 源码+库文件
  7. Android网络收音机项目
  8. Android网络收音机项目(源码实例分享)
  9. Android(安卓)播放Gif 动画

随机推荐

  1. Android常用组件之四大天王
  2. 由浅入深研究Android(1)--开篇•序
  3. error: Error parsing XML: unbound pref
  4. Ubuntu下安装VirtualBox和Android(安卓)
  5. Google Map Android v2开发: 安装运行Goo
  6. 关于 android 加载 res 图片 out of memo
  7. 【视频】 安卓渗透课程收集整理
  8. Gradle 构建 android 应用常见问题解决指
  9. Intent机制详解
  10. 快速上手Android数据库操作