j2me使用视频组件进行线程处理

时间:2011-09-02 08:02:14

标签: multithreading java-me lwuit video-component

我试图实现一个具有以下结构的java应用程序。

enter image description here

我的问题是

  1. 当我从videoplayer线程调用引用线程时,视频仍会在引号表单上播放。

  2. 当我使用动作事件更改视频网址时,它只会添加当前新玩家。 恩。当我按下视频2按钮

  3. 时,video2会与当前正在运行的video1一起追加

      class VideoPlayer implements Runnable,ActionListener{
          private videoappMidlet MIDlet;
          VideoComponent vc;
          Button Videos,quotes,video1,video2,video3;
          Form videoplayer;
          Thread thread;
          public VideoPlayer(videoappMidlet MIDlet){
            this.MIDlet = MIDlet;
          }
    
          public void run(){
          try{
            videoplayer=new Form();
            video1=new Button("video1");
            .......
    
            vc = VideoComponent.createVideoPeer("http://localhost/video1.mpg");
            vc.start();
    
            quotes.addActionListener((ActionListener) this);
            ........
    
            videoplayer.addComponent(vc);
            ........
    
            videoplayer.show();
    
           }catch(Exception error){
            System.err.println(error.toString());
           }
          }
    
          public void start(){
           thread = new Thread(this);
           try{ thread.start();}
           catch(Exception error){}
          }
    
          public void actionPerformed(ActionEvent ae) {
              if((ae.getSource()==Quotes))
              {
                  Quotes tp = new Quotes(this.MIDlet);
                  tp.start();
              }
              if(ae.getSource()==video1)
              {
                    try {
                        vc = VideoComponent.createVideoPeer("http://localhost/video1.mpg");
                        vc.start();
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
              }
              ....
          }
    
        }
    
    
        class Quotes implements Runnable,ActionListener {
          private videoappMidlet MIDlet;
          Button Videos,quotes;
          Form quote;
          Thread thread;
          public Quotes(videoappMidlet MIDlet){
            this.MIDlet = MIDlet;
          }
    
          public void run(){
          try{
            quote=new Form();
            Videos=new Button("Videos");
            ........
    
            quote.addComponent(Videos);
            ........
    
            Videos.addActionListener(this);
            ........
    
            quote.show();
           }catch(Exception error){
            System.err.println(error.toString());
           }
          }
    
          public void start(){
           thread = new Thread(this);
           try{ thread.start();}
           catch(Exception error){}
          }
    
          public void actionPerformed(ActionEvent ae) {
              if(ae.getSource()==Videos)
              {
                 VideoPlayer vp = new VideoPlayer(this.MIDlet);
                 vp.start();
              }
          }
        }
    
    
        public class videoappMidlet extends MIDlet implements ActionListener{
            Button play,quote;
            Form home;
            public void startApp() {
                Display.init(this);
                home=new Form();
    
                play.addActionListener(this);
                quote.addActionListener(this);
                home.show();
            }
            public void actionPerformed(ActionEvent ae) {     
              if(ae.getSource()==play)
              {
                VideoPlayer vp = new VideoPlayer(this);
                vp.start();
              }
              if(ae.getSource()==quote)
              {
                Quotes tp = new Quotes(this);
                tp.start();
              }
            }
         }
    

1 个答案:

答案 0 :(得分:2)

通常,JavaME中的视频不保证正在播放的图层。 LWUIT尝试无缝地暂停视频播放器,例如用户界面上的对话框。

作为附注,LWUIT不是线程安全的,您不能使用单独的线程来访问UI,因为将在不同平台上破解