|
|
1
7
MIDIs提供程序列表是从JDK underlaying类恢复的
com.sun.media.sound.JDK13Services
所以,这个类似乎将提供者列表保存在缓存中,在一段时间后将被重新加载。可以使用以下方法将此句点设置为自定义值
例如,要每秒刷新此缓存,可以在代码中添加以下行:
请注意,此解决方案使用了Sun propietary类,因此它不可能是100%可移植的。 |
|
|
2
3
由于我的工作PC上没有任何MIDI设备,或者是任何类型的Mac,我怀疑我是否能够正确地测试它,但是。。。
MidiSystem类似乎使用
如果运气好的话,你可以在应用程序开始时调用它一次,并将其设置为5秒或其他时间,它就会神奇地工作。然而,文档中也指出“这个方法只用于测试”,所以我不确定这个方法会有多有效。 希望这足以让你开始,同时我会继续四处寻找,看看是否能找到一个更干净的方法来做这件事。 |
|
|
3
0
我回答这是 Update list of Midi Devices in Java 同样,但对于来到这里的人来说,现在有一个库可以正确地支持这一点: https://github.com/DerekCook/CoreMidi4J 该库充当MIDI子系统的设备提供者,因此它基本上是一个插件,所有现有的代码都可以工作。 我不是作者,但它很好地满足了我的需要,而且它花了相当多的时间才找到,所以我把它贴在这里给其他遇到这个问题的人。 |
|
|
4
-1
这听起来像是一个操作系统特定的错误,但我可以想出一个绕过。 在java中,您可以向操作系统运行外部命令。(一个快速的谷歌,给了我这个例子 http://www.javafaq.nu/java-example-code-186.html 它看起来很好,给你的想法)。 在检查新设备时,您可以发送一个外部命令来运行一个简单的java程序,该程序使用MidiSystem.getMidiDeviceInfo文件(),并将结果输出到文本文件,或者可以从BufferedReader对象获取输出。 还要记住,用于查询midi设备的外部程序不必用Java编写,以防Java给您带来更多问题。或者,您可以查询操作系统中已连接的设备,并使用grep过滤结果。
|