Android播放flash

  Android本身并没有播放flash的组件,但是在有Adobe提供的flash插件的情况下,用WebView打开网页,使用网页可以播放flash。所以本文的思路是使用WebView播放flash,通过java代码控制WebView中的javascript代码来控制flash的播放和进度显示操作。由于android 2.2以下的系统不能安装flash插件,所以不能使用此方法播放flash。

首先是要编辑一个能够正常播放flash的网页,并且能够提供相应操作的javascript代码供java代码控制flash的播放。这个是一个关键,如果这个网页写的有问题的话,编译也不会报错,但是flash播放不能正常运行。

示例代码如下:


 
 

    

	
empty



上述代码中使用javascript控制flash的播放,更多的操作请参照博客《 JS控制网页中Flash影片的播放(附带各参数)》。代码中的CallJava是用来反向控制java代码中的显示的。java代码中为这个类提供了相应的方法。具体代码如下:

	private final class CallJava{
		public void consoleFlashProgress(float progressSize, int total){
			showFlashProgress(progressSize, total);
		}
	}

  要使用CallJava类,还需要设置WebView的属性:

	flash_view.addJavascriptInterface(new CallJava(), "CallJava");

另外还要设置WebView可以用java调用javascript等属性:

		flash_view.getSettings().setJavaScriptEnabled(true); 
		flash_view.getSettings().setPluginState(PluginState.ON);
		flash_view.setWebChromeClient(new WebChromeClient()); 
		flash_view.getSettings().setAllowFileAccess(true);
		flash_view.getSettings().setPluginsEnabled(true);
		flash_view.getSettings().setSupportZoom(true);
		flash_view.getSettings().setAppCacheEnabled(true);

然后就可以通过java来控制flash的播放了:

	public void start(){
		if(null != flashPath){
			flash_view.loadUrl("javascript:loadSWF(\""+flashPath+"\", \"" + width + "\", \"" + (height-bottom_height) + "\")");
			flash_view.loadUrl("javascript:Play()");
			handler.post(update_progress);
			play.setImageResource(R.drawable.pause);
			playing = true;
		}
		show();
	}
	
	public void pause(){
		if(null != flashPath){
			flash_view.loadUrl("javascript:Pause()");
			handler.removeCallbacks(update_progress);
			play.setImageResource(R.drawable.play);
			playing = false;
		}
	}

整体来看一下,是不是觉得很简单呢?那就马上试试吧!

Android播放flash的示例源码下载地址:http://download.csdn.net/detail/iloveyoueveryday/6911903 。


你可能感兴趣的:(android开发)