我是BlackBerry应用程序开发的新手,正在尝试制作一个简单的应用程序来打开闪光灯。我知道已经有几个应用程序可以执行此操作,但是我想尝试自己执行。

我已经安装了eclipse和所有必要的附件,以使我的开发环境运行。我还成功创建了股票标准的hello world应用程序。

但是,我正在努力寻找方法。我一直在阅读API文档,并开始使用FlashControlVideoControlSnapshotControl
但是,这些似乎没有公开实现此目的的方法。

我知道通过摄像机可以转到选件并打开闪光灯,而这正是我要模仿的。

我到目前为止使用的似乎只是将相机闪光灯设置为强制打开的代码是:

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);

最佳答案

我已经解决了与闪光灯控制有关的问题

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

相机。

这是我使用的代码:

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作为我的同事同时实现的

在公司里

10-02 09:53