我們經(jīng)常使用MMAPI提供的功能播放視頻或者拍照圖片,這時候可能希望在Video Canvas上繪制一些菜單或者圖形。本文介紹如何在SonyEri
CSSon的機型上完成上面的特性。
在SonyEricsson JP7的機型上,實現(xiàn)上面的特性非常容易。只需要在初始化VideoControl的時候指定一些特定的參數(shù)即可。例如
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO (overlay << 8) (S
PRite.TRANS_ROT90 << 4), canvas);
其中overlay=1的時候代表繪制的圖形覆蓋在video之上,overlay=0的時候代表不覆蓋。
對于JP6或者以前的版本,如果也想實現(xiàn)這樣的效果則需要使用一些小技巧。首先我們還是初始化VideoControl,
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, canvas);
問題的關鍵在Canvas的paint方法的處理上,為了避免繪制的內(nèi)容被覆蓋我們必須等Player啟動之后再繪制我們的內(nèi)容,實現(xiàn)這一點可以同過PlayerListener來完成,如下所示:
public void playerUpdate(Player p, String event, Object obj) {
switch(p.getState()){
case Player.STARTED:
initialized = true;
break;
}
}
在繪制完成后,還需要調用Graphics.setCl
ip(0,0,0,0)方法。
public void paint(Graphics g) {
if(camera!=null){
if(camera.isInitialized() && !update){
menu.draw(g);
g.setClip(0, 0, 0, 0);
}else if(update){
update = false;
}
}
}
運行結果如上面所示。這個特性是比較有用的,今天閱讀SE開發(fā)者社區(qū)的時候發(fā)現(xiàn)的,大家可以看看原文
http://developer.sonyericsson.com/site/global/techsupport/
tipstrickscode/
java/p_video_overlay_draw_canvas.
jsp
18575526.zip 這個是代碼進入討論組討論。 (出處:http://m.survivalescaperooms.com)