#java-me #lwuit #video-component
#java-me #lwuit #видеокомпонент
Вопрос:
я использую видеокомпонент lwuit для воспроизведения видео.
import com.sun.lwuit.Button;
import com.sun.lwuit.Display;
import com.sun.lwuit.Font;
import com.sun.lwuit.Form;
import com.sun.lwuit.Image;
import com.sun.lwuit.VideoComponent;
import com.sun.lwuit.animations.CommonTransitions;
import com.sun.lwuit.events.ActionEvent;
import com.sun.lwuit.events.ActionListener;
import com.sun.lwuit.plaf.Border;
import com.sun.lwuit.table.TableLayout;
import javax.microedition.midlet.*;
public class vtestMidlet extends MIDlet implements ActionListener{
private Image back;
public void startApp() {
Display.init(this);
loginform();
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
void loginform()
{
Form login=new Form();
Button save;
save=new Button("Save");
login.addComponent(save);
login.getSelectedStyle().setBgColor(0xff0000);
login.getUnselectedStyle().setBgColor(0xff0000);
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
videoform();
}
});
login.setTransitionOutAnimator(CommonTransitions.createSlide(CommonTransitions.SLIDE_HORIZONTAL, false, 200));
login.show();
}
void videoform()
{
final Form videoplayer;
final VideoComponent vc;
Button home;
try{
videoplayer=new Form();
TableLayout layout2 = new TableLayout(10,1);
videoplayer.setLayout(layout2);
vc = VideoComponent.createVideoPeer("http://localhost/md.3gp");
home=new Button("Home");
vc.start();
videoplayer.getUnselectedStyle().setBgImage(back);
videoplayer.getSelectedStyle().setBgImage(back);
home.getUnselectedStyle().setBgColor(0x4673aa);
home.getSelectedStyle().setBgColor(0x4673aa);
home.getUnselectedStyle().setFont(Font.createSystemFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN, Font.SIZE_MEDIUM));
home.getSelectedStyle().setFont(Font.createSystemFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD, Font.SIZE_MEDIUM));
home.getUnselectedStyle().setFgColor(0xffffff);
home.getSelectedStyle().setFgColor(0xffffff);
home.getSelectedStyle().setBorder(Border.createEmpty());
home.getUnselectedStyle().setBorder(Border.createEmpty());
home.getSelectedStyle().setPadding(3, 3, 6, 6);
home.getUnselectedStyle().setPadding(3, 3, 6, 6);
videoplayer.addComponent(vc);
videoplayer.addComponent(home);
videoplayer.setTransitionOutAnimator(CommonTransitions.createSlide(CommonTransitions.SLIDE_HORIZONTAL, false, 200));
home.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
vc.stop();
loginform();
}
});
videoplayer.show();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent arg0) {
}
}
Моя проблема заключается в том, что при переключении обратно на другую форму (т.Е. loginform) из формы, которая отображает видео (т.е. videoform), видео воспроизводится поверх loginform. найдите скриншот ниже.
Ответ №1:
Это потому, что ваш видеокомпонент останавливается неправильно. Попробуйте добавить:
VideoComponent vc;
Player player;
vc = VideoComponent.createVideoPeer("http://localhost/md.3gp");
player = (Player) vc.getNativePeer();
player.realize();
vc.start();
и в действии прослушиватель:
player.stop();
vc.stop();
player.close();
loginform();