请教,怎样在全屏相机画布上绘制其它东西

yitiaochongzi 2009-10-20 09:59:31
import java.io.IOException;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.control.VideoControl;
import javax.microedition.midlet.MIDlet;

public class VideoControlExample extends MIDlet {
private Display display;
private Form form;
private Player player;
private VideoControl videoControl;
private Video video;

public VideoControlExample() {
display = Display.getDisplay(this);
showCamera();
}

public void startApp() {
display.setCurrent(form);
}

public void pauseApp() {}

public void destroyApp(boolean unconditional){
notifyDestroyed();
}

public void showCamera(){
try{
player = Manager.createPlayer("capture://video");
player.realize();
videoControl = (VideoControl)player.getControl("VideoControl");
Canvas canvas = new VideoCanvas(this, videoControl);
videoControl.setDisplayFullScreen(true);//当去掉这句话时,照相机的屏幕占据了整个画布,在上面绘制的东西就没了
videoControl.setVisible(true);
player.start();
display.setCurrent(canvas);
player.start();
} catch (IOException ioe) {} catch (MediaException me) {}
}

class Video extends Thread {
VideoControlExample midlet;
public Video(VideoControlExample midlet) {
this.midlet = midlet;
}

public void run() {
captureVideo();
}

public void captureVideo() {
try {
byte[] photo = videoControl.getSnapshot(null);
Image image = Image.createImage(photo, 0, photo.length);
form.append(image);
display.setCurrent(form);
player.close();
player = null;
videoControl = null;
} catch (MediaException me) { }
}
};
}

class VideoCanvas extends Canvas {

public VideoCanvas(VideoControlExample midlet, VideoControl videoControl) {
this.setFullScreenMode(true);
int width = getWidth();
int height = getHeight();

videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
try {
videoControl.setDisplayLocation(2, 2);
videoControl.setDisplaySize(width - 4, height - 4);
} catch (MediaException me) {}
videoControl.setVisible(true);
}

public void paint(Graphics g) {
int width = getWidth();
int height = getHeight();

g.setColor(255, 0, 0);
g.drawRect(0, 0, width - 1, height - 1);
g.drawRect(1, 1, width - 3, height - 3);
g.setColor(0x000000);
g.drawString("拍照", 0, 0, 0);
}
}




当去掉videoControl.setDisplayFullScreen(true),后面paint方法中绘制的字符串(或者小图片)就会没了,怎样解决啊?
...全文
152 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yitiaochongzi 2009-10-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kf156 的回复:]
player好像显示时总是在最顶层的。
考虑用
videoControl.setDisplayLocation();
videoControl.setDisplaySize();
这两个方法来限制显示的位置和区域吧
[/Quote]

感觉这样出来的效果不好,有没有更好的方法啊
yitiaochongzi 2009-10-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fanyuanwai 的回复:]
VideoCanvas
[/Quote]

好像VideoCanvas是SonyEricsson的开发包里面的吧 我想在Nokia上运行,Nokia有没有相关的开发包啊
kf156 2009-10-21
  • 打赏
  • 举报
回复
player好像显示时总是在最顶层的。
考虑用
videoControl.setDisplayLocation();
videoControl.setDisplaySize();
这两个方法来限制显示的位置和区域吧
凡员外 2009-10-21
  • 打赏
  • 举报
回复
VideoCanvas

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧