В примере простого плэера описано что-то вобще не понятное, оно у меня так и не скомпилилось:
try {
Player p = Manager.createPlayer("http://abc.mpg");
p.realize();
VideoControl vc;
if ((vc = (VideoControl)p.getControl("VideoControl")) != null)
add((Component)vc.initDisplayMode(vc.USE_GUI_PRIMITIVE, null));
p.start();
} catch (MediaException pe) {
} catch (IOException ioe) {
}
В описаниях GUIControl описан метод использования формы, что меня не устраивает:
try {
Player p = Manager.createPlayer("http://abc.mpg");
p.realize();
GUIControl gc;
if ((gc = (GUIControl)p.getControl("GUIControl")) != null) {
Form form = new Form("My GUI");
form.append((Item)gc.initDisplayMode(GUIControl.USE_GUI_PRIMITIVE, null));
Display.getDisplay(midlet).setCurrent(form);
}
p.start();
} catch (MediaException pe) {
} catch (IOException ioe) {
}
В описании VideoControl описан метод с использованием Canvas, с ним вроде как всё ясно, но телефон не захотел играть вообще
javax.microedition.lcdui.Canvas canvas;
:
try {
Player p = Manager.createPlayer("http://abc.mpg");
p.realize();
VideoControl vc;
if ((vc = (VideoControl)p.getControl("VideoControl")) != null)
vc.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, canvas));
vc.setVisible(true);
p.start();
} catch (MediaException pe) {
} catch (IOException ioe) {
}
Попытался сделать всё также , только прописать Use_GUI_PRIMITIVE - изображения нет.
Вот полный исходник библиотеки:
import javax.microedition.media.*;
import javax.microedition.media.control.*;
public class Lib_xplay {
private static Player play;
private static VolumeControl vc;
private static VideoControl vid;
public static int open_url(String url) {
int res = 1;
try {
close_player();
play = (Player) Manager.createPlayer(url);
play.realize();
vc = (VolumeControl) play.getControl("VolumeControl");
vid = null;
vid = (VideoControl) play.getControl("VideoControl");
if (vid != null) {
res = 2;
vid.initDisplayMode(vid.USE_GUI_PRIMITIVE, null);
}
if (play.getState() != play.REALIZED) {res = 0;}
play.prefetch();
vc.setLevel(50);
if (play.getState() != play.PREFETCHED) {res = 0;}
} catch (Exception e) {res = 0;}
return res;
}
public static void setvolume (int vol) {
if(vc != null) {vc.setLevel(vol);}}
public static int start_play() {
try {play.start(); return 1;} catch (MediaException e) {return 0;}}
public static int stop_play()
{ try { if(play != null && play.getState() == play.STARTED) {
play.stop(); return 1;} else return 0; } catch (MediaException e) {return 0;}}
public static void close_player() {
try {
if (play != null) {
if(play.getState() == play.STARTED) {
play.stop();
}
if(play.getState() == play.PREFETCHED) {
play.deallocate();
}
if(play.getState() == play.REALIZED ||
play.getState() == play.UNREALIZED) {
play.close();
}
} } catch (Exception e) {}
play = null; }
public static int is_playing()
{ if(play != null && play.getState() == play.STARTED) {return 1;} else return 0; }
public static void vis_video(int bl) {
if (bl != 0) { vid.setVisible(true); } else { vid.setVisible(false); } }
}
Но в нём явно не хватает определения метода вывода изображения.