熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

如何在Java應用程序中播放聲音文件

2013-11-15 11:39:33  來源: JSP教程 

  簡介
  現有的在 Java applet 中對聲音播放的支持使得聲音播放任務變得很簡單但是在應用程序中缺少這樣的支持此篇小技巧將告訴你如何在 Java 應用程序中播放聲音文件( 字)
  在 Java 應用程序中播放聲音文件在現有發行的 Java 版本中都沒有正式的支持但別擔心我們還是有辦法的此篇小技巧將告訴你怎麼做我們從 applet 中播放聲音文件所需的基本步驟開始講述然後慢慢轉到講述 Java 應用程序中的支持
  在 applet 中播放聲音文件非常簡單一般需要以下步驟
  
  創建一個 AudioClip 對象
  裝入 au 聲音文件到 AudioClip 對象
  一次播放或者不停循環播放聲音
  停止播放
  下面是相應的代碼
  
  import javaapplet*;
  
  AudioClip ac = getAudioClip(getCodeBase() soundFile);
  acplay(); //play once
  acstop(); //stop playing
  acloop(); //play continuously
  
  看起來在 Java 應用程序中用相同的代碼來播放聲音文件似乎也是可行的但很不幸如果你真這樣做編譯器就會報錯為什麼呢?因為 AudioClip 對象及其方法 getAudioClip() 屬於javaapplet 包 而不屬於應用程序包的可喜的是我們還可以自己做些改變來實現聲音播放功能
  
  解決這個問題的竅門是利用由 Sun 及 其JDK 提供的某些 undocumented 的特征先看看 Sun JDK 中的文件 classeszip (使用任何解壓工具即可)發現其中不僅包含標准的 Java 包如 javaapplet 而且還存在包 sunaudio (在 sun/audio 的目錄下)
  
  包 sunaudio 中包含了用於播放聲音文件所需的所有東西!下面是示例代碼
  
  import sunaudio*; //import the sunaudio package
  import javaio*;
  
  //** add this into your application code as appropriate
  
  // Open an input stream to the audio file
  InputStream in = new FileInputStream(Filename);
  
  // Create an AudioStream object from the input stream
  AudioStream as = new AudioStream(in);
  
  // Use the static class member player from class AudioPlayer to play
  // clip
  AudioPlayerplayerstart(as);
  
  // Similarly to stop the audio
  AudioPlayerplayerstop(as);
  
  
  如果要用一個 URL 做為聲音流的源(source)則用下面的代碼所示替換輸入流來創建聲音流
  
  AudioStream as = new AudioStream (urlopenStream());
  
  如果需要持續播放聲音文件則要稍稍復雜一點
  
  // Create audio stream as discussed previously
  
  // Create AudioData source
  AudioData data = asgetData();
  
  // Create ContinuousAudioDataStream
  ContinuousAudioDataStream cas = new ContinuousAudioDataStream (data);
  
  // Play audio
  AudioPlayerplayerplay (cas);
  
  // Similarly to stop the audio
  AudioPlayerplayerstop (cas);
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19398.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.