このアプリでブラックベリー カメラ アプリケーションを作成しています。要件に応じて自動画像キャプチャ機能を使用しています。しかし、ここでもう 1 つ試してみますが、今のところ成功していません。彼が画面にキャプチャしたものは何でも表示しますが、その特定のものをキャプチャします.そして、私はそれを画面に表示することができませんでしたが、その後、写真を確認すると、0 kbしか描画されません.jpegファイルが作成されます.カメラを非表示にしようとしています.背景画像を使用していますが、効果的ではありません。つまり、カメラが実行されているときに、画面を他の画像で覆いたいのですが、カメラがオンになっていることを理解できませんが、画像をキャプチャします。私はこのコードを実行しています。
public class ImageCaptureDemo extends UiApplication
{
public static void main(String[] args)
{
ImageCaptureDemo app = new ImageCaptureDemo();
app.enterEventDispatcher();
}
public ImageCaptureDemo()
{
pushScreen(new ImageCaptureDemoScreen());
}
class ImageCaptureDemoScreen extends MainScreen
{
Timer timer ;
Player _p;
VideoControl _videoControl;
Bitmap back_ground=Bitmap.getBitmapResource("loadingImage.png");
Field videoField=null;
public ImageCaptureDemoScreen()
{
super();
setTitle("Main Screen BackGround");
try
{
_p = javax.microedition.media.Manager.createPlayer("capture://video?encoding=jpeg&width=240&height=160");
_p.realize();
_p.prefetch();
_videoControl = (VideoControl) _p.getControl("VideoControl");
if (_videoControl != null)
{
videoField = (Field) _videoControl.initDisplayMode (VideoControl.USE_GUI_PRIMITIVE, "net.rim.device.api.ui.Field");
HorizontalFieldManager H=new HorizontalFieldManager()
{
public void paint(Graphics graphics) {
//Draw the background image and then call paint.
graphics.clear();
graphics.drawBitmap(0, 0,480, 240, back_ground, 0, 0);
super.paint(graphics);
}
protected void sublayout( int maxWidth, int maxHeight)
{
int width = 240;//240
int height = 180;//180
super.sublayout( width, height);
setExtent( width, height);
}
};
if(videoField != null)
{
H.add(this.videoField);
add(H);
System.out.println("VideoField===="+videoField);
}
_p.start();
System.out.println("VideoField"+videoField);
}
}
catch(Exception e)
{
Dialog.alert(e.toString());
}
timer = new Timer();
timer.schedule(new CountDown(), 2000);
}
public class CountDown extends TimerTask {
public void run() {
DismissThread dThread = new DismissThread();
}
}
public void dismiss() {
timer.cancel();
invokeAction(ACTION_INVOKE);
_videoControl.setVisible(false);
}
public class DismissThread implements Runnable {
public void run() {
dismiss();
}
}
protected boolean invokeAction(int action)
{
boolean handled = super.invokeAction(action);
if(!handled)
{
if(action == ACTION_INVOKE)
{
try
{
String encoding1 = "encoding=jpeg&width=640&height=480&quality=normal";
byte[] rawImage = _videoControl.getSnapshot(encoding1);
System.out.println("byte[]=="+rawImage);
FileConnection conn = (FileConnection)Connector.open("file:///SDCard/BlackBerry/pictures/"+System.currentTimeMillis()+".jpeg", Connector.READ_WRITE);
conn.create();
OutputStream out = conn.openOutputStream();
out.write(rawImage);
out.flush();
out.close();
conn.close();
}
catch(Exception e)
{
_p.close();
Dialog.alert(e.toString());
}
}
}
return handled;
}
}
}
私のプロジェクトに必要なのを手伝ってください。前もって感謝します