2014-06-10 75 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(); 

来获取默认输入。

相关问题