java - 有没有办法在 Java 中获取所有 MIDI 设备的列表?
问题描述
我正在尝试用 Java 获取所有 MIDI 设备,这比我想象的要难......
我尝试了for each()
循环,但它不起作用,因为我不知道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) {
}
//close
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();
}
}
}
}
当然,这会为您提供调用该函数时存在的设备的静态列表——如果有人插入/拔出设备,则该列表将过期。
推荐阅读
- logstash-configuration - 根据日志文件的路径创建动态索引名称
- active-directory - SSSD 与 Kerberos 身份验证说明
- python - 如何在 django 中获取外键字段值?
- java - 如何在 Android Studio 中更改 ArrayList 元素的颜色
- javascript - 错误:TypeError:无法读取 AthenaExpress.query 中未定义的属性“流”
- excel - Excel VBA 添加日期小于或等于动态今天日期的数据验证
- autodesk - Autodesk Forge [GET] /activities/:id 始终返回 null
- ios - Moya 不会只显示响应正文
- docker - 我如何知道 `docker pull` 将获取多少数据?
- math - 如何获得用户给出的较少数量的输入?