将flash嵌入你的程序中

转载 2012年03月28日 14:15:44

原文地址:http://blog.csdn.net/geolo/article/details/6081456 

无论如何,我们需要一个android2.2的平板电脑或者android2.2的手机一部,同时我们的android平台需要安装最新的flash for android 的插件。  具备了这些之后,我们就可以将flash通过webView的方式嵌入到我们自己的程序中了。

  需要的知识:JavaScript知识、java知识、html知识,了解css的话,那最好。

 

  不多说,和以前一样,直接上代码,上图。不解释太多。。。。

 

1. 项目结构图

 

 

2. 程序运行图

 

3.MainActivity .java  主类

  1. package com.geolo.js.falsh;  
  2. import android.app.Activity;  
  3. import android.os.Bundle;  
  4. import android.os.Handler;  
  5. import android.os.Message;  
  6. import android.view.View;  
  7. import android.webkit.WebChromeClient;  
  8. import android.webkit.WebSettings.PluginState;  
  9. import android.webkit.WebView;  
  10. import android.widget.Button;  
  11. import android.widget.FrameLayout;  
  12. import android.widget.ProgressBar;  
  13. public class MainActivity extends Activity {  
  14.     private WebView mWebView;  
  15.     private Button playButton,pauseButton;  
  16.     private ProgressBar mProgressBarHorizontal;  
  17.     private final static int PROGRESSBARSIZE = 0x0000;  
  18.     @Override  
  19.     public void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.main);  
  22.         mWebView = (WebView)findViewById(R.id.webView01);   
  23.         mProgressBarHorizontal = (ProgressBar)findViewById(R.id.progress_horizontal);  
  24.         this.setProgress(mProgressBarHorizontal.getProgress() * 100);  
  25.         //this.setSecondaryProgress(mProgressBarHorizontal.getSecondaryProgress() * 100);  
  26.         playButton = (Button)findViewById(R.id.playButton);  
  27.         pauseButton = (Button)findViewById(R.id.pauseButton);  
  28.         playButton.setOnClickListener(buttonListener);  
  29.         pauseButton.setOnClickListener(buttonListener);  
  30.         mWebView.getSettings().setJavaScriptEnabled(true);    
  31.         //mWebView.getSettings().setPluginsEnabled(true);  
  32.         mWebView.getSettings().setPluginState(PluginState.ON);  
  33.         mWebView.setWebChromeClient(new WebChromeClient());   
  34.         mWebView.addJavascriptInterface(new CallJava(), "CallJava");  
  35.         mWebView.loadUrl("file:///android_asset/sample/index.html");   
  36.         startThread();  
  37.     }  
  38.     Button.OnClickListener buttonListener = new Button.OnClickListener() {    
  39.         @Override  
  40.         public void onClick(View v) {  
  41.             int buttonID = v.getId();  
  42.             switch (buttonID) {  
  43.             case R.id.playButton:  
  44.                 mWebView.loadUrl("javascript:Play()");  
  45.                 showFlashProgress(5);  
  46.                 break;  
  47.             case R.id.pauseButton:  
  48.                 mWebView.loadUrl("javascript:Pause()");  
  49.                 break;  
  50.             default:  
  51.                 break;  
  52.             }  
  53.         }  
  54.     };  
  55.     public void showFlashProgress(float progressSize){  
  56.         int size = (int)progressSize;  
  57.         //Toast.makeText(this, size+"", Toast.LENGTH_SHORT).show();  
  58.         mProgressBarHorizontal.setProgress(size);  
  59.     }  
  60.     @Override  
  61.     protected void onPause(){  
  62.         super.onPause();  
  63.         mWebView.pauseTimers();  
  64.         if(isFinishing()){  
  65.             mWebView.loadUrl("about:blank");  
  66.             setContentView(new FrameLayout(this));  
  67.         }  
  68.     }  
  69.     @Override  
  70.     protected void onResume(){  
  71.         super.onResume();  
  72.         mWebView.resumeTimers();  
  73.     }  
  74.     private final class CallJava{  
  75.         public void consoleFlashProgress(float  progressSize){  
  76.             showFlashProgress(progressSize);  
  77.         }  
  78.     }  
  79.     private void startThread(){  
  80.         //通过线程来改变ProgressBar的值  
  81.         new Thread(new Runnable() {  
  82.             @Override  
  83.             public void run() {  
  84.                 while(!Thread.currentThread().isInterrupted()){  
  85.                     try {  
  86.                         Thread.sleep(2000);  
  87.                         Message message = new Message();  
  88.                         message.what = MainActivity.PROGRESSBARSIZE;  
  89.                         MainActivity.this.myMessageHandler.sendMessage(message);  
  90.                     } catch (Exception e) {  
  91.                         Thread.currentThread().interrupt();  
  92.                     }  
  93.                 }  
  94.             }  
  95.         }).start();  
  96.     }  
  97.     Handler myMessageHandler = new Handler() {  
  98.         @Override  
  99.         public void handleMessage(Message msg) {  
  100.             switch (msg.what) {  
  101.             case MainActivity.PROGRESSBARSIZE:  
  102.                 mWebView.loadUrl("javascript:showcount()");  
  103.                 break;  
  104.             default:  
  105.                 break;  
  106.             }  
  107.             super.handleMessage(msg);  
  108.         }  
  109.     };  
  110. }  
 

 

4. main.xml

 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical" android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent">  
  5.     <WebView android:id="@+id/webView01" android:layout_width="wrap_content"  
  6.         android:layout_height="wrap_content" />  
  7.           
  8.     <ProgressBar android:id="@+id/progress_horizontal"  
  9.         style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content" android:max="100"  
  11.         android:progress="0" android:secondaryProgress="0" />  
  12.           
  13.     <LinearLayout android:orientation="horizontal"  
  14.         android:layout_width="fill_parent" android:layout_height="wrap_content">  
  15.         <Button android:id="@+id/playButton" android:layout_width="wrap_content"  
  16.             android:layout_height="wrap_content" android:text="play" />  
  17.         <Button android:id="@+id/pauseButton" android:layout_width="wrap_content"  
  18.             android:layout_height="wrap_content" android:text="pause" />  
  19.     </LinearLayout>  
  20. </LinearLayout>    
 

 

5. index.html

 

  1. <mce:script src="play.js" mce_src="play.js"></mce:script>  
  2. <table border="0" cellpadding="0" cellspacing="1" bgcolor="#000000">  
  3.   <tr>  
  4.     <td>  
  5.      <object id="movie" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"   
  6.          codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"   
  7.         align="middle">  
  8.        <param name="movie" value="about:blank" />  
  9.        <param name="quality" value="high" />  
  10.      </object>  
  11.     </td>  
  12.   </tr>  
  13. </table>  
  14.      
  15.      
  16.    <!-- <a href="javascript:CallJava.consoleFlashProgress(3)" mce_href="javascript:CallJava.consoleFlashProgress(3)">add Progress</a>   
  17.    <a href="#" mce_href="#" onClick="showcount()">add Progress</a>   
  18.     -->  
  19. <mce:script type="text/javascript"><!--  
  20.   loadSWF("testFlash.swf","800","480"); //loadSWF("flash地址","宽度","高度")  
  21. // --></mce:script>  
  22.    
 

 

6.play.js

 

[javascript] view plaincopyprint?
  1. var total;//定义flash影片总桢数  
  2. var frame_number;//定义flash影片当前桢数  
  3. //以下是滚动条图片拖动程序  
  4. var dragapproved=false;  
  5. var z,x,y  
  6. //动态显示播放影片的当前桢/总桢数(进度条显示)  
  7. function showcount(){  
  8.     //已测可用CallJava.consoleFlashProgress(5);  
  9.     total = movie.TotalFrames;  
  10.     frame_number=movie.CurrentFrame();  
  11.     frame_number++;  
  12.     var progressSize = 100*(frame_number/movie.TotalFrames());  
  13.     CallJava.consoleFlashProgress(progressSize);  
  14. }  
  15. //播放影片   
  16. function Play(){  
  17.     movie.Play();  
  18. }  
  19. //暂停播放  
  20. function Pause(){  
  21.  movie.StopPlay();  
  22. }  
  23. //开始载入flash影片  
  24. function loadSWF(fsrc,fwidth,fheight){  
  25.  movie.LoadMovie(0, fsrc);  
  26.  movie.width=fwidth;  
  27.  movie.height=fheight;  
  28.  frame_number=movie.CurrentFrame();  
  29.  jindu();  
  30. }  
 

相关文章推荐

linux 下对 flash 设备操作的应用程序(嵌入式参考用)

linux下对dataflash设备操作(擦除、写入文件)的应用程序,注意,所有的操作必须要使用mtdx的字符设备。     放出这个程序,帮助大家理解一些mtdchar的字符设备驱动! ...

在WPF中嵌入Flash(或Flex程序)

在最近的一个WPF应用中,有这样一个需求:WPF本身生成数据,然后调用Flex编译生成的Flash完成数据的树形结构可视化显示。这就需要在WPF中嵌入Flash,下面详细介绍一下具体的做法。 开发环...

友善之臂Mini2440之嵌入式Linux下Nor Flash驱动程序设计

嵌入式Linux下Nor Flash驱动程序设计 前面已经详细讲述了MTD子系统原理知识,这一节讲述嵌入式Linux下对NorFlash的驱动程序设计。在MTD设备层上有MTD字符设备和MTD块设备...

将Flash 嵌入WPF 程序源码

  • 2010年07月31日 11:39
  • 1.92MB
  • 下载

FPGA学习(第2节)-FPGA下载程序到flash+文件转换-通过.sof文件产生.jic文件

编译完成后,Quartus 会在 output file 文件夹内生成一个 xxx.sof。下载 SOF 文件到 FPGA 后,开发板重新上电后配置程序已经丢失,还需要 JTAG 重新下载。 现在来介...

Nand Flash驱动程序编写指南-1

  本文根据我的项目经验并结合博客园Sankye的《Linux下nand flash驱动》一文编写的,有雷同之处请多海涵。在编写nand flash之前,我们需要先了解以下要处理的设备的硬件特性。Fl...
  • JuanA1
  • JuanA1
  • 2011年06月30日 16:27
  • 2486

在TI DSP开发板中烧写Flash程序

实现在FLASH存储器烧写程序一般有以下三种方法:一是通过编程器下载烧写;二是通过开发商提供的专门软件工具+在线仿真器烧写;三是自己编程通过DSP烧写。个人使用的是合众达电子SEED-VPM642开发...

[原创] Keil uVision5 下载程序 add flash programming algorithm选项缺少需要的算法解决办法

MDK开发环境从V4升级到V5后,支持包不再是集成到开发环境当中,而是封装在PACK中,需要自行安装,比较麻烦。 搭建MDK开发环境以及破解的方法,在前面的文章中有详细说明,这里不再赘述,有兴趣的可以...
  • huanzx
  • huanzx
  • 2017年06月15日 18:11
  • 269

DSP28335—把TMS320F28XXX的程序段从flash复制到ram中运行

章来自:http://www.61ic.com/Article/C2000/Delfino/201303/47552.html 翻译自TI应用手册SPRAAU8   很详细,对编...

把DSP TMS320F28XXX的程序段从flash复制到ram中运行

摘要 这个应用报告和相关的代码提供了一种把编译后的程序段从TMS320F28xxx的flash复制到ram的功能,这样可以提高代码的运行速度。这个解决方案在直接启动之后,进入c_int00 ——C语...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:将flash嵌入你的程序中
举报原因:
原因补充:

(最多只允许输入30个字)