我們經常使用MMAPI提供的功能播放視頻或者拍照圖片,這時候可能希望在Video Canvas上繪制一些菜單或者圖形。本文介紹如何在SonyEricsson的機型上完成上面的特性。
在SonyEricsson JP7的機型上,實現上面的特性非常容易。只需要在初始化VideoControl的時候指定一些特定的參數即可。例如
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO | (overlay << 8) | (Sprite.TRANS_ROT90 << 4), canvas);
其中overlay=1的時候代表繪制的圖形覆蓋在video之上,overlay=0的時候代表不覆蓋。
對於JP6或者以前的版本,如果也想實現這樣的效果則需要使用一些小技巧。首先我們還是初始化VideoControl,
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, canvas);
問題的關鍵在Canvas的paint方法的處理上,為了避免繪制的內容被覆蓋我們必須等Player啟動之後再繪制我們的內容,實現這一點可以同過PlayerListener來完成,如下所示:
public void playerUpdate(Player p, String event, Object obj) {
switch(p.getState()){
case Player.STARTED:
initialized = true;
break;
}
}
在繪制完成後,還需要調用Graphics.setClip(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開發者社區的時候發現的,大家可以看看原文
http://developer.sonyericsson.com/site/global/techsupport/
tipstrickscode/java/p_video_overlay_draw_canvas.jsp
UploadFiles/2007-1/18575526.zip這個是代碼