2010-11-23 91 views
6

我是黑莓应用程序开发的新手,并试图做一个简单的应用程序来将我的手电筒作为手电筒。我知道有几个应用程序已经这样做了,但我想尝试自己做。打开闪光灯作为黑莓上的光

我已经安装了eclipse,并且所有必需的附加组件都可以让我的开发环境运行。我还成功创建了股票标准hello world应用程序。

但是,我很努力地找出如何做到这一点。我一直在阅读API文档,并开始玩FlashControl,VideoControlSnapshotControl
这些似乎并没有公开方法来做到这一点。

我知道通过摄像机我可以去选择并打开闪光灯,这正是我想模仿。

到目前为止,这似乎只是设置相机的闪光灯就迫使我已经使用的代码是:

Player p = javax.microedition.media.Manager.createPlayer("capture://video"); 
p.realize(); 
p.start(); 

FlashControl flashControl = (FlashControl) p.getControl("javax.microedition.amms.control.camera.FlashControl"); 
flashControl.setMode(FlashControl.FORCE); 

回答

0

尝试是这样的

LED.setState(LED.STATE_ON);  // for LED 
Backlight.enable(true);   // for Screen 
this.setMode(FlashControl.ON); // for flash light. 

否则导入这个包

package lsphone.flash.microfireps; 
3

与闪光控制相关的问题已由我解决

按照我在我最近的应用上使用闪光灯控制

相机。

这里是我使用的代码:

public Camera(int j) 
{ 
    k = j; 
    try 
    { 
     Player player = Manager.createPlayer("capture://video"); 
     player.realize(); 

     _videoControl = (VideoControl) player.getControl("VideoControl"); 
     flashControl = new FlashControl() 
     { 
      public void setMode(int mode) 
      { 
       // TODO Auto-generated method stub 
      } 

      public boolean isFlashReady() 
      { 
       // TODO Auto-generated method stub 
       return false; 
      } 

      public int[] getSupportedModes() 
      { 
       // TODO Auto-generated method stub 
       return null; 
      } 

      public int getMode() 
      { 
       // TODO Auto-generated method stub 
       return 0; 
      } 
     }; 
     flashControl = (FlashControl) player 
       .getControl("javax.microedition.amms.control.camera.FlashControl"); 

     try { 

      if (k == 1) 
      { 
       flashControl.setMode(FlashControl.AUTO); 
       Dialog.alert("slect Auto"); 
      } 
      else if (k == 2) 
      { 
       flashControl.setMode(FlashControl.OFF); 
       Dialog.alert("slect No"); 
      } 
     } 
     catch (Exception e) 
     { 
      System.out.println(e); 
     } 

     if (_videoControl != null) 
     { 
      _videoField = (Field) _videoControl.initDisplayMode(
        VideoControl.USE_GUI_PRIMITIVE, 
        "net.rim.device.api.ui.Field"); 

      // _videoControl.setDisplaySize(330, 420); 
      // _videoControl.setDisplayLocation(getContentWidth(), 
      // getContentHeight()); 

      _videoControl.setVisible(true); 

      add(_videoField); 

      capture = new ButtonField("Capture", Field.FIELD_HCENTER); 
      capture.setChangeListener(this); 

      add(capture); 
      player.start(); 

     } 
    } 
    catch (Exception e) 
    { 
     System.out.println(e); 
    } 
} 

这个逻辑已经被同时Pinkesh在the公司

+0

可否请您提供“Camera”类的完整代码? – CAMOBAP 2013-02-21 12:41:42

+0

,我为你解答+50问题 – CAMOBAP 2013-02-21 12:49:03

1

FlashControl类实现为我的同事

,购自OS 5.0允许你打开闪光灯。只需设置您的播放器与FORCE标志闪光灯控制:

FlashControl flash = (FlashControl)player.getControl("javax.microedition.amms.control.camera.FlashControl"); 
if(flash!=null) { 
    try { 
     flash.setMode(FlashControl.FORCE); 
    } catch(IllegalArgumentException iae){}   
} 

对于这个工作,你可能需要打开一个播放器来录制视频或拍照。为了简洁起见,我没有在代码中显示该代码,但您可以阅读教程here。如果您的应用只是关于开启闪光灯,您可能希望隐藏视频领域。