J2ME - использование javax.microedition.amms.control.camera.CameraControl; можно ли отключить звук затвора? - PullRequest
3 голосов
/ 11 марта 2012

В моем приложении Blackberry я реализовал камеру и хотел бы заменить звук затвора по умолчанию своим собственным. Я решил, что мог бы сделать это, отключив звук камеры по умолчанию, используя метод enableShutterFeedback (false), затем проиграв свой собственный звук или воспроизведя мой звук непосредственно перед активацией камеры.

private void initializeCamera()
    {
        try
        {
            // Create a player for the Blackberry's camera
            Player player = Manager.createPlayer( "capture://video" );

            // Set the player to the REALIZED state (see Player javadoc)
            player.realize();

            // Grab the video control and set it to the current display
            _videoControl = (VideoControl)player.getControl( "VideoControl" );

            if (_videoControl != null)
            {
                // Create the video field as a GUI primitive (as opposed to a
                // direct video, which can only be used on platforms with
                // LCDUI support.)
                _videoField = (Field) _videoControl.initDisplayMode (VideoControl.USE_GUI_PRIMITIVE, "net.rim.device.api.ui.Field");
                _videoControl.setDisplayFullScreen(true);
                _videoControl.setVisible(false);
            }
            cc = (CameraControl)player.getControl("CameraControl");
            cc.enableShutterFeedback(false);
            // Set the player to the STARTED state (see Player javadoc)
            player.start();

        }
        catch(Exception e)
        {
            MyApp.errorDialog("ERROR " + e.getClass() + ":  " + e.getMessage());
        }
    }

Это приводит к исключению нулевого указателя, но не может выяснить, что его вызывает, видео с камеры не отображается. Если я удалю код CameraControl жирным шрифтом, тогда будет показано видео с камеры. Есть идеи, что я должен попытаться избавиться от звука затвора? Я пробовал VolumeControl вместо CameraControl, те же результаты, нулевой указатель.

1 Ответ

5 голосов
/ 12 марта 2012

Код CameraControl дает NPE, потому что player.getControl возвращает ноль, и это происходит потому, что строковый параметр неверен.Попробуйте это:

CameraControl control = (CameraControl) p.getControl("javax.microedition.amms.control.camera.CameraControl");
...