j2me Threading с видео компонентом - PullRequest
       29

j2me Threading с видео компонентом

0 голосов
/ 02 сентября 2011

Я попытался реализовать приложение Java, которое имеет следующую структуру.

enter image description here

мои проблемы

  1. когда я вызываю цитаты нить из нити видеоплеера, видео по-прежнему воспроизводится поверх формы кавычек.

  2. когда я меняю URL-адрес видео на событие action, он просто добавляет нового игрока с текущим. ех. video2 добавляется вместе с текущим video1, когда я нажимаю кнопку video 2

.

  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 Ответ

2 голосов
/ 04 сентября 2011

Обычно видео в JavaME не дает гарантии тому слою, на котором оно воспроизводится.LWUIT пытается плавно приостановить проигрыватель видео для таких вещей, как диалог в верхней части пользовательского интерфейса.

В качестве примечания, LWUIT не является потокобезопасным, и вы не должны использовать отдельный поток для доступа к пользовательскому интерфейсу, так как он сломает на разных платформах.

...