android播放swf文件
16lz
2021-12-04
虽然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索取。
更多相关文章
- Pycharm安装PyQt5的详细教程
- Android(安卓)Studio下载安装使用教程
- 如何搭建Android的开发环境->安装虚拟机篇(一)
- android 默认签名 debug签名
- [置顶] 安卓视频播放器 一行代码快速实现视频播放,Android视频播
- 海康威视视频监控demo 源码+库文件
- Android网络收音机项目
- Android网络收音机项目(源码实例分享)
- Android(安卓)播放Gif 动画