布衣王子

          Email:roose2008@gmail.com QQ:79212131

          NetBeans進行手機開發之——播放多媒體

                 NetBeans使用mobility包開發手機程序,采用了流設計使得開發過程簡便和可視化。在這里我主要介紹如何在使用mobility包開發播放多媒體數據(圖片、音頻、視頻)的Demo,和大家一起分享。

           

                 Demo開發環境:

                        NetBeans 5.5.1

                        Mobility Package

           

          一.圖片

          NetBeans上手機顯示圖片非常方便,只需要幾個拖拽和設置即可完成,甚至不需要寫到一行代碼。主要步驟為:

          1. 把圖片放到程序主目錄/src/ 文件夾里面

          2. 在資源中增加一個Image資源,并設置其屬性,把資源路徑屬性設置為某個圖片資源。

          3. form中增加一個ImageItem,將其圖片屬性設為上述的Image資源,并根據需要設置圖片的布局。

          設置完運行程序即可發現圖片已經可以顯示。

           

          二.音頻

          J2ME中,移動媒體APIMMAPI)是一個可選包,它提供了一個標準的API,可以用來表現和獲得以時間為基礎的媒體。例如聲音軌道和視頻片斷。在mobility包安裝后就會有這個MMAPI包,在程序->屬性->可選包中即可發現MMAPI包。

          在此Demo中使用的MMAPI1.1,這個版本支持以下媒體類型:

          MIME類型                       描述

          audio/midi                      MIDI文件

          audio/sp-midi                   可升級的多音MIDI

          audio/x-tone-seq                MIDP2.0音調序列

          audio/x-wav                     WAV PCM取樣音頻

          image/gif                       FIG89a(活動的GIF

          video/mpeg                      MPEG視頻

          video/vnd.sun.rgb565            視頻記錄

          其他媒體類型(Mp4,3gp)等現在還沒支持,相信在不久的將來MMAPI新版本就會支持。

           

          播放音頻的主要開發步驟為:

          1.       獲得音頻資源

          2.       創建Player

          3.       播放音頻

          主要的代碼如下:

          if (command == playMusicCommand) {                    

                          // Insert pre-action code here

                          isPlay = !isPlay;

                          if(isPlay == true)

                          {

                              form2.removeCommand(playMusicCommand);

                              playMusicCommand = new Command("暫停", Command.OK, 1);

                              form2.addCommand(playMusicCommand);

                              if(music == null)

                              {

                                  try {                          

                                      in = null;         //inInputStream類,此部分代碼未顯示

                                                           //獲取音頻資源,創建Player

                                      in = getClass().getResourceAsStream("qhc.wav");

                                      music = Manager.createPlayer(in,"audio/x-wav");

                                     

                                  } catch (Exception e) {

                                      e.printStackTrace();

                                  }

                                  try {                

                                      music.start();         //開始播放

                                      ticker1.setString("正在播放音樂  ");

                                  } catch (Exception e) {

                                      e.printStackTrace();

                                  }

                              }

                              else

                              {

                                  try {

                                      music.setMediaTime(pauseTime); //暫停后繼續播放

                                      music.start();

                                      ticker1.setString("正在播放音樂 ");

                                  } catch (Exception e) {

                                      e.printStackTrace();

                                  }

                              }

                          }

                          else

                          {

                              try {

                                  pauseTime = music.getMediaTime();    //暫停播放

                                  music.stop();

                                  ticker1.setString("暫停播放");

                                  form2.removeCommand(playMusicCommand);

                                  playMusicCommand = new Command("播放", Command.OK, 1);

                                  form2.addCommand(playMusicCommand);

                              } catch (Exception e) {

                                  e.printStackTrace();

                              }

                          }

                          // Do nothing                       

                          // Insert post-action code here

                      } else if (command == backCommand5) {                     

                          // Insert pre-action code here

                          try {

                              music.stop();         //停止播放

                              music.close();

                              isPlay = false;

                          } catch (Exception e) {

                              e.printStackTrace();

                          }

                          form2.removeCommand(playMusicCommand);

                          playMusicCommand = new Command("播放", Command.OK, 1);

                          form2.addCommand(playMusicCommand);

                          getDisplay().setCurrent(get_list1());                       

                          // Insert post-action code here

                      }

           

          三.視頻

          播放視頻仍然要注意播放的視頻格式是否是正在使用的MMAPI版本所支持的,這里我們主要播放.mpg視頻。

          播放視頻和播放音頻的主要步驟是一樣的,主要的區別在于視頻需要建立VideoControl類,用來設置視頻的顯示模式等。

          主要的代碼如下:

          if (command == playVideoCommand) {                    

                          // Insert pre-action code here

                          isPlay = !isPlay;

                          if(isPlay == true)

                          {

                              form3.removeCommand(playVideoCommand);

                              playVideoCommand = new Command("暫停", Command.OK, 1);

                              form3.addCommand(playVideoCommand);

                              //isPlay = false;

                              if(video == null)

                              {

                                  try {                          

                                      iv = null; //ivInputStream類,此部分代碼未顯示

                                                           //獲取視頻資源,創建Player

           

                                      iv = getClass().getResourceAsStream("sun.mpg");

                                      video = Manager.createPlayer(iv,"video/mpeg");

                                      video.realize();

           

                                  } catch (Exception e) {

                                      e.printStackTrace();

                                  }

                                  try {

                                             // 設置VideoControl控制類               

                             VideoControl vc = (VideoControl)video.getControl("VideoControl");

            //設置視頻播放的Item

          Item videoItem = (Item)vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE,null);

                                      //form3.deleteAll();

                                      form3.append(videoItem);

                                      video.start();          //開始播放

                                      ticker2.setString("正在播放視頻");

                                  } catch (Exception e) {

                                      e.printStackTrace();

                                  }

                              }

                              else

                              {

                                  try {

                                      video.setMediaTime(pauseTime);  //暫停后繼續播放

                                      video.start();  

                                      ticker2.setString("正在播放視頻”");

                                  } catch (Exception e) {

                                      e.printStackTrace();

                                  }

                              }

                          }

                          else

                          {

                              try {

                                  pauseTime = video.getMediaTime();     //暫停播放

                                  video.stop();  

                                  ticker2.setString("暫停播放視頻 ");

                                  form3.removeCommand(playVideoCommand);

                                  playVideoCommand = new Command("播放", Command.OK, 1);

                                  form3.addCommand(playVideoCommand);

                              } catch (Exception e) {

                                  e.printStackTrace();

                              }

                          }

                         

                          // Do nothing                       

                          // Insert post-action code here

                      } else if (command == backCommand4) {                     

                          // Insert pre-action code here

                          try {

                              video.stop();   //停止播放

                              video.close();

                              isPlay = false;

                          } catch (Exception e) {

                              e.printStackTrace();

                          }

                          form3.removeCommand(playVideoCommand);

                          playVideoCommand = new Command("播放", Command.OK, 1);

                          form3.addCommand(playVideoCommand);

                          getDisplay().setCurrent(get_list1());                        

                          // Insert post-action code here             

                      }

           

          四.注意事項

          開發播放多媒體程序時應該注意資源的大小和模擬器設置的大小以及開發應用的手機的資源等。在開發如果程序都還沒有錯誤(如未釋放內存資源等)還是出現OutOfMemoryError就應該模擬器設置的內存大小太小。

          打開程序->屬性->管理仿真器->工具和擴展->打開首選項->存儲,可以設置存儲大小和內存大小。但是此大小不能大于程序將應用的手機的內存大小,否則就算是程序能在模擬器中運行還是不能在手機中運行。

          posted on 2008-06-20 10:43 草包書生 閱讀(469) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          常用鏈接

          相冊

          java的相關連接

          最新評論

          主站蜘蛛池模板: 永泰县| 漳浦县| 内乡县| 濮阳县| 个旧市| 克什克腾旗| 泾川县| 呼伦贝尔市| 琼海市| 宜兰市| 阿合奇县| 刚察县| 资阳市| 安乡县| 拜泉县| 邢台县| 高州市| 乌海市| 屏山县| 莱州市| 河北区| 上饶市| 彰化县| 寿宁县| 建水县| 东辽县| 鲁山县| 通海县| 巩留县| 本溪市| 长岭县| 南城县| 平舆县| 蓬安县| 天等县| 徐闻县| 界首市| 南通市| 伊春市| 通榆县| 五家渠市|