@Override public void onPortSelected(final MidiPortWrapper wrapper) { close(); final MidiDeviceInfo info = wrapper.getDeviceInfo(); if (info != null) { mMidiManager.openDevice(info, new MidiManager.OnDeviceOpenedListener() { @Override public void onDeviceOpened(MidiDevice device) { if (device == null) { Log.e(MidiConstants.TAG, "could not open " + info); } else { mOpenDevice = device; mInputPort = mOpenDevice.openInputPort( wrapper.getPortIndex()); if (mInputPort == null) { Log.e(MidiConstants.TAG, "could not open input port on " + info); } } } }, null); // Don't run the callback on the UI thread because openInputPort might take a while. } }
/** * @return a device that matches the manufacturer and product or null */ public static MidiDeviceInfo findDevice(MidiManager midiManager, String manufacturer, String product) { for (MidiDeviceInfo info : midiManager.getDevices()) { String deviceManufacturer = info.getProperties() .getString(MidiDeviceInfo.PROPERTY_MANUFACTURER); if ((manufacturer != null) && manufacturer.equals(deviceManufacturer)) { String deviceProduct = info.getProperties() .getString(MidiDeviceInfo.PROPERTY_PRODUCT); if ((product != null) && product.equals(deviceProduct)) { return info; } } } return null; }
private void findMidiDevice() { MidiDeviceInfo[] infos = midiManager.getDevices(); for(MidiDeviceInfo info : infos) { String name = info.getProperties().getString(MidiDeviceInfo.PROPERTY_NAME); logger.log("Found MIDI device named " + name); if(TEENSY_MIDI_NAME.equals(name)) { logger.log("^^^ using this device ^^^"); isConnecting = true; midiManager.openDevice(info, new MidiManager.OnDeviceOpenedListener() { @Override public void onDeviceOpened(MidiDevice device) { if (device == null) { logger.log("Error, unable to open MIDI device"); } else { logger.log("Opened MIDI device successfully!"); midiDevice = device; } isConnecting = false; } }, null); break; } } }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_BLUETOOTH_SCAN && resultCode == RESULT_OK) { final BluetoothDevice fBluetoothDevice = (BluetoothDevice) data .getParcelableExtra("device"); if (fBluetoothDevice != null) { Log.i(TAG, "Bluetooth device name = " + fBluetoothDevice.getName() + ", address = " + fBluetoothDevice.getAddress()); mMidiManager.openBluetoothDevice(fBluetoothDevice, new MidiManager.OnDeviceOpenedListener() { @Override public void onDeviceOpened(MidiDevice device) { onBluetoothDeviceOpen(fBluetoothDevice, device); } }, null); } } }
public MidiReceiver(Context context, CloseableReceiver listener) { this.listener = listener; MidiManager midiManager = (MidiManager) context.getSystemService(Context.MIDI_SERVICE); stream(midiManager.getDevices()) .filter(device -> device.getOutputPortCount() > 0).findFirst() .ifPresentOrElse(device -> openDevice(midiManager, device), () -> registerDeviceAddedCallback(midiManager)); }
private void registerDeviceAddedCallback(final MidiManager midiManager) { midiManager.registerDeviceCallback(new MidiManager.DeviceCallback() { @Override public void onDeviceAdded(MidiDeviceInfo device) { if (device.getOutputPortCount() > 0) { midiManager.unregisterDeviceCallback(this); openDevice(midiManager, device); } } }, null); }
@Override public void onPortSelected(final MidiPortWrapper wrapper) { Log.i(MidiConstants.TAG, "onPortSelected: " + wrapper); close(); final MidiDeviceInfo info = wrapper.getDeviceInfo(); if (info != null) { mMidiManager.openDevice(info, new MidiManager.OnDeviceOpenedListener() { @Override public void onDeviceOpened(MidiDevice device) { if (device == null) { Log.e(MidiConstants.TAG, "could not open " + info); } else { mOpenDevice = device; mOutputPort = device.openOutputPort(wrapper.getPortIndex()); if (mOutputPort == null) { Log.e(MidiConstants.TAG, "could not open output port for " + info); return; } mOutputPort.connect(mDispatcher); } } }, null); // Don't run the callback on the UI thread because openOutputPort might take a while. } }
/** * @param midiManager * @param activity * @param spinnerId * @param type */ public MidiOutputPortConnectionSelector(MidiManager midiManager, Activity activity, int spinnerId, MidiDeviceInfo destinationDeviceInfo, int destinationPortIndex) { super(midiManager, activity, spinnerId, MidiDeviceInfo.PortInfo.TYPE_OUTPUT); mDestinationDeviceInfo = destinationDeviceInfo; mDestinationPortIndex = destinationPortIndex; }
/** * Open a source device and connect its output port to the * destinationInputPort. * * @param sourceDeviceInfo * @param sourcePortIndex * @param destinationInputPort */ private void connectToDevicePort(final MidiDeviceInfo sourceDeviceInfo, final int sourcePortIndex, final MidiInputPort destinationInputPort, final OnPortsConnectedListener listener, final Handler handler) { mMidiManager.openDevice(sourceDeviceInfo, new MidiManager.OnDeviceOpenedListener() { @Override public void onDeviceOpened(MidiDevice device) { if (device == null) { Log.e(MidiConstants.TAG, "could not open " + sourceDeviceInfo); safeClose(); if (listener != null) { listener.onPortsConnected(null); } } else { Log.i(MidiConstants.TAG, "connectToDevicePort opened " + sourceDeviceInfo); // Device was opened so connect the ports. mSourceDevice = device; mConnection = device.connectPorts( destinationInputPort, sourcePortIndex); if (mConnection == null) { Log.e(MidiConstants.TAG, "could not connect to " + sourceDeviceInfo); safeClose(); } if (listener != null) { listener.onPortsConnected(mConnection); } } } }, handler); }
private void setupMidi() { // Setup MIDI mMidiManager = (MidiManager) getSystemService(MIDI_SERVICE); MidiDeviceInfo synthInfo = MidiTools.findDevice(mMidiManager, "AndroidTest", "SynthExample"); int portIndex = 0; mPortSelector = new MidiOutputPortConnectionSelector(mMidiManager, this, R.id.spinner_synth_sender, synthInfo, portIndex); mPortSelector.setConnectedListener(new MyPortsConnectedListener()); }
public static boolean checkUsbMidi(Context context) { MidiManager midiManager = (MidiManager) context.getSystemService(Context.MIDI_SERVICE); if (midiManager != null) { final MidiDeviceInfo[] infos = midiManager.getDevices(); if (infos.length > 0) { return true; } else { return false; } } else { return false; } }
@Override public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { System.out.println(i); m.openDevice(infos[midiDevice], new MidiManager.OnDeviceOpenedListener() { @Override public void onDeviceOpened(MidiDevice device) { if (device == null) { Toast.makeText(getApplicationContext(), "Could not open device!", Toast.LENGTH_LONG).show(); } else { inputPort = device.openInputPort(0); } } }, new Handler(Looper.getMainLooper())); }
MidiTest(Context context) { super(context); inputRepetitions = getIntPreference(context, R.string.preference_midi_in_reps, 100); outputRepetitions = getIntPreference(context, R.string.preference_midi_out_reps, 10); midiManager = (MidiManager) context.getSystemService(Context.MIDI_SERVICE); findMidiDevice(); }
private void openDevice(final MidiDeviceInfo info) { mManager.openDevice(info, new MidiManager.OnDeviceOpenedListener() { @Override public void onDeviceOpened(MidiDevice device) { MidiManagerAndroid.this.onDeviceOpened(device, info); } }, mHandler); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mLog = (TextView) findViewById(R.id.log); mScroller = (ScrollView) findViewById(R.id.scroll); // Setup MIDI mMidiManager = (MidiManager) getSystemService(MIDI_SERVICE); // Receiver that prints the messages. mLoggingReceiver = new LoggingReceiver(this); // Receivers that parses raw data into complete messages. mConnectFramer = new MidiFramer(mLoggingReceiver); // Setup a menu to select an input source. mLogSenderSelector = new MidiOutputPortSelector(mMidiManager, this, R.id.spinner_senders) { @Override public void onPortSelected(final MidiPortWrapper wrapper) { super.onPortSelected(wrapper); if (wrapper != null) { log(MidiPrinter.formatDeviceInfo(wrapper.getDeviceInfo())); } } }; mDirectReceiver = new MyDirectReceiver(); mLogSenderSelector.getSender().connect(mDirectReceiver); // Tell the virtual device to log its messages here.. MidiScope.setScopeLogger(this); }
private void setupMidi() { // Setup MIDI mMidiManager = (MidiManager) getSystemService(MIDI_SERVICE); MidiDeviceInfo synthInfo = MidiTools.findDevice(mMidiManager, "Mobileer", "SynthExample"); int portIndex = 0; mPortSelector = new MidiOutputPortConnectionSelector(mMidiManager, this, R.id.spinner_synth_sender, synthInfo, portIndex); mPortSelector.setConnectedListener(new MyPortsConnectedListener()); }
@Override public void onPortSelected(final MidiPortWrapper wrapper) { close(); final MidiDeviceInfo info = wrapper.getDeviceInfo(); if (info != null) { mMidiManager.openDevice(info, new MidiManager.OnDeviceOpenedListener() { @Override public void onDeviceOpened(MidiDevice device) { if (device == null) { Log.e(MidiConstants.TAG, "could not open " + info); } else { mOpenDevice = device; mOutputPort = device.openOutputPort(wrapper.getPortIndex()); if (mOutputPort == null) { Log.e(MidiConstants.TAG, "could not open output port for " + info); return; } mOutputPort.connect(mDispatcher); } } }, null); // Don't run the callback on the UI thread because openOutputPort might take a while. } }
private MidiDeviceMonitor(MidiManager midiManager) { mMidiManager = midiManager; if (mUseProxy) { Log.i(TAG,"Running on M so we need to use the workaround."); mMyDeviceCallback = new MyDeviceCallback(); mMidiManager.registerDeviceCallback(mMyDeviceCallback, new Handler(Looper.getMainLooper())); } }
private void openDevice(final MidiManager midiManager, MidiDeviceInfo device) { midiManager.openDevice(device, this, null); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setActionBar((Toolbar) findViewById(R.id.toolbar)); ActionBar actionBar = getActionBar(); if (actionBar != null) { actionBar.setDisplayShowTitleEnabled(false); } mLog = (TextView) findViewById(R.id.log); mScroller = (ScrollView) findViewById(R.id.scroll); // Setup MIDI MidiManager midiManager = (MidiManager) getSystemService(MIDI_SERVICE); // Receiver that prints the messages. MidiReceiver loggingReceiver = new LoggingReceiver(this); // Receiver that parses raw data into complete messages. MidiFramer connectFramer = new MidiFramer(loggingReceiver); // Setup a menu to select an input source. mLogSenderSelector = new MidiOutputPortSelector(midiManager, this, R.id.spinner_senders) { @Override public void onPortSelected(final MidiPortWrapper wrapper) { super.onPortSelected(wrapper); if (wrapper != null) { mLogLines.clear(); MidiDeviceInfo deviceInfo = wrapper.getDeviceInfo(); if (deviceInfo == null) { log(getString(R.string.header_text)); } else { log(MidiPrinter.formatDeviceInfo(deviceInfo)); } } } }; mLogSenderSelector.getSender().connect(connectFramer); // Tell the virtual device to log its messages here.. MidiScope.setScopeLogger(this); }
/** * @param mMidiManager */ public MidiPortConnector(MidiManager midiManager) { mMidiManager = midiManager; }
/** * Open two devices and connect their ports. * * @param sourceDeviceInfo * @param sourcePortIndex * @param destinationDeviceInfo * @param destinationPortIndex */ public void connectToDevicePort(final MidiDeviceInfo sourceDeviceInfo, final int sourcePortIndex, final MidiDeviceInfo destinationDeviceInfo, final int destinationPortIndex, final OnPortsConnectedListener listener, final Handler handler) { safeClose(); mMidiManager.openDevice(destinationDeviceInfo, new MidiManager.OnDeviceOpenedListener() { @Override public void onDeviceOpened(MidiDevice destinationDevice) { if (destinationDevice == null) { Log.e(MidiConstants.TAG, "could not open " + destinationDeviceInfo); if (listener != null) { listener.onPortsConnected(null); } } else { mDestinationDevice = destinationDevice; Log.i(MidiConstants.TAG, "connectToDevicePort opened " + destinationDeviceInfo); // Destination device was opened so go to next step. MidiInputPort destinationInputPort = destinationDevice .openInputPort(destinationPortIndex); if (destinationInputPort != null) { Log.i(MidiConstants.TAG, "connectToDevicePort opened port on " + destinationDeviceInfo); connectToDevicePort(sourceDeviceInfo, sourcePortIndex, destinationInputPort, listener, handler); } else { Log.e(MidiConstants.TAG, "could not open port on " + destinationDeviceInfo); safeClose(); if (listener != null) { listener.onPortsConnected(null); } } } } }, handler); }
public void initPort() { Log.d("DEBUG", "initPort..."); midiManager = (MidiManager) context.getSystemService(Context.MIDI_SERVICE); if (midiManager != null) { final MidiDeviceInfo[] infos = midiManager.getDevices(); for (final MidiDeviceInfo info : infos) { final int numInputs = info.getInputPortCount(); final int numOutputs = info.getOutputPortCount(); if (numOutputs == 0) continue; Log.d("DEBUG", "in port num = " + numInputs); Log.d("DEBUG", "out port num = " + numOutputs); int portIndex = 0; for (MidiDeviceInfo.PortInfo portInfo : info.getPorts()) { Log.d("DEBUG", "name: " + portInfo.getName()); String portName = portInfo.getName(); final int pi = portIndex; midiManager.openDevice(info, new MidiManager.OnDeviceOpenedListener() { @Override public void onDeviceOpened(MidiDevice device) { if (device == null) { Log.d("DEBUG", "could not open device " + info); } else { Log.d("DEBUG", "a onDeviceOpend..."); switch (pi) { case 0: midiInputPort = device.openInputPort(numInputs - 1); if (midiInputPort == null) { Log.d("DEBUG", "midi input port is null..."); } break; case 1: midiOutputPort = device.openOutputPort(numOutputs - 1); if (midiOutputPort == null) { Log.d("DEBUG", "midi output port is null..."); } break; } initializedMidi = true; } } }, null); portIndex++; } } //Log.d("DEBUG", "midi:" + infos.length); } }
/** * 返回 {@link MidiManager} */ public static MidiManager getMidiManager() { return (MidiManager) get(MIDI_SERVICE); }
@TargetApi(23) public static MidiManager getMidiManager() { return (MidiManager) getSystemService(Context.MIDI_SERVICE); }
/** * @since 4.0.0 */ public static MidiManager midi(Context context) { return (MidiManager) context.getSystemService(MIDI_SERVICE); }
/** * @param midiManager */ public MidiPortConnector(MidiManager midiManager) { mMidiManager = midiManager; }
/** * Open two devices and connect their ports. * Then notify listener of the result. * * @param sourceDeviceInfo * @param sourcePortIndex * @param destinationDeviceInfo * @param destinationPortIndex * @param listener * @param handler */ public void connectToDevicePort(final MidiDeviceInfo sourceDeviceInfo, final int sourcePortIndex, final MidiDeviceInfo destinationDeviceInfo, final int destinationPortIndex, final OnPortsConnectedListener listener, final Handler handler) { safeClose(); mMidiManager.openDevice(destinationDeviceInfo, new MidiManager.OnDeviceOpenedListener() { @Override public void onDeviceOpened(MidiDevice destinationDevice) { if (destinationDevice == null) { Log.e(MidiConstants.TAG, "could not open " + destinationDeviceInfo); if (listener != null) { listener.onPortsConnected(null); } } else { mDestinationDevice = destinationDevice; Log.i(MidiConstants.TAG, "connectToDevicePort opened " + destinationDeviceInfo); // Destination device was opened so go to next step. MidiInputPort destinationInputPort = destinationDevice .openInputPort(destinationPortIndex); if (destinationInputPort != null) { Log.i(MidiConstants.TAG, "connectToDevicePort opened port on " + destinationDeviceInfo); connectToDevicePort(sourceDeviceInfo, sourcePortIndex, destinationInputPort, listener, handler); } else { Log.e(MidiConstants.TAG, "could not open port on " + destinationDeviceInfo); safeClose(); if (listener != null) { listener.onPortsConnected(null); } } } } }, handler); }
public synchronized static MidiDeviceMonitor getInstance(MidiManager midiManager) { if (mInstance == null) { mInstance = new MidiDeviceMonitor(midiManager); } return mInstance; }
@TargetApi(AndroidHelper.API_23) public static MidiManager midiManager() { return (MidiManager) get(Context.MIDI_SERVICE); }