可以使用Applet組件,主要的代碼如下(缺點是能播放WAv格式的,還有其它格式,不過mp3不行,):
創新互聯建站是一家集網站設計、網站建設、網站頁面設計、網站優化SEO優化為一體的專業網站設計公司,已為成都等多地近百家企業提供網站建設服務。追求良好的瀏覽體驗,以探求精品塑造與理念升華,設計最適合用戶的網站頁面。 合作只是第一步,服務才是根本,我們始終堅持講誠信,負責任的原則,為您進行細心、貼心、認真的服務,與眾多客戶在蓬勃發展的市場環境中,互促共生。
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.FlowLayout;
import java.awt.event.*;
import java.io.File;
import java.net.MalformedURLException;
//播放音樂按鈕
private JButton getPlayButton(){
if(playButton==null){
playButton=new JButton("播放");
playButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(filePath.getText()!=null){
try{
if(audioClip!=null){
audioClip.stop();
}
audioClip=Applet.newAudioClip(new File(filePath.getText()).toURI().toURL());
audioClip.play();//播放
}//只需要添加一個File對象傳入文件路徑
catch(MalformedURLException ee){ee.printStackTrace();}
}
}
});
}
return playButton;
}
(小應用程序)
采用Java創建的基于HTML的程序。瀏覽器將其暫時下載到用戶的硬盤上,并在Web頁打開時在本地運行。
可通過因特網下載并在接收計算機上運行的一小段程序。小應用程序通常用Java語言編寫并運行在瀏覽器軟件中,applet典型用于為萬維網網頁頁面定制或添加交互格式元素。Applet可以翻譯為小應用程序,可通過因特網下載并在接收計算機上運行的一小段程序。,Java Applet就是用Java語言編寫的這樣的一些小應用程序,它們可以直接嵌入到網頁中,并能夠產生特殊的效果。包含Applet的網頁被稱為Java- powered頁,可以稱其為Java支持的網頁。
當用戶訪問這樣的網頁時, Applet被下載到用戶的計算機上執行,但前提是用戶使用的是支持Java的網絡l瀏覽器。由于Applet是在用戶的計算機上執行的,因此它的執行速度不受網絡帶寬或者Modem存取速度的限制。用戶可以更好地欣賞網頁上Applet產生的多媒體效果。
在Java Applet中,可以實現圖形繪制,字體和顏色控制,動畫和聲音的插入,人機交互及網絡交流等功能。 Applet還提供了名為抽象窗口工具箱(Abstract Window Toolkit, AWT)的窗口環境開發工具。 AWT利用用戶計算機的GUI元素,可以建立標準的圖形用戶界面,如窗口、按鈕、滾動條等等。目前,在網絡上有非常多的Applet范例來生動地展現這些功能,讀者可以去調閱相應的網頁以觀看它們的效果。
Applet的工作原理.
含有Applet的網頁的HTML文件代碼中部帶有applet 和/applet這樣一對標記,當支持Java的網絡瀏覽器遇到這對標記時,就將下載相應的小應用程序代碼并在本地計算機上執行該Applet。
Java Applet 是用Java 語言編寫的一些小應用程序,這些程序是直接嵌入到頁面中,由支持Java的瀏覽器(IE 或 Nescape)解釋執行能夠產生特殊效果的程序。它可以大大提高Web頁面的交互能力和動態執行能力。包含Applet的網頁被稱為Java- powered頁,可以稱其為Java支持的網頁。
當用戶訪問這樣的網頁時,Applet被下載到用戶的計算機上執行,但前提是用戶使用的是支持Java的網絡瀏覽器。由于Applet是在用戶的計算機上執行的,所以它的執行速度不受網絡帶寬或者Modem存取速度的限制,用戶可以更好地欣賞網頁上Applet產生的多媒體效果。
Applet 小應用程序的實現主要依靠java.applet 包中的Applet類。與一般的應用程序不同,Applet應用程序必須嵌入在HTML頁面中,才能得到解釋執行;同時Applet可以從Web頁面中獲得參數,并和Web頁面進行交互。
含有Applet的網頁的HTML文件代碼中必須帶有applet和/applet這樣一對標記,當支持Java的網絡瀏覽器遇到這對標記時,就將下載相應的小程序代碼并在本地計算機上執行該Applet小程序。
Applet是一種Java的小程序,它通過使用該Applet的HTML文件,由支持Java的網頁瀏覽器下載運行。也可以通過java開發工具的 appletviewer來運行。Applet 程序離不開使用它的HTML文件。這個HTML文件中關于Applet的信息至少應包含以下三點:
1)字節碼文件名(編譯后的Java文件,以.class為后綴)
2)字節碼文件的地址
3)在網頁上顯示Applet的方式。
一個HTML文件增加Applet有關的內容只是使網頁更加富有生氣,如添加聲音、動畫等這些吸引人的特征,它并不會改變HTML文件中與Applet無關的元素。
(一) Applet程序開發步驟
Applet程序開發主要步驟如下:
1)選用EDIT或Windows Notepad等工具作為編輯器建立Java Applet源程序。
2)把Applet的源程序轉換為字節碼文件。
3)編制使用class 的HTML文件。在HTML文件內放入必要的APPLET語句。
下面舉一個最簡單的HelloWorld 例子來說明Applet程序的開發過程:
(1) 編輯Applet 的java源文件
創建文件夾C:\ghq,在該文件夾下建立 HelloWorld.java
文件的源代碼如下:
import java.awt.*;
import java.applet.*;
public class HelloWorld extends Applet //繼承Appelet類,這是Appelet Java程序的特點
{
public void paint(Graphics g )
{
g.drawString("Hello World!",5,35);
}
}
保存上述程序在C:\ghq\HelloWorld.java文件里。
(2)編譯Applet
編譯HelloWorld.java源文件可使用如下JDK命令:
C:\ghq\javac HelloWorld.javaEnter
注意:如果編寫的源程序違反了Java編程語言的語法規則,Java編譯器將在屏幕上顯示語法錯誤提示信息。源文件中必須不含任何語法錯誤,Java編譯器才能成功地把源程序轉換為appletviewer和瀏覽器能夠執行的字節碼程序。
成功地編譯Java applet之后生成響應的字節碼文件HelloWorld.class的文件。用資源管理器或DIR命令列出目錄列表,將會發現目錄C:\ghq中多了一個名為HelloWorld.class的文件。
(3)創建HTML文件
在運行創建的HelloWorld.class 之前,還需創建一個HTML文件,appletviewer或瀏覽器將通過該文件訪問創建的Applet。為運行HelloWorld.class, 需要創建包含如下HTML語句的名為HelloWorld.html的文件。
HTML
TITLEHelloWorld! Applet/TITLE
APPLET
CODE="JavaWorld.class"
WIDTH=200
HEIGHT=100
/APPLET
/HTML
本例中,APPLET語句指明該Applet字節碼類文件名和以像素為單位的窗口的尺寸。雖然這里HTML文件使用的文件名為 HelloWorld.HTML,它對應于HelloWorld.java的名字,但這種對應關系不是必須的,可以用其他的任何名字(比如說 Ghq.HTML)命名該HTML文件。但是使文件名保持一種對應關系可給文件的管理帶來方便。
(4)執行 HelloWorld.html
如果用appletviewer運行HelloWorld.html,需輸入如下的命令行:
C:\ghq\appletviewer JavaWorld.htmlENTER
可以看出,該命令啟動了appletviewer并指明了HTML文件,該HTML文件中包含對應于HelloWorld 的APPLET語句。
如果用瀏覽器運行HelloWorld Applet,需在瀏覽器的地址欄中輸入HTML文件URL地址。
至此,一個Applet程序的開發運行整個過程結束了(包括java源文件、編譯的class文件、html文件以及用appletviewer或用瀏覽器運行)。
(二) Applet類
Applet類是所有Applet應用的基類,所有的Java小應用程序都必須繼承該類。如下所示。
import java. applet.*;
public class OurApplet extends Applet
{
......
......
}
Applet類的構造函數只有一種,即:public Applet()
Applet實現了很多基本的方法,下面列出了Applet類中常用方法和用途。
public final void setStub(AppletStub stub)
//設置Applet的stub.stub是Java和C之間轉換參數并返回值的代碼位,它是由系統自動設定的。
public boolean isActive();// 判斷一個Applet是否處于活動狀態。
public URL getDocumentBase();// 檢索表示該Applet運行的文件目錄的對象。
public URL getCodeBase();// 獲取該Applet 代碼的URL地址。
public String getParameter(String name);// 獲取該Applet 由name指定參數的值。
public AppletContext getAppletContext();// 返回瀏覽器或小應用程序觀察器。
public void resize(int width,int height);// 調整Applet運行的窗口尺寸。
public void resize(Dimension d);// 調整Applet運行的窗口尺寸。
public void showStatus(String msg);// 在瀏覽器的狀態條中顯示指定的信息。
public Image getImage(URL url); // 按url指定的地址裝入圖象。
public Image getImage(URL url,String name);// 按url指定的地址和文件名加載圖像。
public AudioClip getAudioClip(URL url);// 按url指定的地址獲取聲音文件。
public AudioClip getAudioClip(URL url, String name);// 按url指定的地址和文件名獲取聲音。
public String getAppletInfo();// 返回Applet應用有關的作者、版本和版權方面的信息;
public String[][] getParameterInfo();
// 返回描述Applet參數的字符串數組,該數組通常包含三個字符串: 參數名、該參數所需值的類型和該參數的說明。
public void play(URL url);// 加載并播放一個url指定的音頻剪輯。
public void destroy();//撤消Applet及其所占用的資源。若該Applet是活動的,則先終止該Applet的運行。
(1) Applet運行狀態控制基本方法
Applet類中的四種基本方法用來控制其運行狀態:init()、start()、stop()、destroy()
init()方法
這個方法主要是為Applet的正常運行做一些初始化工作。當一個Applet被系統調用時,系統首先調用的就是該方法。通常可以在該方法中完成從網頁向Applet傳遞參數,添加用戶界面的基本組件等操作。
start()方法
系統在調用完init()方法之后,將自動調用start()方法。而且,每當用戶離開包含該Applet的主頁后又再返回時,系統又會再執行一遍 start()方法。這就意味著start()方法可以被多次執行,而不像init()方法。因此,可把只希望執行一遍的代碼放在init()方法中。可以在start()方法中開始一個線程,如繼續一個動畫、聲音等。
stop()方法
這個方法在用戶離開Applet所在頁面時執行,因此,它也是可以被多次執行的。它使你可以在用戶并不注意Applet的時候,停止一些耗用系統資源的工作以免影響系統的運行速度,且并不需要人為地去調用該方法。如果Applet中不包含動畫、聲音等程序,通常也不必實現該方法。
destroy()方法
與對象的finalize()方法不同,Java在瀏覽器關閉的時候才調用該方法。Applet是嵌在HTML文件中的,所以destroty()方法不關心何時Applet被關閉,它在瀏覽器關閉的時候自動執行。在destroy()方法中一般可以要求收回占用的非內存獨立資源。(如果在 Applet仍在運行時瀏覽器被關閉,系統將先執行stop()方法,再執行destroy()方法。
(2) Applet應用的有關參數說明
利用Applet來接收從HTML中傳遞過來的參數,下面對這些參數作一簡單說明:
* CODE標志
CODE標志指定Applet的類名;WIDTH和HEIGHT標志指定Applet窗口的像素尺寸。在APPLET語句里還可使用其他一些標志。
* CODEBASE 標志
CODEBASE標志指定Applet的URL地址。Applet的通用資源定位地址URL,它可以是絕對地址,如。也可以是相對于當前HTML所在目錄的相對地址,如/AppletPath/Name。如果HTML文件不指定 CODEBASE 標志,瀏覽器將使用和HTML文件相同的URL。
* ALT 標志
雖然Java在WWW上很受歡迎,但并非所有瀏覽器都對其提供支持。如果某瀏覽器無法運行Java Applet,那么它在遇到APPLET語句時將顯示ALT標志指定的文本信息。
* ALIGN 標志
ALIGN標志可用來控制把Applet窗口顯示在HTML文檔窗口的什么位置。與HTMLLMG語句一樣,ALIGN標志指定的值可以是TOP、MIDDLE或BOTTOM。
* VSPACE與HSPACE 標志
VSPACE和HSPACE標志指定瀏覽器顯示在Applet窗口周圍的水平和豎直空白條的尺寸,單位為像素。如下例使用該標志在Applet窗口之上和之下各留出50像素的空白,在其左和其右各留出25像素的空白:
* NAME 標志
NAME標志把指定的名字賦予Applet的當前實例。當瀏覽器同時運行兩個或多個Applet時,各Applet可通過名字相互引用或交換信息。如果忽略NAME標志,Applet的名字將對應于其類名。
* PARAM 標志
通用性是程序設計所追求的目標之一。使用戶或者程序員能很方便地使用同一個Applet完成不同的任務是通用性的具體表現。從HTML文件獲取信息是提高Applet通用性的一條有效途徑。
假設編制了一個把某公司的名字在屏幕上卷動的Applet。為了使該Applet更加通用,則可以使該Applet從HTML文件獲取需要卷動的文本信息。這樣,若想顯示另一個公司的名字,用不著修改Java Applet本身,只需修改HTML文件即可。
PARAM 標志可用來在HTML文件里指定參數,格式如下所示:
PARAM Name="name" Value="Liter"
Java Applet可調用getParameter方法獲取HTML文件里設置的參數值。
上面這個例子就是一個簡單主頁的HTML文件代碼。代碼第五行中的P,是為了確保Applet出現在新的一行,若沒有它, Applet將會緊接著上一行的最后一個單詞出現。代碼第六、七兩行是關于Applet的一些參數。其中第六行是必需的Applet參數,定義了編譯后的包含Applet字節碼的文件名,后綴通常為“.class”;和以象素為單位的Applet的初始寬度與高度。第七行則是附加的Applet參數,它由一個分離的
標記來指定其后的名稱和值,在這里是img的值為“example.gif’,它代表了一個圖形文件名。
Applet的下載與圖形文件一樣需要一定的時間,若干秒后它才能在屏幕上顯示出來。等待的時間則取決于Applet的大小和用戶的網絡連接的速度。一旦下載以后,它便和本地計算機上的程序以相同的速度運行了。
Applet在用戶的計算機上執行時,還可以下載其它的資源,如聲音文件、圖像文件或更多的Java代碼,有些Applet還允許用戶進行交互式操作。但這需要重復的鏈接與下載,因此速度很慢,這是一個亟待解決的問題,可以想到的一個好辦法是采用類似高速緩存的技術,將每次下載的文件都臨時保存在用戶的硬盤上,雖然第一次使用時花的時間比較多,但當再次使用時,只需直接從硬盤上讀取文件而無需再與Internet連接,便可以大大提高性能了。
從哪里得到Applet
自從Java日益流行之后,世界各地的愛好者們便不斷創造出各種各樣的Applet。這里列出了幾個較大的Applet收集站,讀者可以去逛一逛,看看這些Applet的效果如何,相信會使人流連忘返的。
這是Intemet上最負盛名的Applet收集站,它按照小應用程序的用途加以分類,并列出了它們的說明、功能和程序代碼,其規模和種類之多,令人嘆為觀止。
這個站點的特色是對它收集的小應用程序都加以評分,JARS是小應用程序評價服務(Java Applet Rating Services)的簡稱。許多Java開發者均以能獲得其好評為榮。
這個URL可真夠長的!這是Yahoo公司提供的小應用程序目錄,收集的數量雖然稍遜于Gamelan,但也很可觀了。
/java_applets/ BR這是網景公司提供的小應用程序演示網頁,同時也提供一些Java信息。
這是一個小應用程序的信息站點,提供了許多實用信息,讀者可以借助這里的數據庫,查詢自己感興趣的小應用程序的相關信 .
applet的超類是panel,
如果您認為本詞條還有待完善,需要補充新內容或修改錯誤內容,請 編輯詞條
貢獻者(共6名):
jlbstz2003、fuweimin911、明明我心521、mengduanhonglo、邪惡怖怖、lym13
本詞條在以下詞條中被提及:
java.applet、JRE、web2.0、www
“Applet”在英漢詞典中的解釋(來源:百度詞典):
applet
n.
1. 【電腦】程序類型(一小程序可附予其它程序一些功能,像Java就是一受歡迎用之以產生applet的語言)
關于本詞條的評論(共4條):查看評論
返回頁首
?2008 Baidu
您好,1 雙方之間的網絡連接
Java在這方面有其獨特的優勢,Java提供了豐富的網絡類庫的支持,可以輕松編寫多種類型的網絡通信程序。在我下面的例子中我就使用了TCP/IP協議,通過Java的Socket類進行編程。
2 音頻信號的采集和回放以及音頻數字信號的編碼與解碼
在解決這兩個問題的時候,在網上很幸運地通過一些文章的介紹,找到了Answer Machine 演示程序的源代碼(由of jsresources.org的Florian Bomers 和Matthias Pfisterer編寫,網址)。在這個程序代碼中,有幾個解決我們問題所需要的類,而且作者將這些類封裝的很好,我們基本不需要做什么改動,只需要屏蔽其中的調試信息的輸出就行了,更可貴的是它還封裝了幾種常見的音頻格式。其中的GSM格式(Global System for Mobile Telecommunications)就是我們下面例子中采用的壓縮格式,GSM格式可以將128kbps 的音頻數據流 (16bit通過8k Hz的音頻采樣) 壓縮為13kbps 的音頻數據流,非常適合語音信號的傳送,所以可謂是一石二鳥。
我分析過這幾個類的源代碼,不得不佩服它的作者,每個類的源代碼都很精煉,大家可以自己分析一下。好了下面就給大家講講這幾個類,并且將它們用到的Java Sound API中的類和函數等一并做個簡單介紹,讓大家對Java Sound API中常用的類也有個大致的了解。由于Java Sound API中的類比較多。限于篇幅無法對所有用到的類做詳盡的解釋,以下內容只是簡單提及了各個類的用途和使用規范,有關Java Sound API中類的具體介紹請大家訪問這里, 查找javax.sound.sampled的相關內容。
以下的提到幾個文件是從Answer Machine 演示程序的源代碼中提取出來的,由于是開放源代碼的程序,大家在使用的時候請注意相關的公共協議。
① AMAudioFormat類(封裝在AMAudioFormat.java文件中)
AMAudioFormat類封裝了CD、FM、TELEPHONE、GSM這四種質量的音頻格式的參數,使用起來也非常簡單,這樣我們在使用Java Sound API時就不用自己去寫那些復雜的代碼了,但為了明白Java Sound API的原理,我們需要對它的代碼做一下分析。它使用了Java Sound API中的AudioFormat這個類,這個類非常重要,在Java中對任何音頻數據的使用都要實現通過它指定所需要使用的音頻格式,AudioFormat類有一個嵌套的類AudioFormat.Encoding,實際上大部分對AudioFormat類的使用都是使用的這個嵌套的類。
AMAudioFormat類的重要方法:
名稱:getLineAudioFormat
調用格式:getLineAudioFormat(整型音頻格式代號)
返回值: 根據傳遞音頻格式代號生成的AudioFormat對象。
說道這里大家可能要問了,那么通過Java Sound API可以直接使用GSM格式嗎?答案是比較復雜,但同樣有解決的辦法,作者在這里使用了另外的開源程序的類庫-tritonus的GSM編碼解碼庫。大家需要在這里下載tritonous_share.jar和tritonus_gsm.jar兩個文件,并在AMAudioFormat類中引用,這樣就完成了GSM格式的設置。需要告訴大家的是在對AMAudioFormat.java這個類進行編譯后,我們的程序運行的時候就可以不需要tritonous_share.jar和tritonus_gsm.jar這兩個文件的支持了。
② AudioCapture類(封裝在AudioCapture.java文件中)
AudioCapture類封裝了從音頻硬件捕獲音頻數據并自動編碼為GSM音頻壓縮數據的過程,并且通過它的getAudioInputStream()方法提供給我們一個音頻數據輸入流,我們就可以直接將這個流發送到網絡中。
AudioCapture 類的重要方法:
名稱:getAudioInputStream
調用格式:getAudioInputStream()
返回值:AudioInputStream對象
AudioCapture 類使用了Java Sound API中的AudioInputStream、AudioFormat、AudioSystem這幾個類和TargetDataLine、LineListener接口。除了AudioFormat類我再簡單介紹一下其他的類:
AudioInputStream 類是帶有特殊音頻格式和長度的InputStream類,它有兩個構造方法,分別是AudioInputStream(InputStream stream, AudioFormat format,long length)和AudioInputStream(TargetData -Line line)。
TargetDataLine 接口是DataLine接口的一種,通過它就可以直接從音頻硬件獲取數據了,它有幾個常用的方法,分別是:open(AudioFormat format)、void open(AudioFormat format, int bufferSize)、int read(byte[] b, int off, int len)。
AudioSystem 類是Java標準音頻系統的入口點,在AudioSystem 類中使用他的getLine() 方法創建TargetDataLine對象。
LineListener接口用來對線路狀態改變的時間進行監聽,他的重要的方法是update(LineEvent event)方法。
③ AudioPlayStream類(封裝在AudioPlayStream.java文件中)
AudioPlayStream類與AudioCapture類剛好相反,它封裝了GSM壓縮音頻數據的解碼和音頻信號的回放過程,提供給我們一個音頻信號輸出流。AudioCapture類用到的Java Sound API中的類它也基本都用到了,只是它使用了SourceDataLine接口而不是TargetDataLine接口
④ Debug類(封裝在Debug.java文件中)
Debug類主要用來在調試時輸出訊息,代碼很少,后來我把其中輸出信息的語句都屏蔽了,對程序運行沒有影響。
為了方便使用以上的幾個類,我們需要對它們進行編譯和打包,編譯時需要設置相關的編譯環境,以下是我們需要用到的命令行
set CLASSPATH=%CLASSPATH%;.;tritonus_gsm.jar;tritonus_share.jar
javac am*.java amaudio*.java
jar cmf packagingmanifest.mf am.jar am*.class
amaudio*.class
說明一下,我將以上提到的Java源碼文件放在了am目錄下,編譯之后可以得到一個8k的am.jar文件,我們下一步所需要做的就是在我們的程序中引用這個包。
分享題目:java代碼生成聲音 javaparser 生成代碼
文章源于:http://vcdvsql.cn/article2/dopjpoc.html
成都網站建設公司_創新互聯,為您提供品牌網站制作、移動網站建設、服務器托管、定制開發、網站設計公司、用戶體驗
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯