Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7eb441cb authored by Mike Lockwood's avatar Mike Lockwood
Browse files

MidiManager: Address API Council feedback:

Rename MidiDeviceInfo.getPortList() to getPorts()

Rename MidiManager.getDeviceList() to getDevices()

Rename MidiReceiver.onReceive() to onSend()

Replace MidiManager.DeviceOpenCallback and BluetoothOpenCallback
with new interface MidiManager.OnDeviceOpenedListener

Add MidiSender.onConnect() and onDisconnect()

Add MidiReceiver.onFlush()

Ensure that MidiReceiver max message size is immutable

Bug: 21044677
Change-Id: I7711734a45e831e9744849a6f569e906feff9f80
parent 4bd4121d
Loading
Loading
Loading
Loading
+18 −20
Original line number Diff line number Diff line
@@ -17259,7 +17259,7 @@ package android.media.midi {
    method public int getId();
    method public int getInputPortCount();
    method public int getOutputPortCount();
    method public android.media.midi.MidiDeviceInfo.PortInfo[] getPortList();
    method public android.media.midi.MidiDeviceInfo.PortInfo[] getPorts();
    method public android.os.Bundle getProperties();
    method public int getType();
    method public boolean isPrivate();
@@ -17307,22 +17307,17 @@ package android.media.midi {
  public final class MidiInputPort extends android.media.midi.MidiReceiver implements java.io.Closeable {
    method public void close() throws java.io.IOException;
    method public final int getPortNumber();
    method public void onReceive(byte[], int, int, long) throws java.io.IOException;
    method public void onSend(byte[], int, int, long) throws java.io.IOException;
  }
  public final class MidiManager {
    method public android.media.midi.MidiDeviceInfo[] getDeviceList();
    method public void openBluetoothDevice(android.bluetooth.BluetoothDevice, android.media.midi.MidiManager.BluetoothOpenCallback, android.os.Handler);
    method public void openDevice(android.media.midi.MidiDeviceInfo, android.media.midi.MidiManager.DeviceOpenCallback, android.os.Handler);
    method public android.media.midi.MidiDeviceInfo[] getDevices();
    method public void openBluetoothDevice(android.bluetooth.BluetoothDevice, android.media.midi.MidiManager.OnDeviceOpenedListener, android.os.Handler);
    method public void openDevice(android.media.midi.MidiDeviceInfo, android.media.midi.MidiManager.OnDeviceOpenedListener, android.os.Handler);
    method public void registerDeviceCallback(android.media.midi.MidiManager.DeviceCallback, android.os.Handler);
    method public void unregisterDeviceCallback(android.media.midi.MidiManager.DeviceCallback);
  }
  public static abstract class MidiManager.BluetoothOpenCallback {
    ctor public MidiManager.BluetoothOpenCallback();
    method public abstract void onDeviceOpened(android.bluetooth.BluetoothDevice, android.media.midi.MidiDevice);
  }
  public static class MidiManager.DeviceCallback {
    ctor public MidiManager.DeviceCallback();
    method public void onDeviceAdded(android.media.midi.MidiDeviceInfo);
@@ -17330,31 +17325,34 @@ package android.media.midi {
    method public void onDeviceStatusChanged(android.media.midi.MidiDeviceStatus);
  }
  public static abstract class MidiManager.DeviceOpenCallback {
    ctor public MidiManager.DeviceOpenCallback();
    method public abstract void onDeviceOpened(android.media.midi.MidiDeviceInfo, android.media.midi.MidiDevice);
  public static abstract interface MidiManager.OnDeviceOpenedListener {
    method public abstract void onDeviceOpened(android.media.midi.MidiDevice);
  }
  public final class MidiOutputPort extends android.media.midi.MidiSender implements java.io.Closeable {
    method public void close() throws java.io.IOException;
    method public void connect(android.media.midi.MidiReceiver);
    method public void disconnect(android.media.midi.MidiReceiver);
    method public final int getPortNumber();
    method public void onConnect(android.media.midi.MidiReceiver);
    method public void onDisconnect(android.media.midi.MidiReceiver);
  }
  public abstract class MidiReceiver {
    ctor public MidiReceiver();
    ctor public MidiReceiver(int);
    method public void flush() throws java.io.IOException;
    method public int getMaxMessageSize();
    method public abstract void onReceive(byte[], int, int, long) throws java.io.IOException;
    method public final int getMaxMessageSize();
    method public void onFlush() throws java.io.IOException;
    method public abstract void onSend(byte[], int, int, long) throws java.io.IOException;
    method public void send(byte[], int, int) throws java.io.IOException;
    method public void sendWithTimestamp(byte[], int, int, long) throws java.io.IOException;
    method public void send(byte[], int, int, long) throws java.io.IOException;
  }
  public abstract class MidiSender {
    ctor public MidiSender();
    method public abstract void connect(android.media.midi.MidiReceiver);
    method public abstract void disconnect(android.media.midi.MidiReceiver);
    method public void connect(android.media.midi.MidiReceiver);
    method public void disconnect(android.media.midi.MidiReceiver);
    method public abstract void onConnect(android.media.midi.MidiReceiver);
    method public abstract void onDisconnect(android.media.midi.MidiReceiver);
  }
}
+18 −20
Original line number Diff line number Diff line
@@ -18562,7 +18562,7 @@ package android.media.midi {
    method public int getId();
    method public int getInputPortCount();
    method public int getOutputPortCount();
    method public android.media.midi.MidiDeviceInfo.PortInfo[] getPortList();
    method public android.media.midi.MidiDeviceInfo.PortInfo[] getPorts();
    method public android.os.Bundle getProperties();
    method public int getType();
    method public boolean isPrivate();
@@ -18610,22 +18610,17 @@ package android.media.midi {
  public final class MidiInputPort extends android.media.midi.MidiReceiver implements java.io.Closeable {
    method public void close() throws java.io.IOException;
    method public final int getPortNumber();
    method public void onReceive(byte[], int, int, long) throws java.io.IOException;
    method public void onSend(byte[], int, int, long) throws java.io.IOException;
  }
  public final class MidiManager {
    method public android.media.midi.MidiDeviceInfo[] getDeviceList();
    method public void openBluetoothDevice(android.bluetooth.BluetoothDevice, android.media.midi.MidiManager.BluetoothOpenCallback, android.os.Handler);
    method public void openDevice(android.media.midi.MidiDeviceInfo, android.media.midi.MidiManager.DeviceOpenCallback, android.os.Handler);
    method public android.media.midi.MidiDeviceInfo[] getDevices();
    method public void openBluetoothDevice(android.bluetooth.BluetoothDevice, android.media.midi.MidiManager.OnDeviceOpenedListener, android.os.Handler);
    method public void openDevice(android.media.midi.MidiDeviceInfo, android.media.midi.MidiManager.OnDeviceOpenedListener, android.os.Handler);
    method public void registerDeviceCallback(android.media.midi.MidiManager.DeviceCallback, android.os.Handler);
    method public void unregisterDeviceCallback(android.media.midi.MidiManager.DeviceCallback);
  }
  public static abstract class MidiManager.BluetoothOpenCallback {
    ctor public MidiManager.BluetoothOpenCallback();
    method public abstract void onDeviceOpened(android.bluetooth.BluetoothDevice, android.media.midi.MidiDevice);
  }
  public static class MidiManager.DeviceCallback {
    ctor public MidiManager.DeviceCallback();
    method public void onDeviceAdded(android.media.midi.MidiDeviceInfo);
@@ -18633,31 +18628,34 @@ package android.media.midi {
    method public void onDeviceStatusChanged(android.media.midi.MidiDeviceStatus);
  }
  public static abstract class MidiManager.DeviceOpenCallback {
    ctor public MidiManager.DeviceOpenCallback();
    method public abstract void onDeviceOpened(android.media.midi.MidiDeviceInfo, android.media.midi.MidiDevice);
  public static abstract interface MidiManager.OnDeviceOpenedListener {
    method public abstract void onDeviceOpened(android.media.midi.MidiDevice);
  }
  public final class MidiOutputPort extends android.media.midi.MidiSender implements java.io.Closeable {
    method public void close() throws java.io.IOException;
    method public void connect(android.media.midi.MidiReceiver);
    method public void disconnect(android.media.midi.MidiReceiver);
    method public final int getPortNumber();
    method public void onConnect(android.media.midi.MidiReceiver);
    method public void onDisconnect(android.media.midi.MidiReceiver);
  }
  public abstract class MidiReceiver {
    ctor public MidiReceiver();
    ctor public MidiReceiver(int);
    method public void flush() throws java.io.IOException;
    method public int getMaxMessageSize();
    method public abstract void onReceive(byte[], int, int, long) throws java.io.IOException;
    method public final int getMaxMessageSize();
    method public void onFlush() throws java.io.IOException;
    method public abstract void onSend(byte[], int, int, long) throws java.io.IOException;
    method public void send(byte[], int, int) throws java.io.IOException;
    method public void sendWithTimestamp(byte[], int, int, long) throws java.io.IOException;
    method public void send(byte[], int, int, long) throws java.io.IOException;
  }
  public abstract class MidiSender {
    ctor public MidiSender();
    method public abstract void connect(android.media.midi.MidiReceiver);
    method public abstract void disconnect(android.media.midi.MidiReceiver);
    method public void connect(android.media.midi.MidiReceiver);
    method public void disconnect(android.media.midi.MidiReceiver);
    method public abstract void onConnect(android.media.midi.MidiReceiver);
    method public abstract void onDisconnect(android.media.midi.MidiReceiver);
  }
}
+8 −16
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
 * This class subclasses {@link android.media.midi.MidiReceiver} and dispatches any data it receives
 * to its receiver list. Any receivers that throw an exception upon receiving data will
 * be automatically removed from the receiver list, but no IOException will be returned
 * from the dispatcher's {@link android.media.midi.MidiReceiver#onReceive} in that case.
 * from the dispatcher's {@link android.media.midi.MidiReceiver#onSend} in that case.
 */
public final class MidiDispatcher extends MidiReceiver {

@@ -35,21 +35,13 @@ public final class MidiDispatcher extends MidiReceiver {
            = new CopyOnWriteArrayList<MidiReceiver>();

    private final MidiSender mSender = new MidiSender() {
        /**
         * Called to connect a {@link android.media.midi.MidiReceiver} to the sender
         *
         * @param receiver the receiver to connect
         */
        public void connect(MidiReceiver receiver) {
        @Override
        public void onConnect(MidiReceiver receiver) {
            mReceivers.add(receiver);
        }

        /**
         * Called to disconnect a {@link android.media.midi.MidiReceiver} from the sender
         *
         * @param receiver the receiver to disconnect
         */
        public void disconnect(MidiReceiver receiver) {
        @Override
        public void onDisconnect(MidiReceiver receiver) {
            mReceivers.remove(receiver);
        }
    };
@@ -73,10 +65,10 @@ public final class MidiDispatcher extends MidiReceiver {
    }

    @Override
    public void onReceive(byte[] msg, int offset, int count, long timestamp) throws IOException {
    public void onSend(byte[] msg, int offset, int count, long timestamp) throws IOException {
       for (MidiReceiver receiver : mReceivers) {
            try {
                receiver.sendWithTimestamp(msg, offset, count, timestamp);
                receiver.send(msg, offset, count, timestamp);
            } catch (IOException e) {
                // if the receiver fails we remove the receiver but do not propagate the exception
                mReceivers.remove(receiver);
@@ -85,7 +77,7 @@ public final class MidiDispatcher extends MidiReceiver {
    }

    @Override
    public void flush() throws IOException {
    public void onFlush() throws IOException {
       for (MidiReceiver receiver : mReceivers) {
            receiver.flush();
       }
+2 −2
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ public class MidiEventScheduler extends EventScheduler {
         * time.
         */
        @Override
        public void onReceive(byte[] msg, int offset, int count, long timestamp)
        public void onSend(byte[] msg, int offset, int count, long timestamp)
                throws IOException {
            MidiEvent event = createScheduledEvent(msg, offset, count, timestamp);
            if (event != null) {
@@ -45,7 +45,7 @@ public class MidiEventScheduler extends EventScheduler {
        }

        @Override
        public void flush() {
        public void onFlush() {
            MidiEventScheduler.this.flush();
        }
    }
+7 −7
Original line number Diff line number Diff line
@@ -54,10 +54,10 @@ public class MidiFramer extends MidiReceiver {
    }

    /*
     * @see android.midi.MidiReceiver#onReceive(byte[], int, int, long)
     * @see android.midi.MidiReceiver#onSend(byte[], int, int, long)
     */
    @Override
    public void onReceive(byte[] data, int offset, int count, long timestamp)
    public void onSend(byte[] data, int offset, int count, long timestamp)
            throws IOException {
        // Log.i(TAG, formatMidiData(data, offset, count));
        int sysExStartOffset = (mInSysEx ? offset : -1);
@@ -77,7 +77,7 @@ public class MidiFramer extends MidiReceiver {
                    } else if (b == 0xF7 /* SysEx End */) {
                        // Log.i(TAG, "SysEx End");
                        if (mInSysEx) {
                            mReceiver.sendWithTimestamp(data, sysExStartOffset,
                            mReceiver.send(data, sysExStartOffset,
                                offset - sysExStartOffset + 1, timestamp);
                            mInSysEx = false;
                            sysExStartOffset = -1;
@@ -91,11 +91,11 @@ public class MidiFramer extends MidiReceiver {
                } else { // real-time?
                    // Single byte message interleaved with other data.
                    if (mInSysEx) {
                        mReceiver.sendWithTimestamp(data, sysExStartOffset,
                        mReceiver.send(data, sysExStartOffset,
                                offset - sysExStartOffset, timestamp);
                        sysExStartOffset = offset + 1;
                    }
                    mReceiver.sendWithTimestamp(data, offset, 1, timestamp);
                    mReceiver.send(data, offset, 1, timestamp);
                }
            } else { // data byte
                // Save SysEx data for SysEx End marker or end of buffer.
@@ -105,7 +105,7 @@ public class MidiFramer extends MidiReceiver {
                        if (mRunningStatus != 0) {
                            mBuffer[0] = (byte) mRunningStatus;
                        }
                        mReceiver.sendWithTimestamp(mBuffer, 0, mCount, timestamp);
                        mReceiver.send(mBuffer, 0, mCount, timestamp);
                        mNeeded = MidiConstants.getBytesPerMessage(mBuffer[0]) - 1;
                        mCount = 1;
                    }
@@ -116,7 +116,7 @@ public class MidiFramer extends MidiReceiver {

        // send any accumulatedSysEx data
        if (sysExStartOffset >= 0 && sysExStartOffset < offset) {
            mReceiver.sendWithTimestamp(data, sysExStartOffset,
            mReceiver.send(data, sysExStartOffset,
                    offset - sysExStartOffset, timestamp);
        }
    }
Loading