#java #javax.sound.midi
Вопрос:
Я пытаюсь получить все MIDI-устройства на Java, что оказалось сложнее, чем я думал…
Я попробовал 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 Listlt;MidiDevicegt; 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 (Listlt;javax.sound.midi.MidiDevicegt;) MidiDevice; } }
Любая помощь будет признательна.
Ответ №1:
Вы можете перечислить все промежуточные устройства следующим образом:
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(); } } } }
Конечно, это дает вам статический список устройств, которые присутствовали при вызове функции-если кто-то подключит/отключит устройство, то список устареет.
Комментарии:
1. Спасибо за помощь!