程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> mmapi 在j2me polish中的應用

mmapi 在j2me polish中的應用

編輯:J2ME
要在J2ME polish項目裡實現mmapi, 其中的視頻的實現在j2me polish與一般J2ME項目裡是不同的,弄了一天都不能播放
。後來在網上問了一個高手才知道,下面我們看看Video Play 在polish中的實現:

J2ME裡實現mmapi的基本解釋我不多說了,不了解的可以參考 http://hi.baidu.com/cobalt/blog/item/fdb457c25e4c0237e4dd3b71.Html 裡邊講得很詳細的,我們主要看看實現mmapi video的播放的代碼:

Java 代碼:

代碼

  1. try {   
  2.     InputStream is = getClass().getResourceAsStream("/3.mpg");   
  3.     Player p = Manager.createPlayer(is, "video/mpeg");   
  4.     p.realize();   
  5.     // Grab the video control and set it to the current display.   
  6.     VideoControl vc = (VideoControl)p.getControl("VideoControl");   
  7.     if (vc != null) {   
  8.         Form form = new Form("Video form");   
  9.         form.append((Item)vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null));   
  10.         display.setCurrent(form);   
  11.     }   
  12.     p.start();   
  13. } catch (IOException ioe) {   
  14. } catch (MediaException me) { }   
  15.   

當我在J2ME polish工程中按這樣實現的時候,老是出現下邊的異常:

代碼

  1. Generic/DefaultColorPhone: startApp threw an Exception   
  2. Generic/DefaultColorPhone: Java.lang.ClassCastException   
  3. Generic/DefaultColorPhone: Java.lang.ClassCastException   
  4. Generic/DefaultColorPhone:  at com.protel.MM.UI.MMMidlet.startApp(+224)   
  5. Generic/DefaultColorPhone: [javac] C:\Documents and Settings\winxp\Desktop\mmapi\source\src\com\protel\MM\UI\MMMidlet.Java:57: form.append((Item)vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null));   
  6. Generic/DefaultColorPhone:  at Javax.microedition.midlet.MIDletProxy.startApp(+7)   
  7. Generic/DefaultColorPhone:  at com.sun.midp.midlet.Scheduler.schedule(+270)   
  8. Generic/DefaultColorPhone:  at com.sun.midp.main.Main.runLocalClass(+28)   
  9. Generic/DefaultColorPhone:  at com.sun.midp.main.Main.main(+116)   

原來在J2ME polish應用中所有的Screen或Item都經過preproceses(預處理),故所有新創建或返回的Screen/Item都默認是de.enough.polish.ui.*裡邊的,
所以直接調用上邊的代碼時會發生類型轉換異常。所以要在J2ME polish項目中正常播放video要直接引用Javax.microedition.lcdui.*
的類,修改後的代碼如下:

代碼

  1. try { ~~~~~~~~~~"+getClass().getResourceAsStream("/3.mpg"));  
  2.     InputStream is = getClass().getResourceAsStream("/3.mpg");  
  3.     Player p = Manager.createPlayer(is, "video/mpeg");  
  4.     p.realize();  
  5.     // Grab the video control and set it to the current display.  
  6.     VideoControl vc = (VideoControl)p.getControl("VideoControl");  
  7.     if (vc != null) {  
  8.         javax.microedition.lcdui.Form form = new Javax.microedition.lcdui.Form("Video form");   
  9.         javax.microedition.lcdui.Item videoItem = (Javax.microedition.lcdui.Item)vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null);   
  10.         form.append(videoItem);   
  11.            
  12.         display.setCurrent(form);   
  13.     }   
  14.     p.start();   
  15. } catch (IOException ioe) {   
  16. } catch (MediaException me) { }   
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved