在 applet 中播放聲音文件非常簡單,一般需要以下步驟:
站在用戶的角度思考問題,與客戶深入溝通,找到海興網站設計與海興網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網站制作、成都網站設計、企業(yè)官網、英文網站、手機端網站、網站推廣、主機域名、虛擬空間、企業(yè)郵箱。業(yè)務覆蓋海興地區(qū)。
創(chuàng)建一個 AudioClip 對象
裝入 .au 聲音文件到 AudioClip 對象
一次播放或者不停循環(huán)播放聲音
停止播放
下面是相應的代碼:import java.applet.*;AudioClip ac = getAudioClip(getCodeBase(), soundFile);
ac.play(); //play once
ac.stop(); //stop playing
解決這個問題的竅門是利用由 Sun 及 其JDK 提供的某些 undocumented 的特征。先看看 Sun JDK 中的文件 classes.zip (使用任何解壓工具即可),發(fā)現其中不僅包含標準的 Java 包如 java.applet 而且還存在包 sun.audio. (在 sun/audio 的目錄下.)
包 sun.audio 中包含了用于播放聲音文件所需的所有東西!下面是示例代碼:import sun.audio.*; //import the sun.audio package
import java.io.*;//** 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.
AudioPlayer.player.start(as);// Similarly, to stop the audio.
AudioPlayer.player.stop(as);如果要用一個 URL 做為聲音流的源(source),則用下面的代碼所示替換輸入流來創(chuàng)建聲音流:AudioStream as = new AudioStream (url.openStream());如果需要持續(xù)播放聲音文件,則要稍稍復雜一點:// Create audio stream as discussed previously.
// Create AudioData source.
AudioData data = as.getData();// Create ContinuousAudioDataStream.
ContinuousAudioDataStream cas = new ContinuousAudioDataStream (data);// Play audio.
playCycle(String s)這個是單曲重復播放;play(String s)這個是單曲播放。
/******* part one start *******/
//獲取媒體文件流
AudioInputStream ais = AudioSystem.getAudioInputStream(new File(fileurl));
//獲取文件格式
AudioFormat aif = ais.getFormat();
//這個類不知道是什么,沒用過,在這里應該是對媒體流處理的一個類
SourceDataLine sdl = null;
//這個貌似通過媒體格式,獲取媒體文件的信息
DataLine.Info info = new DataLine.Info(SourceDataLine.class,aif);
//通過媒體文件的信息初始化處理媒體文件的類
sdl = (SourceDataLine)AudioSystem.getLine(info);
//媒體工具類 打開媒體流
sdl.open(aif);
//媒體工具(播放器)開啟
sdl.start();
/******* part one end *******/
/******* part two start ********/
int nByte = 0;
byte[] buffer = new byte[128];
//媒體工具類(播放器類)對媒體流進行寫入處理,此時應該會有音樂響起吧
while(nByte != -1){
nByte = ais.read(buffer,0,128);
if(nByte = 0){
int oByte = sdl.write(buffer, 0, nByte);
//System.out.println(oByte);
}
}
//媒體流結束,并關閉這個媒體工具類
sdl.stop();
/******* part two end********/
import?java.awt.*;
import?java.applet.*;
import?java.awt.Graphics;
public?class?dragon?extends?Applet
{
Image?dg;
AudioClip?sound;
public?void?init(){
dg=getImage(getDocumentBase(),"dragon.gif");
sound=getAudioClip(getDocumentBase(),"op.wav");
}
public?void?paint(Graphics?g){
g.drawImage(dg,50,50,this);
}
public?void?start(){
sound.loop();
}
public?void?stop(){
sound.stop();
}
};
帶聲音的java程序最好嵌入到applet(applet又嵌入到網頁中)中,這是我編寫的程序,其中還有圖片顯示,和恐龍的聲音。效果如圖(動態(tài)的)
可以實現,參考如下代碼:
package?com.lolo;
import?java.io.File;
import?java.io.IOException;
import?javax.sound.sampled.AudioSystem;
import?javax.sound.sampled.LineUnavailableException;
import?javax.sound.sampled.UnsupportedAudioFileException;
import?javax.sound.sampled.AudioInputStream;
import?javax.sound.sampled.AudioFormat;
import?javax.sound.sampled.SourceDataLine;
import?javax.sound.sampled.DataLine;
public?class?PlayMusic?{
//????程序退出時執(zhí)行的代碼
public?void?doShutDownWork()?{
Runtime.getRuntime().addShutdownHook(new?Thread()?{
public?void?run()?{
try?{
//Toolkit.getDefaultToolkit().beep();
Play();
Play();
}?catch?(Exception?ex)?{
}
}
});
}
//播放音頻文件
public?void?Play(){
String?fileurl?=?"file/tada.wav";
try{
AudioInputStream?ais?=?AudioSystem.getAudioInputStream(new?File(fileurl));
AudioFormat?aif?=?ais.getFormat();
SourceDataLine?sdl?=?null;
DataLine.Info?info?=?new?DataLine.Info(SourceDataLine.class,aif);
sdl?=?(SourceDataLine)AudioSystem.getLine(info);
sdl.open(aif);
sdl.start();
//play
int?nByte?=?0;
byte[]?buffer?=?new?byte[128];
while(nByte?!=?-1){
nByte?=?ais.read(buffer,0,128);
if(nByte?=?0){
int?oByte?=?sdl.write(buffer,?0,?nByte);
//System.out.println(oByte);
}
}
sdl.stop();
}catch(UnsupportedAudioFileException?e){
e.printStackTrace();
}?catch?(IOException?e)?{
//?TODO?自動產生?catch?區(qū)塊
e.printStackTrace();
}?catch?(LineUnavailableException?e)?{
//?TODO?自動產生?catch?區(qū)塊
e.printStackTrace();
}
}
}
這個程序只要寫對了音樂文件的URL地址,例如:new URL("file:/C:/tmp/1/Windows Ding.wav");
就可以播放音樂,除了可以播放.wav格式的音樂,還可以播放.au格式的音樂。
另外,如果你不希望音樂循環(huán)播放,你可以去掉audio1.loop();這一語句。
import java.applet.AudioClip;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JFrame;
public class D extends JFrame{
D(){
setSize(200,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
URL codebase=null;
try {
codebase = new URL("file:/C:/tmp/1/Windows Ding.wav");
} catch (MalformedURLException e) {
e.printStackTrace();
}
AudioClip audio1=Applet.newAudioClip(codebase);
audio1.loop();
}
public static void main(String[] args) {
new D();
}
}
網站名稱:java播放報警音頻代碼 java播放報警音頻代碼是多少
文章出自:http://jinyejixie.com/article16/hpdgdg.html
成都網站建設公司_創(chuàng)新互聯,為您提供ChatGPT、做網站、企業(yè)網站制作、域名注冊、商城網站、網站改版
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯