`
4007qwer
  • 浏览: 9450 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

WebView播放flash

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

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

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

1. 项目结构图



2. 程序运行图



3.MainActivity .java  主类

view plaincopy to clipboardprint?
package com.geolo.js.falsh;  
import android.app.Activity;  
import android.os.Bundle;  
import android.os.Handler;  
import android.os.Message;  
import android.view.View;  
import android.webkit.WebChromeClient;  
import android.webkit.WebSettings.PluginState;  
import android.webkit.WebView;  
import android.widget.Button;  
import android.widget.FrameLayout;  
import android.widget.ProgressBar;  
public class MainActivity extends Activity {  
    private WebView mWebView;  
    private Button playButton,pauseButton;  
    private ProgressBar mProgressBarHorizontal;  
    private final static int PROGRESSBARSIZE = 0x0000;  
    @Override 
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        mWebView = (WebView)findViewById(R.id.webView01);   
        mProgressBarHorizontal = (ProgressBar)findViewById(R.id.progress_horizontal);  
        this.setProgress(mProgressBarHorizontal.getProgress() * 100);  
        //this.setSecondaryProgress(mProgressBarHorizontal.getSecondaryProgress() * 100);  
        playButton = (Button)findViewById(R.id.playButton);  
        pauseButton = (Button)findViewById(R.id.pauseButton);  
        playButton.setOnClickListener(buttonListener);  
        pauseButton.setOnClickListener(buttonListener);  
        mWebView.getSettings().setJavaScriptEnabled(true);    
        //mWebView.getSettings().setPluginsEnabled(true);  
        mWebView.getSettings().setPluginState(PluginState.ON);  
        mWebView.setWebChromeClient(new WebChromeClient());   
        mWebView.addJavascriptInterface(new CallJava(), "CallJava");  
        mWebView.loadUrl("file:///android_asset/sample/index.html");   
        startThread();  
    }  
    Button.OnClickListener buttonListener = new Button.OnClickListener() {    
        @Override 
        public void onClick(View v) {  
            int buttonID = v.getId();  
            switch (buttonID) {  
            case R.id.playButton:  
                mWebView.loadUrl("javascript:Play()");  
                showFlashProgress(5);  
                break;  
            case R.id.pauseButton:  
                mWebView.loadUrl("javascript:Pause()");  
                break;  
            default:  
                break;  
            }  
        }  
    };  
    public void showFlashProgress(float progressSize){  
        int size = (int)progressSize;  
        //Toast.makeText(this, size+"", Toast.LENGTH_SHORT).show();  
        mProgressBarHorizontal.setProgress(size);  
    }  
    @Override 
    protected void onPause(){  
        super.onPause();  
        mWebView.pauseTimers();  
        if(isFinishing()){  
            mWebView.loadUrl("about:blank");  
            setContentView(new FrameLayout(this));  
        }  
    }  
    @Override 
    protected void onResume(){  
        super.onResume();  
        mWebView.resumeTimers();  
    }  
    private final class CallJava{  
        public void consoleFlashProgress(float  progressSize){  
            showFlashProgress(progressSize);  
        }  
    }  
    private void startThread(){  
        //通过线程来改变ProgressBar的值  
        new Thread(new Runnable() {  
            @Override 
            public void run() {  
                while(!Thread.currentThread().isInterrupted()){  
                    try {  
                        Thread.sleep(2000);  
                        Message message = new Message();  
                        message.what = MainActivity.PROGRESSBARSIZE;  
                        MainActivity.this.myMessageHandler.sendMessage(message);  
                    } catch (Exception e) {  
                        Thread.currentThread().interrupt();  
                    }  
                }  
            }  
        }).start();  
    }  
    Handler myMessageHandler = new Handler() {  
        @Override 
        public void handleMessage(Message msg) {  
            switch (msg.what) {  
            case MainActivity.PROGRESSBARSIZE:  
                mWebView.loadUrl("javascript:showcount()");  
                break;  
            default:  
                break;  
            }  
            super.handleMessage(msg);  
        }  
    };  

package com.geolo.js.falsh;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ProgressBar;
public class MainActivity extends Activity {
private WebView mWebView;
private Button playButton,pauseButton;
private ProgressBar mProgressBarHorizontal;
private final static int PROGRESSBARSIZE = 0x0000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView)findViewById(R.id.webView01);
mProgressBarHorizontal = (ProgressBar)findViewById(R.id.progress_horizontal);
this.setProgress(mProgressBarHorizontal.getProgress() * 100);
//this.setSecondaryProgress(mProgressBarHorizontal.getSecondaryProgress() * 100);
playButton = (Button)findViewById(R.id.playButton);
pauseButton = (Button)findViewById(R.id.pauseButton);
playButton.setOnClickListener(buttonListener);
pauseButton.setOnClickListener(buttonListener);
mWebView.getSettings().setJavaScriptEnabled(true); 
//mWebView.getSettings().setPluginsEnabled(true);
mWebView.getSettings().setPluginState(PluginState.ON);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.addJavascriptInterface(new CallJava(), "CallJava");
mWebView.loadUrl("file:///android_asset/sample/index.html");
startThread();
}
Button.OnClickListener buttonListener = new Button.OnClickListener() {
@Override
public void onClick(View v) {
int buttonID = v.getId();
switch (buttonID) {
case R.id.playButton:
mWebView.loadUrl("javascript:Play()");
showFlashProgress(5);
break;
case R.id.pauseButton:
mWebView.loadUrl("javascript:Pause()");
break;
default:
break;
}
}
};
public void showFlashProgress(float progressSize){
int size = (int)progressSize;
//Toast.makeText(this, size+"", Toast.LENGTH_SHORT).show();
mProgressBarHorizontal.setProgress(size);
}
@Override
protected void onPause(){
super.onPause();
mWebView.pauseTimers();
if(isFinishing()){
mWebView.loadUrl("about:blank");
setContentView(new FrameLayout(this));
}
}
@Override
protected void onResume(){
super.onResume();
mWebView.resumeTimers();
}
private final class CallJava{
public void consoleFlashProgress(float  progressSize){
showFlashProgress(progressSize);
}
}
private void startThread(){
//通过线程来改变ProgressBar的值
new Thread(new Runnable() {
@Override
public void run() {
while(!Thread.currentThread().isInterrupted()){
try {
Thread.sleep(2000);
Message message = new Message();
message.what = MainActivity.PROGRESSBARSIZE;
MainActivity.this.myMessageHandler.sendMessage(message);
} catch (Exception e) {
Thread.currentThread().interrupt();
}
}
}
}).start();
}
Handler myMessageHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MainActivity.PROGRESSBARSIZE:
mWebView.loadUrl("javascript:showcount()");
break;
default:
break;
}
super.handleMessage(msg);
}
};
}

4. main.xml

view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <WebView android:id="@+id/webView01" android:layout_width="wrap_content" 
        android:layout_height="wrap_content" /> 
          
    <ProgressBar android:id="@+id/progress_horizontal" 
        style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" 
        android:layout_height="wrap_content" android:max="100" 
        android:progress="0" android:secondaryProgress="0" /> 
          
    <LinearLayout android:orientation="horizontal" 
        android:layout_width="fill_parent" android:layout_height="wrap_content"> 
        <Button android:id="@+id/playButton" android:layout_width="wrap_content" 
            android:layout_height="wrap_content" android:text="play" /> 
        <Button android:id="@+id/pauseButton" android:layout_width="wrap_content" 
            android:layout_height="wrap_content" android:text="pause" /> 
    </LinearLayout> 
</LinearLayout>   
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView android:id="@+id/webView01" android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<ProgressBar android:id="@+id/progress_horizontal"
style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:max="100"
android:progress="0" android:secondaryProgress="0" />

<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<Button android:id="@+id/playButton" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="play" />
<Button android:id="@+id/pauseButton" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="pause" />
</LinearLayout>
</LinearLayout>  

5. index.html

view plaincopy to clipboardprint?
<mce:script src="play.js" mce_src="play.js"></mce:script> 
<table border="0" cellpadding="0" cellspacing="1" bgcolor="#000000"> 
  <tr> 
    <td> 
     <object id="movie" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"   
         codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"   
        align="middle"> 
       <param name="movie" value="about:blank" /> 
       <param name="quality" value="high" /> 
     </object> 
    </td> 
  </tr> 
</table> 
     
     
   <!-- <a href="javascript:CallJava.consoleFlashProgress(3)" mce_href="javascript:CallJava.consoleFlashProgress(3)">add Progress</a>   
   <a href="#" mce_href="#" onClick="showcount()">add Progress</a>   
    --> 
<mce:script type="text/javascript"><!--  
  loadSWF("testFlash.swf","800","480"); //loadSWF("flash地址","宽度","高度")  
// --></mce:script> 
  
<mce:script src="play.js" mce_src="play.js"></mce:script>
<table border="0" cellpadding="0" cellspacing="1" bgcolor="#000000">
  <tr>
    <td>
     <object id="movie" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
         codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
        align="middle">
       <param name="movie" value="about:blank" />
       <param name="quality" value="high" />
     </object>
    </td>
  </tr>
</table>
  
  
   <!-- <a href="javascript:CallJava.consoleFlashProgress(3)" mce_href="javascript:CallJava.consoleFlashProgress(3)">add Progress</a>
   <a href="#" mce_href="#" onClick="showcount()">add Progress</a>
    -->
<mce:script type="text/javascript"><!--
  loadSWF("testFlash.swf","800","480"); //loadSWF("flash地址","宽度","高度")
// --></mce:script>
 

6.play.js

view plaincopy to clipboardprint?
var total;//定义flash影片总桢数  
var frame_number;//定义flash影片当前桢数  
//以下是滚动条图片拖动程序  
var dragapproved=false;  
var z,x,y  
//动态显示播放影片的当前桢/总桢数(进度条显示)  
function showcount(){  
    //已测可用CallJava.consoleFlashProgress(5);  
    total = movie.TotalFrames;  
    frame_number=movie.CurrentFrame();  
    frame_number++;  
    var progressSize = 100*(frame_number/movie.TotalFrames());  
    CallJava.consoleFlashProgress(progressSize);  
}  
//播放影片   
function Play(){  
    movie.Play();  
}  
//暂停播放  
function Pause(){  
movie.StopPlay();  
}  
//开始载入flash影片  
function loadSWF(fsrc,fwidth,fheight){  
movie.LoadMovie(0, fsrc);  
movie.width=fwidth;  
movie.height=fheight;  
frame_number=movie.CurrentFrame();  
jindu();  




本文来自CSDN博客,转载请标明出处:file:///C:/Documents%20and%20Settings/Administrator/桌面/将flash嵌入你的程序中%20-%20GEOLO的专栏%20-%20CSDN博客.mht
分享到:
评论
3 楼 diyangxia 2013-07-16  
diyangxia 写道
这思路挺好,就是看着别扭,没注释,代码结构也排不好,csdn源地址又没贴清楚

源地址在这:http://blog.csdn.net/GEOLO/article/details/6081456
2 楼 diyangxia 2013-07-16  
这思路挺好,就是看着别扭,没注释,代码结构也排不好,csdn源地址又没贴清楚
1 楼 lxf_2011 2011-10-11  
LZ写明白啊?
怎么看着不完整呢

相关推荐

    Android使用WebView播放flash

    首先,我们要确保设备支持Flash播放。自Android 2.2(API级别8,即Froyo)开始,系统引入了对Adobe Flash Player的支持,但并非所有设备都默认预装或支持此插件。因此,在用户设备上安装并启用Flash Player插件是...

    webview播放flash

    本文将详细讨论如何在Android的Webview中播放Flash以及相关的技术要点。 首先,我们要明确的是,自Android 4.4 (KitKat)版本起,Google在Android系统中默认移除了对Flash的支持,转而全面支持HTML5。然而,对于仍需...

    Android使用WebView播放flash的方法和JavaScript调用本地方法

    对于这些版本,你可能需要使用第三方库,如Crosswalk或Adobe AIR来实现Flash播放。 接下来,我们探讨如何通过JavaScript与Android本地代码交互。这在需要执行特定的Android功能(如访问硬件设备或存储数据)时非常...

    Android使用WebView播放flash的方法

    本文实例讲述了Android使用WebView播放flash及判断是否安装flash插件的方法。分享给大家供大家参考。具体实现方法如下: 一、问题: 最近帮一个同学做一个项目,断断续续的一些知识点记录一下。一个页面中有一个...

    WebView播放互联网上的Flash等格式的文件

    - 这个文件很可能是提供了一个示例项目,演示如何在WebView中实现类似Flash播放的功能,可能是使用HTML5或其他技术。分析这个项目源码,可以学习到具体的实现方法。 总的来说,虽然WebView播放Flash在现代Android...

    android 4.0中关于webview加载flash全屏的DEMO

    本DEMO主要探讨了如何在WebView中加载Flash并实现全屏播放的解决方案。 首先,我们要了解WebView的基本用法。在Android中,WebView通过加载HTML页面来展示内容。要加载一个包含Flash内容的网页,我们需要确保目标...

    安卓android 5.0播放flash源码

    android 4.1后不支持通过webview播放flash, 所以导致flash无法在新的设备上播放。 本软件就是为了解决这个问题,可以通过本软件直接播放swf flash文件。 任何问题请联络~ q~q: 773179801 将提供技术支持。 F....

    Android 5.0 Flash播放器源码Demo

    android 4.2后不支持通过webview播放flash,所以导致flash无法在新的设备上播放。本软件就是为了解决这个问题,可以通过本软件直接播放swf flash文件。 F.softboy.apk 为安卓上播放Flash的测试应用请安卓到手机测试...

    Android webview flash

    Android webview flash Android webview flash Android webview flash

    Android下WebView加载flash闪白屏问题解决方案源码

    它提供了与原生Flash Player类似的API,可以在WebView中实现Flash内容的播放。 2. 自定义WebView:通过继承WebView并重写其onCreateWindow方法,我们可以创建一个自定义的WebView,然后在这个新的窗口中加载Flash...

    android webview autoplay video

    HTML5的`&lt;video&gt;`标签为网页提供了内置的视频播放功能,无需依赖Flash等外部插件。在Android的WebView中,我们可以通过加载包含`&lt;video&gt;`标签的网页,实现在应用中播放视频。 二、开启自动播放 默认情况下,由于...

    webView加载网络播放视频

    在Android中,使用WebView加载网页并播放视频的基本步骤如下: 1. **初始化WebView**: 首先,你需要在XML布局文件中添加一个WebView组件,并在Java代码中找到对应的View实例。然后,你可以通过`WebView webView = ...

    使用webview播放swf文件

    使用webview在程序里面播放swf文件的简单例子.进入程序后会先判断手机上是否安装了adobe flash player,如果没有安装会跳到安卓市场的adobe flash player的下载页面.如果已经安装了adobe flash player,会直接进行...

    android webview

    在Android 2.2至4.0版本的设备上,如果设备已经安装了Flash Player插件,`WebView`可以通过启用`PluginState.ON`来尝试播放Flash内容: ```java WebSettings webSettings = webView.getSettings(); webSettings....

    Android Webview视频播放器

    HTML5引入了`&lt;video&gt;`标签,使得网页可以直接包含和播放视频内容,无需依赖Flash或其他插件。这个项目中,Webview加载的HTML5页面(如1.html)内应该包含了`&lt;video&gt;`元素,指定视频来源(可能是本地video目录下的...

    webview支持html5视频播放实例.zip

    本实例“webview支持html5视频播放实例.zip”主要探讨了如何在WebView中支持HTML5视频播放的功能,这对于创建交互式、多媒体丰富的应用来说是至关重要的。 HTML5视频是现代网页开发中的一个核心特性,它使得开发者...

    android2.2播放flv flash文件实例eclipse工程

    在Android平台上实现FLV视频播放,特别是在Android 2.2版本中,通常涉及到与Adobe Flash Player的集成。本文将深入探讨如何在Eclipse环境中构建一个能够播放FLV文件的Android应用,同时也会提及所需的插件和测试代码...

    VXG视频框架下RTSP,RTMP视频流WebView网页播放Demo(Eclipse版)

    RTMP可以实现低延迟的视频流传输,但不被所有设备和浏览器支持,因此在WebView中播放RTMP流可能需要借助Flash插件或HTML5的MediaSource Extensions(MSE)。 VXG框架为开发者提供了一套完整的工具,用于处理这些...

    Android中播放gif和flash动画的demo

    类似qq魔法表情功能,所以查找资料提前调查该功能的实现方式,目前demo中1、重写...2、用webview和js播放flash动画;3、将gif动画分割成帧,播放帧动画;4、类似魔法表情,可实现循环播放,或者动画播放一次后消失功能

Global site tag (gtag.js) - Google Analytics