Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Автофокус 
:(
    Опции темы
Ockonal
Дата 14.1.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: нет
Всего: 3



Здравствуйте, как правильно использовать автофокус?
http://wiki.forum.nokia.com/index.php/How_to_use_auto_focus
Вот здесь написано что-то, но я не пойму, как, например, focusControl влияет на фотографирование, если мы его нигде не используем (кроме инициализации). И еще, там есть пункт <your canvas>.
Как я понял, туда нужно подставить объект Canvas, а как далее?
Спасибо.
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Dummy
Дата 14.1.2009, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 7
Всего: 19



Цитата(Ockonal @  14.1.2009,  17:21 Найти цитируемый пост)
И еще, там есть пункт <your canvas>.
Как я понял, туда нужно подставить объект Canvas, а как далее?

А далее на этот Canvas будет рисоваться содержимое viewfinder'а камеры.

Цитата(Ockonal @  14.1.2009,  17:21 Найти цитируемый пост)
Вот здесь написано что-то, но я не пойму, как, например, focusControl влияет на фотографирование, если мы его нигде не используем (кроме инициализации).

Дык как же не используем, когда
Код

focusControl.setMacro(true);

переводит камеру в режим макросъемки.
PM MAIL   Вверх
Ockonal
Дата 14.1.2009, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: нет
Всего: 3



Dummy, 
Ок, спасибо за ответ! Вопрос за Canvas:
Создаю так:
Код

Canvas Object;
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, Object);

Конечно же, не пускает Object без инициализации. Что с ним делать вначале?
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Dummy
Дата 14.1.2009, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 7
Всего: 19



Цитата(Ockonal @  14.1.2009,  20:05 Найти цитируемый пост)
Конечно же, не пускает Object без инициализации. Что с ним делать вначале? 

Перед этим создать Canvas, как обычно. Например, так:

Код

Canvas myCanvas = new Canvas() {
    protected void paint(Graphics g) {
        g.fillRect(0, 0, getWidth(), getHeight());
    }
};

videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, myCanvas);

// myMidlet - ссылка на инстанс твоего мидлета. Если ты делаешь это
// внутри мидлетного метода, то myMidlet == this
Display.getDisplay(myMidlet).setCurrent(myCanvas);
// дальше по тексту


PM MAIL   Вверх
Ockonal
Дата 15.1.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: нет
Всего: 3



Dummy, 
Спасибо огромное! +1
Цитата

Перед этим создать Canvas, как обычно.

smile Я недавно начал под j2me программировать, поэтому "как обычно" смущает smile.

Цитата

// myMidlet - ссылка на инстанс твоего мидлета. Если ты делаешь это
// внутри мидлетного метода, то myMidlet == this
Display.getDisplay(myMidlet).setCurrent(myCanvas);
// дальше по тексту

А если это делается в методе другого класса? Передавать ссылку на объект мидлета? И нужно ли это, мне показ на экран не надо, только создание фотографии.
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Dummy
Дата 16.1.2009, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 7
Всего: 19



Цитата(Ockonal @  15.1.2009,  17:02 Найти цитируемый пост)
А если это делается в методе другого класса? Передавать ссылку на объект мидлета? И нужно ли это, мне показ на экран не надо, только создание фотографии. 

Тогда не надо ни создавать Canvas, ни получать VideoControl. Достаточно просто взять RecordControl от объекта Player и сделать фотку / захватить видео. Только как же без видоискателя понять, что именно будет сфотографировано? Неудобно получается как-то smile 
PM MAIL   Вверх
Ockonal
Дата 16.1.2009, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: нет
Всего: 3



А можете подробней об этом RecordControl.
Мне не нужно наводить. Все ок.
И еще, смотрите как я делаю:
Код

CameraPlayer = Manager.createPlayer("capture://video");
           CameraPlayer.realize();
           CameraPlayer.prefetch();
    
           videoControl = (VideoControl)CameraPlayer.getControl("VideoControl");
           if (CameraPlayer.getState() == Player.PREFETCHED) {
            CameraPlayer.start();
           }


Код

videoControl.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null);
           Snapshot = videoControl.getSnapshot("encoding=png");


Фотографии получаются маленькие, очень размазанные.  Не подскажите причину?
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Dummy
Дата 16.1.2009, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 7
Всего: 19



Ой, прошу прощения. Наврал я про RecordControl. Это все же для записи видео / аудио. А для фоток придется использовать VideoControl. И делать initDisplayMode() на существующий Canvas. По поводу того, чтобы это видоискатель не отображать... Есть вот такой топик. Вкратце - рендерить видоискатель за пределы экрана...

Как вариант, можно посмотреть, что будет, если просто не делать Display.setCurrent() на Canvas с видоискателем.

По поводу качества картинки - посмотри, что возвращает System.getProperty("video.snapshot.encodings") - это список возможных форматов захватываемой картинки. Может быть, там будет формат, который будет лучше выглядеть, чем "encoding=png".

Это сообщение отредактировал(а) Dummy - 16.1.2009, 00:39
PM MAIL   Вверх
Ockonal
Дата 16.1.2009, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: нет
Всего: 3



Цитата

По поводу качества картинки - посмотри, что возвращает System.getProperty("video.snapshot.encodings") - это список возможных форматов захватываемой картинки. Может быть, там будет формат, который будет лучше выглядеть, чем "encoding=png". 

Ок, посмотрю. Но, имхо, png неплохой формат. Камера 5 мегапикселей, а фото делается с разрешением не более 400х400... где-то так.

Цитата

работает? Можно передавать null вместо живого объекта?

Работает smile
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Dummy
Дата 16.1.2009, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 7
Всего: 19



Цитата(Ockonal @  16.1.2009,  00:40 Найти цитируемый пост)
Работает smile 

А, да, для USE_GUI_PRIMITIVE работает. Логично.

Цитата(Ockonal @  16.1.2009,  00:40 Найти цитируемый пост)
Ок, посмотрю. Но, имхо, png неплохой формат. Камера 5 мегапикселей, а фото делается с разрешением не более 400х400... где-то так.

Но ведь помимо собственно формата изображения (png, jpeg и т. д.) есть еще ширина и высота снимка. Например, поддерживаемый формат может представляться так: "encoding=png&width=640&height=480", т. е. мы говорим, что хотим захватить не просто абы какую png-фотку, а размера 640x480. Конечно, камера должна поддерживать фотографии такого разрешения.

В общем, значение System.getProperty("video.snapshot.encodings") в студию)))
PM MAIL   Вверх
Ockonal
Дата 16.1.2009, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: нет
Всего: 3



Ок, с этим:
width=640&height=480
Поиграюсь, спасибо. 

Цитата

В общем, значение System.getProperty("video.snapshot.encodings") в студию))) 

Наверное, завтра smile Поздновато уже. Спасибо за помощь!
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Ockonal
Дата 16.1.2009, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: нет
Всего: 3



Нашел причину!
Код

       try {
           FocusControl focusControl = (FocusControl)CameraPlayer.getControl("javax.microedition.amms.control.camera.FocusControl");
           if (focusControl == null) {
                  focusControl = (FocusControl)CameraPlayer.getControl("FocusControl");
           }
        
           if (focusControl != null) {
                  try {
                    if (focusControl.isMacroSupported() && !focusControl.getMacro()) {
                      focusControl.setMacro(true);
                    }
                    if (focusControl.isAutoFocusSupported()) {
                      focusControl.setFocus(FocusControl.AUTO);
                      try {
                        Thread.sleep(FOCUS_TIME_MS); // let it focus...
                      } catch (InterruptedException ie) {
                        // continue
                      }
                      focusControl.setFocus(FocusControl.AUTO_LOCK);
                    }
                  } catch (MediaException me) {
                    // continue
                  }
           } else {
               throw new Exception("focus control is NULL!!");
           }
       } catch (Exception e ) { return "focusControl: " + e.toString(); }


Вылетает: focus control is NULL!!...
Мобилка Nokia 6220 Classic. Подскажите, может там нету поддержки фокусировки, или я что-то не так делаю?
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Dummy
Дата 17.1.2009, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 7
Всего: 19



PM MAIL   Вверх
Ockonal
Дата 19.1.2009, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: нет
Всего: 3



Ок, спасибо. Все ясно.
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Ockonal
Дата 19.1.2009, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: нет
Всего: 3



Не, не все ясно...
Код

 try {
           FocusControl focusControl = (FocusControl)CameraPlayer.getControl("javax.microedition.amms.control.camera.FocusControl");
           if (focusControl != null) 
           {
                  try {
                    if (focusControl.isMacroSupported() && !focusControl.getMacro()) {
                      focusControl.setMacro(true);
                    }
                    if (focusControl.isAutoFocusSupported()) {
                      focusControl.setFocus(FocusControl.AUTO);
                      try {
                        Thread.sleep(FOCUS_TIME_MS); // let it focus...
                      } catch (InterruptedException ie) {
                        // continue
                      }
                      focusControl.setFocus(FocusControl.AUTO_LOCK);
                    }
                  } catch (MediaException me) {
                    // continue
                  }
           }
       } catch (Exception e ) { return "focusControl: " + e.toString(); }

Вообщем, focusControl = null.
Мобилка Nokia N82... Неужели и она не поддерживает? о0
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.