[英]Is there a way to get a list of all MIDI devices in Java?
我試圖在 Java 中獲取所有 MIDI 設備,女巫比我想象的要難......
我嘗試了foreach()
循環,但它不起作用,因為我不知道我在什么ArrayList
使用此方法。
這是我的代碼:
package com.example.cmmp.midi;
import javax.sound.midi.*;
import javax.sound.midi.spi.MidiDeviceProvider;
import java.util.*;
@SuppressWarnings("unchecked")
public class MidiDeviceReceiver {
private static MidiSystem MidiDevice;
public static Sequencer getSequencer() throws MidiUnavailableException {
return MidiSystem.getSequencer ();
}
public static List<MidiDevice> getMidiDevices(){
javax.sound.midi.MidiDeviceReceiver midiDeviceReceiver = new javax.sound.midi.MidiDeviceReceiver () {
public MidiSystem MidiDevice;
public void send(MidiMessage message, long timeStamp) {
}
public void close() {
}
public MidiDevice getMidiDevice() {
MidiDeviceProvider midi = new MidiDeviceProvider () {
public MidiDevice.Info[] getDeviceInfo() {
return new MidiDevice.Info[0];
}
public MidiDevice getDevice(MidiDevice.Info info) {
try {
MidiDevice = (MidiSystem) MidiSystem.getMidiDevice ( info );
} catch (MidiUnavailableException e) {
e.printStackTrace ();
}
return (javax.sound.midi.MidiDevice) MidiDevice;
}
};
return (javax.sound.midi.MidiDevice) MidiDevice;
}
};
return (List<javax.sound.midi.MidiDevice>) MidiDevice;
}
}
任何幫助,將不勝感激。
您可以像這樣枚舉所有 MidiDevices:
package org.example2;
import javax.sound.midi.MidiDevice;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.MidiUnavailableException;
public class App2 {
public static void main(String[] args) throws MidiUnavailableException {
MidiDevice.Info[] devices = MidiSystem.getMidiDeviceInfo();
for (MidiDevice.Info info : devices) {
try {
MidiDevice device = MidiSystem.getMidiDevice(info);
System.out.println(info.getDescription() + " " + device.toString());
} catch (MidiUnavailableException e) {
System.out.println("Device " + info.getDescription() + " is not available");
e.printStackTrace();
}
}
}
}
當然,這會為您提供調用該函數時存在的設備的靜態列表 - 如果有人插入/拔出設備,則該列表將過時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.