Android播放flash
Android本身並沒有播放flash的元件,但是在有Adobe提供的flash外掛的情況下,用WebView開啟網頁,使用網頁可以播放flash。所以本文的思路是使用WebView播放flash,通過java程式碼控制WebView中的javascript程式碼來控制flash的播放和進度顯示操作。由於android 2.2以下的系統不能安裝flash外掛,所以不能使用此方法播放flash。
首先是要編輯一個能夠正常播放flash的網頁,並且能夠提供相應操作的javascript程式碼供java程式碼控制flash的播放。這個是一個關鍵,如果這個網頁寫的有問題的話,編譯也不會報錯,但是flash播放不能正常執行。示例程式碼如下:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <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" />
- <style type="text/css">
- <!--
- body {
- margin: 0;
- width: 100%;
- height: 100%;
- background-color: #FFFFFF;
- color: #FFFFFF;
- }
- //-->
- </style>
- <title>empty</title>
- </head>
- <body>
- <center>
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td align="center" valign="middle">
- <object type="application/x-shockwave-flash"
- id='movie'
- align="middle"
- data=""
- height="300"
- width="400">
- <embed>
- <param name="movie" value="" />
- <param name="quality" value="" />
- <param name="wmode" value="" />
- <param name="bgColor" value="#FFFFFF" />
- <param name="allowScriptAccess" value="always" />
- <param name="menu" value="false" />
- <param name="scale" value="" />
- <param name="allowFullScreen" value="true" />
- </embed>
- </object>
- <script type='text/javascript'>
- var total;//定義flash影片總楨數
- var frame_number;//定義flash影片當前楨數
- var rate = 12;//幀頻
- //動態顯示播放影片的當前楨/總楨數(進度條顯示)
- function showcount(){
- total = movie.TotalFrames();
- frame_number = movie.CurrentFrame();
- frame_number++;
- var progressSize = 500*(frame_number/total);
- CallJava.consoleFlashProgress(progressSize,total/12);
- }
- //播放影片
- function Play(){
- movie.Play();
- showcount();
- }
- //暫停播放
- function Pause(){
- movie.StopPlay();
- }
- //開始載入flash影片
- function loadSWF(fsrc, fwidth, fheight){
- movie.LoadMovie(0, fsrc);
- movie.width = fwidth;
- movie.height = fheight;
- frame_number = movie.CurrentFrame();
- }
- //快進或者快退
- function GoToFrame(progress){
- total = movie.TotalFrames();
- if(movie.IsPlaying())
- Pause();
- frame_number = total*progress/500;
- movie.GotoFrame(frame_number);
- Play();
- }
- //flash外掛不存在
- function error(){
- document.body.style.backgroundImage="url(flash_view_back_7490.jpg)";
- document.getElementById("flash_page").innerHTML = "<div style='color:#F00;" +
- " font-size:20px; text-align:center; margin-top:50px; margin-left:50px;'>" +
- "缺少支援flash播放的外掛,請安裝後再試!</div>";
- }
- //設定flash的高
- function setHeight(height){
- movie.height = height;
- document.getElementById("flash_page").style.height = height;
- }
- </script>
- </td>
- </tr>
- </table>
- </center>
- </body>
- </html>
上述程式碼中使用javascript控制flash的播放,更多的操作請參照部落格《JS控制網頁中Flash影片的播放(附帶各引數)》。程式碼中的CallJava是用來反向控制java程式碼中的顯示的。java程式碼中為這個類提供了相應的方法。具體程式碼如下:
- private final class CallJava{
- public void consoleFlashProgress(float progressSize, int total){
- showFlashProgress(progressSize, total);
- }
- }
要使用CallJava類,還需要設定WebView的屬性:
- <span style="white-space:pre"> </span>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 WebView播放flash(判斷是否安裝flash外掛)AndroidWebView
- QT 播放 FLASHQT
- android 顯示flash視訊播放器Android播放器
- swf 格式Flash 動畫播放器在Android上的實現動畫播放器Android
- PowerBuilder 9實現FLASH動畫播放(轉)UI動畫
- win10系統無法播放flash怎麼辦 win10不能播放flash的解決方法Win10
- 有沒有用java做的Flash播放器啊?Java播放器
- Flash播放器:從開創者到“被革命者”播放器
- Linux下Flash/Shockwave播放器安裝快速指南(轉)Linux播放器
- 簡單演算法――黃河Flash播放器 V7.38演算法播放器
- Win10系統flash外掛被360替換後IE無法播放flash怎麼解決Win10
- android 音訊播放 SoundPoolAndroid音訊
- android播放swf檔案Android
- Android本地音樂播放Android
- Android本地網路播放Android
- Flash(FLV)視訊播放器開原始碼大集合播放器原始碼
- Win10系統flash無法播放視訊怎麼辦 Win10系統flash無法使用Win10
- Win10系統flash無法播放影片怎麼辦 Win10系統flash無法使用Win10
- Android系統預置flash外掛Android
- android使用webview載入flash檔案AndroidWebView
- Flex4/Flash開發線上音樂播放器 , 含演示地址Flex播放器
- 用ollydbg破《水芯 Flash播放器 v1.0》 (514字)播放器
- 今後 Linux 想播放 Flash 就必須使用 Chrome 瀏覽器LinuxChrome瀏覽器
- Android中用SoundPool播放音訊Android音訊
- Android播放swf類視訊Android
- 請問哪裡有關於java播放Flash的例子啊?謝謝了Java
- Adobe 釋出最後一個 Linux 版 Flash 播放器Linux播放器
- 誠邀《Pro Android Flash》一書譯者Android
- Android自定義View播放Gif動畫AndroidView動畫
- Android實現線上播放音樂Android
- 邊下載邊播放的播放器Android邊下邊播播放器Android
- Ubuntu 16.04中為Chromium、Chrome、Firefox安裝Flash播放器外掛UbuntuChromeFirefox播放器
- 解決Ubuntu軟體包升級後無法播放flash視訊問題Ubuntu
- Android開發 海康威視 多路視訊播放(同時播放視訊)Android
- Android中用MediaPlay播放音訊和影片Android音訊
- 如何在Android上播放swf檔案Android
- Android 三種播放視訊的方式Android
- centos下用ffmpeg推流宇視科技攝像頭rtsp流到前端播放(無flash)CentOS前端