Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Работа с MMAPI


Автор: SatanClaus 15.8.2007, 17:11
Всем привет, решил с камерой телефона поработать, и сразу же столкнулся с множеством траблов

Код

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.media.*;
import javax.microedition.media.control.VideoControl;
import java.io.IOException;

public class CameraCanvas extends Canvas{

    private Player player;
    private VideoControl conrol;

    CameraCanvas(){
        System.out.println(System.getProperty("supports.video.capture"));
        try{
            player = Manager.createPlayer("capture://video");
            player.realize();
            conrol = (VideoControl) player.getControl("VideoControl");
            conrol.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
            conrol.setDisplayFullScreen(true);
            conrol.setVisible(true);
            player.start();
        } catch (MediaException me){System.out.println("MediaException in constructor. Device does not support video capture!");
        } catch (IOException ioex){System.out.println("IOException in constructor");}
    }

    private Image image;
    public void paint(Graphics g){
        try{
            byte[] png = conrol.getSnapshot(null);
            image = Image.createImage(png, 0, png.length());    // В среде пишет ошибку, потому что png.length() == null
                                                                // Не понимаю почему
        } catch (MediaException me){System.out.println("MediaException in <<paint>>");}
        g.drawImage(image, 0, 0, Graphics.LEFT | Graphics.TOP); 
    }

    public void keyPressed(int keyCode){

    }
}


Выдается MediaException &
System.getProperty("supports.video.capture") == false
Телефон у меня k700. Разве он не может передавать видео мидлету?
Ну а больше всего меня интересует, почему мой массив байтов == null, я прокоментировал в коде, где у меня ошибка выдается...

Автор: W0LF 15.8.2007, 17:52
Код

byte[] png = control.getSnapshot("encoding=jpeg");

например

Добавлено @ 17:57
Цитата

MediaException - Thrown if the requested format is not supported or the Player does not support snapshots.

Автор: dual 15.8.2007, 18:20
Стоит хотя бы заменить
Цитата(SatanClaus @  15.8.2007,  17:11 Найти цитируемый пост)
image = Image.createImage(png, 0, png.length()); 

на 
Код

image = Image.createImage(png, 0, png.length);

Но все равно странный какой-то код для snapshot'ов, даже камера не останавливается.

Так камера хоть останавливается
Код

        try{
            Thread.sleep(1000);
            player.stop();
            byte[] png = conrol.getSnapshot(null);
            image = Image.createImage(png, 0, png.length );    
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        } catch (MediaException me){System.out.println("MediaException in <<paint>>");}


Автор: tanderbold 16.8.2007, 10:44
привет, есть вероятность, что снапшот просто не успевает создаваться, поэтому длина картинки нулевая.

Автор: W0LF 16.8.2007, 11:19
Цитата(dual @  15.8.2007,  18:20 Найти цитируемый пост)
Так камера хоть останавливается

я останавливал камеру после getSnapshot()

Цитата(tanderbold @  16.8.2007,  10:44 Найти цитируемый пост)
привет, есть вероятность, что снапшот просто не успевает создаваться, поэтому длина картинки нулевая. 

нет, такой вероятности нет, ибо 

Цитата(SatanClaus @  15.8.2007,  17:11 Найти цитируемый пост)
Выдается MediaException &


Цитата(W0LF @  15.8.2007,  17:52 Найти цитируемый пост)

MediaException - Thrown if the requested format is not supported or the Player does not support snapshots.

а Image.createImage ну никак не может кинуть это исключение


Автор: tanderbold 17.8.2007, 07:58
http://www.mobilab.ru/articles/78/

Автор: W0LF 17.8.2007, 09:11
чет я там не нашел

Цитата(tanderbold @  16.8.2007,  10:44 Найти цитируемый пост)
что снапшот просто не успевает создаваться


Автор: tanderbold 17.8.2007, 09:21
может просто телефон не поддерживает данные явовские функции, может быть там всё через апи телефона реализуется.

Добавлено через 2 минуты и 27 секунд
http://developers.sun.com/mobility/midp/articles/picture/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)