Vivian
2018-05-30
来源 :
阅读 1371
评论 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频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号