Включите вспышку как свет на Blackberry - PullRequest
6 голосов
/ 23 ноября 2010

Я новичок в разработке приложений BlackBerry и пытаюсь сделать простое приложение, чтобы включить фонарик в качестве фонарика.Я знаю, что есть несколько приложений, которые уже делают это, но я хотел бы попробовать сделать это самостоятельно.

Я установил eclipse и все необходимые дополнения, чтобы запустить мою среду разработки.Я также успешно создал стандартное приложение Hello World.

Однако я пытаюсь выяснить, как это сделать.Я читал документацию по API и начал играть с FlashControl, VideoControl и SnapshotControl.
Однако эти методы, похоже, не раскрывают способы сделать это.

Я знаю повидеокамера Я могу перейти к настройкам и включить вспышку, и это именно то, что я пытаюсь имитировать.

Код, который я использовал до сих пор, который, кажется, просто устанавливает вспышку камеры на принудительноена это:

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

Ответы [ 3 ]

3 голосов
/ 04 августа 2011

проблема, связанная с управлением вспышкой, была решена мной

, поскольку я использую управление вспышкой в ​​моем недавнем приложении на

камере.

Воткод, который я использовал:

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

эта логика была реализована одновременно с Пинкешем в качестве моего коллеги

в компании

1 голос
/ 25 февраля 2013

Класс 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){}         
}

Чтобы это работало, вам, вероятно, потребуется открыть плеер для записи видео или сделать снимок.Я не показываю это в моем коде для краткости, но здесь вы можете прочитать учебник.Если ваше приложение предназначено только для включения вспышки, вы, вероятно, хотели бы скрыть поле видео.

0 голосов
/ 30 ноября 2010

Попробуйте что-то вроде этого

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

или импортировать этот пакет

package lsphone.flash.microfireps;
...