/** * 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); }
/** * 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); }
/** * 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); }