簡體   English   中英

有沒有辦法在 Java 中獲取所有 MIDI 設備的列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM