请教,怎样在全屏相机画布上绘制其它东西
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方法中绘制的字符串(或者小图片)就会没了,怎样解决啊?
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方法中绘制的字符串(或者小图片)就会没了,怎样解决啊?
...全文
相关推荐
安卓全屏相机
【安卓全屏相机】是一款专为安卓2.3系统设计的相机应用,旨在提供沉浸式的全屏拍照体验。在这款应用中,用户可以享受到更大的视野,使得拍摄过程更为直观和享受。
Android Dialog全屏显示、动画显示
本教程将详细讲解如何创建一个全屏显示且带有动画效果的自定义Dialog,并结合相机和图片选择的使用场景进行演示。首先,我们需要了解Android Dialog的基础知识。
CircleCamera:Android自定义圆形拍照、解决非全屏(竖屏)下预览相机拉伸问题
本项目“CircleCamera”专注于提供一个自定义的圆形拍照解决方案,同时解决了在非全屏(竖屏)状态下相机预览图像拉伸的问题,以及在平板等不规则分辨率设备上的正常显示。
网页照相机,输入网址截图,即时获得该网页的全屏图片
网页照相机是一款实用工具,主要用于快速获取网页的全屏截图。这一工具的目的是让用户能够方便地输入网址,然后即时得到该网页的完整图像,以便于保存、分享或进行其他用途。
android(zxing)全屏二维码识别,全屏扫描二维码,近距离扫描二维码,图片识别二维码
**错误处理与用户体验** 在开发过程中,要考虑到相机未授权、无可用摄像头、光线不足等异常情况,提供良好的错误提示和用户体验。10.


J2ME
