2014-06-10 114 views
0

我正在寫一個Java程序。這將是一場比賽,我還不確定細節,但它會涉及到聲音。我想知道是否有方法在Java中找到默認系統音頻輸出設備。我知道如何根據規格查找設備,但我想知道是否有方法訪問用戶默認設置的輸出,因爲它們的規格並不重要,但我不希望他們必須選擇輸出,如果我能避免它,我不知道什麼設備工作或他們想要什麼。如果我有權訪問默認音頻,我可以繞過整個過程。我發現了另一個問題,在堆棧溢出中提出這樣的問題,但他們不需要一行代碼,只需訪問計算機發出的任何聲音。無論如何,它沒有任何好的答案。我還沒有發現任何與此主題相關的其他內容。如何獲取默認音頻輸出

EDT:我找到了一個可能的解決方案,並將其公佈在以下。但是,它使用MIDI音頻代替示例音頻的 ,並且如果可能的話我寧願使用採樣音頻的解決方案。

+0

看看[訪問音頻系統資源(http://docs.oracle.com/javase/tutorial/sound/accessing.html)及相關線索小號 – MadProgrammer

回答

0

我找到了答案。我之前沒有找到它,因爲它距離訪問音頻系統資源路徑非常近。它在涉及到獲取線條的所有其他事情之後就出現下面是一個摘錄:

「獲取缺省設備

使用Java聲音API通過獲得其需要的器件,它可以由一個或多個定序器,合成器,輸入端口的開始的典型MIDI應用程序,或輸出端口

有一個默認合成器設備,默認定序器設備,默認發送設備和默認接收設備。後兩個設備通常分別代表MIDI輸入和輸出端口,如果有的話可以在系統上使用(這裏很容易混淆方向性,考慮端口與軟件相關的傳輸或接收與連接到物理端口的任何外部物理設備無關。 MIDI輸入端口將數據從外部設備傳輸到Java Sound API接收器,同樣,MIDI輸出端口接收來自軟件對象的數據並將數據傳輸到外部設備。)

一個簡單的應用程序可能只是使用而不是探索所有已安裝的設備。該MidiSystem類包括用於檢索默認資源下列方法:

static Sequencer getSequencer() 
static Synthesizer getSynthesizer() 
static Receiver getReceiver() 
static Transmitter getTransmitter() 

這些方法的前兩個獲取系統的默認排序和合成的資源,這要麼代表的物理設備或在軟件中完全實現。 getReceiver方法獲得一個Receiver對象,該對象將發送給它的MIDI消息中繼到默認的接收設備。同樣,getTransmitter方法獲得發射機對象,可以發送MIDI信息一些接收器代表默認傳輸設備的。」

所以基本上你會用

MidiSystem.getTransmitter(); 

獲取默認的輸出和

MidiSystem.getReceiver(); 

來獲取默認輸入。

相關問題