1

このアプリでブラックベリー カメラ アプリケーションを作成しています。要件に応じて自動画像キャプチャ機能を使用しています。しかし、ここでもう 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;                
    }





}   
}

私のプロジェクトに必要なのを手伝ってください。前もって感謝します

4

0 に答える 0