Add MidiDeviceInfo.getPortList()

This replaces MidiDeviceInfo.getInputPortInfo() and getOutputPortInfo()

Change-Id: I0a9bc7c34a172a072e86718d465967c6c618fb3b
diff --git a/api/current.txt b/api/current.txt
index a13ff67..e255198 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -16762,9 +16762,8 @@
     method public int describeContents();
     method public int getId();
     method public int getInputPortCount();
-    method public android.media.midi.MidiDeviceInfo.PortInfo getInputPortInfo(int);
     method public int getOutputPortCount();
-    method public android.media.midi.MidiDeviceInfo.PortInfo getOutputPortInfo(int);
+    method public android.media.midi.MidiDeviceInfo.PortInfo[] getPortList();
     method public android.os.Bundle getProperties();
     method public int getType();
     method public boolean isPrivate();
diff --git a/api/system-current.txt b/api/system-current.txt
index 310de53..106f141 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -18038,9 +18038,8 @@
     method public int describeContents();
     method public int getId();
     method public int getInputPortCount();
-    method public android.media.midi.MidiDeviceInfo.PortInfo getInputPortInfo(int);
     method public int getOutputPortCount();
-    method public android.media.midi.MidiDeviceInfo.PortInfo getOutputPortInfo(int);
+    method public android.media.midi.MidiDeviceInfo.PortInfo[] getPortList();
     method public android.os.Bundle getProperties();
     method public int getType();
     method public boolean isPrivate();
diff --git a/media/java/android/media/midi/MidiDeviceInfo.java b/media/java/android/media/midi/MidiDeviceInfo.java
index 7201e25..af108eb 100644
--- a/media/java/android/media/midi/MidiDeviceInfo.java
+++ b/media/java/android/media/midi/MidiDeviceInfo.java
@@ -237,29 +237,23 @@
     }
 
     /**
-     * Returns information about an input port.
+     * Returns information about the device's ports.
+     * The ports are in unspecified order.
      *
-     * @param portNumber the number of the input port
-     * @return the input port's information object
+     * @return array of {@link PortInfo}
      */
-    public PortInfo getInputPortInfo(int portNumber) {
-        if (portNumber < 0 || portNumber >= mInputPortCount) {
-            throw new IllegalArgumentException("portNumber out of range");
-        }
-        return new PortInfo(PortInfo.TYPE_INPUT, portNumber, mInputPortNames[portNumber]);
-    }
+    public PortInfo[] getPortList() {
+        PortInfo[] portInfoList = new PortInfo[mInputPortCount + mOutputPortCount];
 
-    /**
-     * Returns information about an output port.
-     *
-     * @param portNumber the number of the output port
-     * @return the output port's information object
-     */
-    public PortInfo getOutputPortInfo(int portNumber) {
-        if (portNumber < 0 || portNumber >= mOutputPortCount) {
-            throw new IllegalArgumentException("portNumber out of range");
+        int index = 0;
+        for (int i = 0; i < mInputPortCount; i++) {
+            portInfoList[index++] = new PortInfo(PortInfo.TYPE_INPUT, i, mInputPortNames[i]);
         }
-        return new PortInfo(PortInfo.TYPE_OUTPUT, portNumber, mOutputPortNames[portNumber]);
+        for (int i = 0; i < mOutputPortCount; i++) {
+            portInfoList[index++] = new PortInfo(PortInfo.TYPE_OUTPUT, i, mOutputPortNames[i]);
+        }
+
+        return portInfoList;
     }
 
     /**
diff --git a/media/java/android/media/midi/MidiDeviceService.java b/media/java/android/media/midi/MidiDeviceService.java
index 8b1de3e..ce12a4f 100644
--- a/media/java/android/media/midi/MidiDeviceService.java
+++ b/media/java/android/media/midi/MidiDeviceService.java
@@ -91,7 +91,7 @@
     /**
      * Returns an array of {@link MidiReceiver} for the device's input ports.
      * Subclasses must override this to provide the receivers which will receive
-     * data sent to the device's input ports. An empty array or null should be returned if
+     * data sent to the device's input ports. An empty array should be returned if
      * the device has no input ports.
      * @return array of MidiReceivers
      */