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

Commit 81b9f7d3 authored by Mike Lockwood's avatar Mike Lockwood
Browse files

Add MidiManager to public API

Also made some small API changes based on feedback from the lint tool.

Change-Id: Ibcf1e9107d86d3a364f811ce47a13aa0da653366
parent f2cd8024
Loading
Loading
Loading
Loading
+79 −0
Original line number Diff line number Diff line
@@ -16489,6 +16489,85 @@ package android.media.effect {
}
package android.media.midi {
  public final class MidiDeviceInfo implements android.os.Parcelable {
    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.os.Bundle getProperties();
    method public int getType();
    method public boolean isPrivate();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.media.midi.MidiDeviceInfo> CREATOR;
    field public static final java.lang.String PROPERTY_MANUFACTURER = "manufacturer";
    field public static final java.lang.String PROPERTY_NAME = "name";
    field public static final java.lang.String PROPERTY_PRODUCT = "product";
    field public static final java.lang.String PROPERTY_SERIAL_NUMBER = "serial_number";
    field public static final java.lang.String PROPERTY_USB_DEVICE = "usb_device";
    field public static final int TYPE_USB = 1; // 0x1
    field public static final int TYPE_VIRTUAL = 2; // 0x2
  }
  public static final class MidiDeviceInfo.PortInfo {
    method public java.lang.String getName();
    method public int getPortNumber();
    method public int getType();
    field public static final int TYPE_INPUT = 1; // 0x1
    field public static final int TYPE_OUTPUT = 2; // 0x2
  }
  public abstract class MidiDeviceService extends android.app.Service {
    ctor public MidiDeviceService();
    method public final android.media.midi.MidiDeviceInfo getDeviceInfo();
    method public final android.media.midi.MidiReceiver[] getOutputPortReceivers();
    method public android.os.IBinder onBind(android.content.Intent);
    method public void onDeviceStatusChanged(android.media.midi.MidiDeviceStatus);
    method public abstract android.media.midi.MidiReceiver[] onGetInputPortReceivers();
    field public static final java.lang.String SERVICE_INTERFACE = "android.media.midi.MidiDeviceService";
  }
  public final class MidiDeviceStatus implements android.os.Parcelable {
    method public int describeContents();
    method public android.media.midi.MidiDeviceInfo getDeviceInfo();
    method public int getOutputPortOpenCount(int);
    method public boolean isInputPortOpen(int);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.media.midi.MidiDeviceStatus> CREATOR;
  }
  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;
  }
  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();
  }
  public abstract class MidiReceiver {
    ctor public MidiReceiver();
    method public int getMaxMessageSize();
    method public abstract void onReceive(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;
  }
  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);
  }
}
package android.media.projection {
  public final class MediaProjection {
+79 −0
Original line number Diff line number Diff line
@@ -17555,6 +17555,85 @@ package android.media.effect {
}
package android.media.midi {
  public final class MidiDeviceInfo implements android.os.Parcelable {
    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.os.Bundle getProperties();
    method public int getType();
    method public boolean isPrivate();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.media.midi.MidiDeviceInfo> CREATOR;
    field public static final java.lang.String PROPERTY_MANUFACTURER = "manufacturer";
    field public static final java.lang.String PROPERTY_NAME = "name";
    field public static final java.lang.String PROPERTY_PRODUCT = "product";
    field public static final java.lang.String PROPERTY_SERIAL_NUMBER = "serial_number";
    field public static final java.lang.String PROPERTY_USB_DEVICE = "usb_device";
    field public static final int TYPE_USB = 1; // 0x1
    field public static final int TYPE_VIRTUAL = 2; // 0x2
  }
  public static final class MidiDeviceInfo.PortInfo {
    method public java.lang.String getName();
    method public int getPortNumber();
    method public int getType();
    field public static final int TYPE_INPUT = 1; // 0x1
    field public static final int TYPE_OUTPUT = 2; // 0x2
  }
  public abstract class MidiDeviceService extends android.app.Service {
    ctor public MidiDeviceService();
    method public final android.media.midi.MidiDeviceInfo getDeviceInfo();
    method public final android.media.midi.MidiReceiver[] getOutputPortReceivers();
    method public android.os.IBinder onBind(android.content.Intent);
    method public void onDeviceStatusChanged(android.media.midi.MidiDeviceStatus);
    method public abstract android.media.midi.MidiReceiver[] onGetInputPortReceivers();
    field public static final java.lang.String SERVICE_INTERFACE = "android.media.midi.MidiDeviceService";
  }
  public final class MidiDeviceStatus implements android.os.Parcelable {
    method public int describeContents();
    method public android.media.midi.MidiDeviceInfo getDeviceInfo();
    method public int getOutputPortOpenCount(int);
    method public boolean isInputPortOpen(int);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.media.midi.MidiDeviceStatus> CREATOR;
  }
  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;
  }
  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();
  }
  public abstract class MidiReceiver {
    ctor public MidiReceiver();
    method public int getMaxMessageSize();
    method public abstract void onReceive(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;
  }
  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);
  }
}
package android.media.projection {
  public final class MediaProjection {
+0 −3
Original line number Diff line number Diff line
@@ -27,9 +27,6 @@ import android.os.Parcelable;
 *
 * This class is just an immutable object to encapsulate the MIDI device description.
 * Use the MidiDevice class to actually communicate with devices.
 *
 * CANDIDATE FOR PUBLIC API
 * @hide
 */
public final class MidiDeviceInfo implements Parcelable {

+5 −5
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ public final class MidiDeviceServer implements Closeable {

    // for reporting device status
    private final IBinder mDeviceStatusToken = new Binder();
    private final boolean[] mInputPortBusy;
    private final boolean[] mInputPortOpen;
    private final int[] mOutputPortOpenCount;

    private final CloseGuard mGuard = CloseGuard.get();
@@ -116,7 +116,7 @@ public final class MidiDeviceServer implements Closeable {
            synchronized (mInputPortOutputPorts) {
                int portNumber = mOutputPort.getPortNumber();
                mInputPortOutputPorts[portNumber] = null;
                mInputPortBusy[portNumber] = false;
                mInputPortOpen[portNumber] = false;
                updateDeviceStatus();
            }
            IoUtils.closeQuietly(mOutputPort);
@@ -182,7 +182,7 @@ public final class MidiDeviceServer implements Closeable {
                    synchronized (mPortClients) {
                        mPortClients.put(token, client);
                    }
                    mInputPortBusy[portNumber] = true;
                    mInputPortOpen[portNumber] = true;
                    updateDeviceStatus();
                    return pair[1];
                } catch (IOException e) {
@@ -267,7 +267,7 @@ public final class MidiDeviceServer implements Closeable {
            mOutputPortDispatchers[i] = new MidiDispatcher();
        }

        mInputPortBusy = new boolean[mInputPortCount];
        mInputPortOpen = new boolean[mInputPortCount];
        mOutputPortOpenCount = new int[numOutputPorts];

        mGuard.open("close");
@@ -288,7 +288,7 @@ public final class MidiDeviceServer implements Closeable {
        // clear calling identity, since we may be in a Binder call from one of our clients
        long identityToken = Binder.clearCallingIdentity();

        MidiDeviceStatus status = new MidiDeviceStatus(mDeviceInfo, mInputPortBusy,
        MidiDeviceStatus status = new MidiDeviceStatus(mDeviceInfo, mInputPortOpen,
                mOutputPortOpenCount);
        if (mCallback != null) {
            mCallback.onDeviceStatusChanged(this, status);
+5 −8
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import android.util.Log;

/**
 * A service that implements a virtual MIDI device.
 * Subclasses must implement the {@link #getInputPortReceivers} method to provide a
 * Subclasses must implement the {@link #onGetInputPortReceivers} method to provide a
 * list of {@link MidiReceiver}s to receive data sent to the device's input ports.
 * Similarly, subclasses can call {@link #getOutputPortReceivers} to fetch a list
 * of {@link MidiReceiver}s for sending data out the output ports.
@@ -44,9 +44,6 @@ import android.util.Log;
 *           &lt;meta-data android:name="android.media.midi.MidiDeviceService"
                android:resource="@xml/device_info" />
 * &lt;/service></pre>
 *
 * CANDIDATE FOR PUBLIC API
 * @hide
 */
abstract public class MidiDeviceService extends Service {
    private static final String TAG = "MidiDeviceService";
@@ -77,7 +74,7 @@ abstract public class MidiDeviceService extends Service {
                return;
            }
            mDeviceInfo = deviceInfo;
            MidiReceiver[] inputPortReceivers = getInputPortReceivers();
            MidiReceiver[] inputPortReceivers = onGetInputPortReceivers();
            if (inputPortReceivers == null) {
                inputPortReceivers = new MidiReceiver[0];
            }
@@ -98,14 +95,14 @@ abstract public class MidiDeviceService extends Service {
     * the device has no input ports.
     * @return array of MidiReceivers
     */
    abstract public MidiReceiver[] getInputPortReceivers();
    abstract public MidiReceiver[] onGetInputPortReceivers();

    /**
     * Returns an array of {@link MidiReceiver} for the device's output ports.
     * These can be used to send data out the device's output ports.
     * @return array of MidiReceivers
     */
    public MidiReceiver[] getOutputPortReceivers() {
    public final MidiReceiver[] getOutputPortReceivers() {
        if (mServer == null) {
            return null;
        } else {
@@ -117,7 +114,7 @@ abstract public class MidiDeviceService extends Service {
     * returns the {@link MidiDeviceInfo} instance for this service
     * @return our MidiDeviceInfo
     */
    public MidiDeviceInfo getDeviceInfo() {
    public final MidiDeviceInfo getDeviceInfo() {
        return mDeviceInfo;
    }

Loading