如何使用Android播放flash
Vivian 2018-05-30 来源 : 阅读 908 评论 0

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

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

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

示例代码如下:

[html] view plain copy
1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
2. <html xmlns="//www.w3.org/1999/xhtml">   
3. <head>   
4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
5.     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi" />  
6.   
7.     <style type="text/css">  
8.     <!--  
9.         body {  
10.             margin: 0;  
11.             width: 100%;  
12.             height: 100%;  
13.             background-color: #FFFFFF;  
14.             color: #FFFFFF;  
15.         }  
16.     //-->  
17.     </style>  
18. <title>empty</title>  
19. </head>  
20. <body>  
21. <center>  
22. <table cellpadding="0" cellspacing="0" border="0">   
23.     <tr>  
24.         <td align="center" valign="middle">  
25.         <object type="application/x-shockwave-flash"  
26.             id='movie'   
27.             align="middle"  
28.             data=""  
29.             height="300"   
30.             width="400">  
31.             <embed>  
32.                 <param name="movie" value="" />  
33.                 <param name="quality" value="" />  
34.                 <param name="wmode" value="" />  
35.                 <param name="bgColor" value="#FFFFFF" />  
36.                 <param name="allowScriptAccess" value="always" />  
37.                 <param name="menu" value="false" />  
38.                 <param name="scale" value="" />  
39.                 <param name="allowFullScreen" value="true" />  
40.             </embed>   
41.         </object>  
42.         <script type='text/javascript'>  
43.             var total;//定义flash影片总桢数  
44.             var frame_number;//定义flash影片当前桢数  
45.             var rate = 12;//帧频  
46.       
47.             //动态显示播放影片的当前桢/总桢数(进度条显示)  
48.             function showcount(){  
49.                 total = movie.TotalFrames();  
50.                 frame_number = movie.CurrentFrame();  
51.                 frame_number++;  
52.                 var progressSize = 500*(frame_number/total);  
53.                 CallJava.consoleFlashProgress(progressSize,total/12);  
54.             }  
55.       
56.             //播放影片   
57.             function Play(){  
58.                 movie.Play();  
59.                 showcount();  
60.             }  
61.               
62.             //暂停播放  
63.             function Pause(){  
64.                 movie.StopPlay();  
65.             }  
66.       
67.             //开始载入flash影片  
68.             function loadSWF(fsrc, fwidth, fheight){  
69.                 movie.LoadMovie(0, fsrc);  
70.                 movie.width = fwidth;  
71.                 movie.height = fheight;  
72.                 frame_number = movie.CurrentFrame();  
73.             }  
74.               
75.             //快进或者快退  
76.             function GoToFrame(progress){  
77.                 total = movie.TotalFrames();  
78.                 if(movie.IsPlaying())  
79.                     Pause();  
80.                 frame_number = total*progress/500;  
81.                 movie.GotoFrame(frame_number);  
82.                 Play();  
83.             }  
84.               
85.             //flash插件不存在  
86.             function error(){  
87.                 document.body.style.backgroundImage="url(flash_view_back_7490.jpg)";  
88.                 document.getElementById("flash_page").innerHTML = "<div style='color:#F00;" +  
89.                         " font-size:20px; text-align:center; margin-top:50px; margin-left:50px;'>" +  
90.                         "缺少支持flash播放的插件,请安装后再试!</div>";  
91.             }  
92.               
93.             //设置flash的高  
94.             function setHeight(height){  
95.                 movie.height = height;  
96.                 document.getElementById("flash_page").style.height = height;  
97.             }  
98.         </script>  
99.         </td>   
100.     </tr>   
101. </table>   
102. </center>  
103.   
104. </body>  
105. </html>

 


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

[java] view plain copy
1. private final class CallJava{  
2.     public void consoleFlashProgress(float progressSize, int total){  
3.         showFlashProgress(progressSize, total);  
4.     }  
5. }


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

[java] view plain copy
1. <span style="white-space:pre">  </span>flash_view.addJavascriptInterface(new CallJava(), "CallJava");

 


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

[java] view plain copy
1. flash_view.getSettings().setJavaScriptEnabled(true);   
2. flash_view.getSettings().setPluginState(PluginState.ON);  
3. flash_view.setWebChromeClient(new WebChromeClient());   
4. flash_view.getSettings().setAllowFileAccess(true);  
5. flash_view.getSettings().setPluginsEnabled(true);  
6. flash_view.getSettings().setSupportZoom(true);  
7. flash_view.getSettings().setAppCacheEnabled(true);


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

[java] view plain copy
1. public void start(){  
2.     if(null != flashPath){  
3.         flash_view.loadUrl("javascript:loadSWF(\""+flashPath+"\", \"" + width + "\", \"" + (height-bottom_height) + "\")");  
4.         flash_view.loadUrl("javascript:Play()");  
5.         handler.post(update_progress);  
6.         play.setImageResource(R.drawable.pause);  
7.         playing = true;  
8.     }  
9.     show();  
10. }  
11.   
12. public void pause(){  
13.     if(null != flashPath){  
14.         flash_view.loadUrl("javascript:Pause()");  
15.         handler.removeCallbacks(update_progress);  
16.         play.setImageResource(R.drawable.play);  
17.         playing = false;  
18.     }  
19. }

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

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标常用软件Flash频道!

本文由 @Vivian 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程