-4

我是黑莓开发者,我创建了一个黑莓相机应用程序。 但我拍照时,我点击是可以拍照,没有任何用户互动。这是我的应用程序的必要条件。 请给我建议并向我发送代码,我正在完成这个过程。如何在没有用户交互的情况下从黑莓手机拍照?

public void doTakePicture(){ 
    try 
    { 

     System.out.println("Inside doTakePicture"); 
     Invoke.invokeApplication(Invoke.APP_TYPE_CAMERA,new CameraArguments()); 
     player = javax.microedition.media.Manager.createPlayer("capture://video"); 
     player.realize(); 
     player.start(); 
     videoControl = (VideoControl) player.getControl("VideoControl"); 

     if(videoControl!=null) 
     { 
      Field videoField = (Field) videoControl.initDisplayMode (VideoControl.USE_GUI_PRIMITIVE, "net.rim.device.api.ui.Field"); 
      videoControl.setDisplayFullScreen(true); 
      videoControl.setVisible(true); 
      System.out.println("videoControl=="+videoControl); 
      if(videoField != null) 
      { 
       add(videoField); 
      } 

     } 


    } 



catch(Exception ex) 
{ 
    System.out.println(ex); 

} 
} 

公共布尔invokeAction(INT动作) { 的System.out.println( “行动==” +动作); boolean handled = super.invokeAction(action);

System.out.println("handled=="+handled); 
System.out.println("Inside Invoke Camera"); 

if(handled==false) 
{ 
    System.out.println("Inside First If Blog"); 
    if(action == ACTION_INVOKE) 
    { 
     System.out.println("Inside Second If Blog"); 
     try 
     {  
      System.out.println("If Blog of invoke Action"); 


      System.out.println("videoControl11=="+videoControl); 
      byte[] snapshot = videoControl.getSnapshot(null); 
      System.out.println("snapshot=="+snapshot); 
     } 
     catch(Exception e) 
     { 
      Dialog.alert(e.toString()); 
     } 
    } 
}   
return handled;     
使用此代码我想尝试拍摄照片时,自动相机是调用但不能拍照自动和我在这里得到一个空值

}

的byte [] =快照videoControl.getSnapshot(空) ; 请帮我解决我犯的错误。
在此先感谢

+3

为什么要这样做?这听起来像一个非常粗略的要求。 – 2012-04-14 05:23:40

+3

关于您的编辑,“这是我的应用程序的必要条件”是不够的,并且强化了我的观点,即您为了不道德/不道德的目的而这样做。请证明我错了。 – 2012-04-14 05:45:52

+2

不知道这是SO用户在海报上传递道德判断的工作。自动拍照有很多合法用途。时间推移摄影是一个想到的问题。 – donturner 2012-04-14 21:16:43

回答

3

您将需要在应用程序中实例化摄像头,而不是调用默认摄像头应用程序。完成此操作后,您可以通过拨打VideoControl.getSnapshot以编程方式拍摄照片。例如:

Player player = Manager.createPlayer("capture://video"); 
player.realize(); 
player.start(); 
VideoControl videoControl = (VideoControl) player.getControl("VideoControl"); 

//this will take a photo 
byte[] snapshot = videoControl.getSnapshot("encoding=jpeg&width=640&height=480&quality=superfine"); 
相关问题