summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@google.com>2015-02-20 08:28:47 -0800
committerMike Lockwood <lockwood@google.com>2015-02-23 14:32:23 -0800
commitb673770f7172d4fca9bc05de1f36bc53e93eb247 (patch)
tree5d58c97188d3d7c4f9d7faf5376e586374a17624
parentc3c2ff70a23ff31bec72e7794ea33552ca106438 (diff)
downloadframeworks_base-b673770f7172d4fca9bc05de1f36bc53e93eb247.zip
frameworks_base-b673770f7172d4fca9bc05de1f36bc53e93eb247.tar.gz
frameworks_base-b673770f7172d4fca9bc05de1f36bc53e93eb247.tar.bz2
Add MIDI Manager API tweaks:
- Change the package name from android.midi to android.media.midi - Add option for specifying a Handler for DeviceCallback notifications Change-Id: Ia9e9817a651c06299f4e02ee1da3c9666ff64cb9
-rw-r--r--Android.mk8
-rw-r--r--core/java/android/app/ContextImpl.java4
-rw-r--r--core/java/android/content/Context.java2
-rw-r--r--media/java/android/media/midi/IMidiDeviceServer.aidl (renamed from core/java/android/midi/IMidiDeviceServer.aidl)2
-rw-r--r--media/java/android/media/midi/IMidiListener.aidl (renamed from core/java/android/midi/IMidiListener.aidl)4
-rw-r--r--media/java/android/media/midi/IMidiManager.aidl (renamed from core/java/android/midi/IMidiManager.aidl)8
-rw-r--r--media/java/android/media/midi/MidiDevice.java (renamed from core/java/android/midi/MidiDevice.java)2
-rw-r--r--media/java/android/media/midi/MidiDeviceInfo.aidl (renamed from core/java/android/midi/MidiDeviceInfo.aidl)2
-rw-r--r--media/java/android/media/midi/MidiDeviceInfo.java (renamed from core/java/android/midi/MidiDeviceInfo.java)2
-rw-r--r--media/java/android/media/midi/MidiDeviceServer.java (renamed from core/java/android/midi/MidiDeviceServer.java)2
-rw-r--r--media/java/android/media/midi/MidiInputPort.java (renamed from core/java/android/midi/MidiInputPort.java)2
-rw-r--r--media/java/android/media/midi/MidiManager.java (renamed from core/java/android/midi/MidiManager.java)44
-rw-r--r--media/java/android/media/midi/MidiOutputPort.java (renamed from core/java/android/midi/MidiOutputPort.java)2
-rw-r--r--media/java/android/media/midi/MidiPort.java (renamed from core/java/android/midi/MidiPort.java)31
-rw-r--r--media/java/android/media/midi/MidiReceiver.java (renamed from core/java/android/midi/MidiReceiver.java)4
-rw-r--r--media/java/android/media/midi/MidiSender.java (renamed from core/java/android/midi/MidiSender.java)2
-rw-r--r--services/core/java/com/android/server/MidiService.java8
-rw-r--r--services/usb/java/com/android/server/usb/UsbAlsaManager.java2
-rw-r--r--services/usb/java/com/android/server/usb/UsbDeviceManager.java1
-rw-r--r--services/usb/java/com/android/server/usb/UsbMidiDevice.java12
20 files changed, 92 insertions, 52 deletions
diff --git a/Android.mk b/Android.mk
index 44fdb77..669efc7 100644
--- a/Android.mk
+++ b/Android.mk
@@ -174,9 +174,6 @@ LOCAL_SRC_FILES += \
core/java/android/hardware/location/IGeofenceHardwareMonitorCallback.aidl \
core/java/android/hardware/soundtrigger/IRecognitionStatusCallback.aidl \
core/java/android/hardware/usb/IUsbManager.aidl \
- core/java/android/midi/IMidiDeviceServer.aidl \
- core/java/android/midi/IMidiListener.aidl \
- core/java/android/midi/IMidiManager.aidl \
core/java/android/net/IConnectivityManager.aidl \
core/java/android/net/IEthernetManager.aidl \
core/java/android/net/IEthernetServiceListener.aidl \
@@ -335,7 +332,10 @@ LOCAL_SRC_FILES += \
media/java/android/media/IRemoteVolumeObserver.aidl \
media/java/android/media/IRingtonePlayer.aidl \
media/java/android/media/IVolumeController.aidl \
- media/java/android/media/audiopolicy/IAudioPolicyCallback.aidl \
+ media/java/android/media/audiopolicy/IAudioPolicyCallback.aidl \
+ media/java/android/media/midi/IMidiDeviceServer.aidl \
+ media/java/android/media/midi/IMidiListener.aidl \
+ media/java/android/media/midi/IMidiManager.aidl \
media/java/android/media/projection/IMediaProjection.aidl \
media/java/android/media/projection/IMediaProjectionCallback.aidl \
media/java/android/media/projection/IMediaProjectionManager.aidl \
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index db380ed..503657b 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -75,12 +75,12 @@ import android.location.ILocationManager;
import android.location.LocationManager;
import android.media.AudioManager;
import android.media.MediaRouter;
+import android.media.midi.IMidiManager;
+import android.media.midi.MidiManager;
import android.media.projection.MediaProjectionManager;
import android.media.session.MediaSessionManager;
import android.media.tv.ITvInputManager;
import android.media.tv.TvInputManager;
-import android.midi.IMidiManager;
-import android.midi.MidiManager;
import android.net.ConnectivityManager;
import android.net.IConnectivityManager;
import android.net.EthernetManager;
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index eabe297..46ccc95 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -2971,7 +2971,7 @@ public abstract class Context {
/**
* Use with {@link #getSystemService} to retrieve a
- * {@link android.midi.MidiManager} for accessing the MIDI service.
+ * {@link android.media.midi.MidiManager} for accessing the MIDI service.
*
* @see #getSystemService
* @hide
diff --git a/core/java/android/midi/IMidiDeviceServer.aidl b/media/java/android/media/midi/IMidiDeviceServer.aidl
index 31fdbbb..71914ad 100644
--- a/core/java/android/midi/IMidiDeviceServer.aidl
+++ b/media/java/android/media/midi/IMidiDeviceServer.aidl
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.midi;
+package android.media.midi;
import android.os.ParcelFileDescriptor;
diff --git a/core/java/android/midi/IMidiListener.aidl b/media/java/android/media/midi/IMidiListener.aidl
index b650593..a4129e9 100644
--- a/core/java/android/midi/IMidiListener.aidl
+++ b/media/java/android/media/midi/IMidiListener.aidl
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package android.midi;
+package android.media.midi;
-import android.midi.MidiDeviceInfo;
+import android.media.midi.MidiDeviceInfo;
/** @hide */
oneway interface IMidiListener
diff --git a/core/java/android/midi/IMidiManager.aidl b/media/java/android/media/midi/IMidiManager.aidl
index 575b525..bba35f5 100644
--- a/core/java/android/midi/IMidiManager.aidl
+++ b/media/java/android/media/midi/IMidiManager.aidl
@@ -14,11 +14,11 @@
* limitations under the License.
*/
-package android.midi;
+package android.media.midi;
-import android.midi.IMidiDeviceServer;
-import android.midi.IMidiListener;
-import android.midi.MidiDeviceInfo;
+import android.media.midi.IMidiDeviceServer;
+import android.media.midi.IMidiListener;
+import android.media.midi.MidiDeviceInfo;
import android.os.Bundle;
import android.os.IBinder;
diff --git a/core/java/android/midi/MidiDevice.java b/media/java/android/media/midi/MidiDevice.java
index b91aedf..36710fd 100644
--- a/core/java/android/midi/MidiDevice.java
+++ b/media/java/android/media/midi/MidiDevice.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.midi;
+package android.media.midi;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
diff --git a/core/java/android/midi/MidiDeviceInfo.aidl b/media/java/android/media/midi/MidiDeviceInfo.aidl
index 59be059..f2f37a2 100644
--- a/core/java/android/midi/MidiDeviceInfo.aidl
+++ b/media/java/android/media/midi/MidiDeviceInfo.aidl
@@ -14,6 +14,6 @@
* limitations under the License.
*/
-package android.midi;
+package android.media.midi;
parcelable MidiDeviceInfo;
diff --git a/core/java/android/midi/MidiDeviceInfo.java b/media/java/android/media/midi/MidiDeviceInfo.java
index dde2669..fd35052 100644
--- a/core/java/android/midi/MidiDeviceInfo.java
+++ b/media/java/android/media/midi/MidiDeviceInfo.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.midi;
+package android.media.midi;
import android.os.Bundle;
import android.os.Parcel;
diff --git a/core/java/android/midi/MidiDeviceServer.java b/media/java/android/media/midi/MidiDeviceServer.java
index 4a1995f..3317baa 100644
--- a/core/java/android/midi/MidiDeviceServer.java
+++ b/media/java/android/media/midi/MidiDeviceServer.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.midi;
+package android.media.midi;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
diff --git a/core/java/android/midi/MidiInputPort.java b/media/java/android/media/midi/MidiInputPort.java
index 735c68a..730d364 100644
--- a/core/java/android/midi/MidiInputPort.java
+++ b/media/java/android/media/midi/MidiInputPort.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.midi;
+package android.media.midi;
import android.os.ParcelFileDescriptor;
diff --git a/core/java/android/midi/MidiManager.java b/media/java/android/media/midi/MidiManager.java
index 3a0b064..410120d 100644
--- a/core/java/android/midi/MidiManager.java
+++ b/media/java/android/media/midi/MidiManager.java
@@ -14,12 +14,13 @@
* limitations under the License.
*/
-package android.midi;
+package android.media.midi;
import android.content.Context;
import android.os.Binder;
import android.os.IBinder;
import android.os.Bundle;
+import android.os.Handler;
import android.os.RemoteException;
import android.util.Log;
@@ -50,18 +51,38 @@ public class MidiManager {
// Binder stub for receiving device notifications from MidiService
private class DeviceListener extends IMidiListener.Stub {
- private DeviceCallback mCallback;
+ private final DeviceCallback mCallback;
+ private final Handler mHandler;
- public DeviceListener(DeviceCallback callback) {
+ public DeviceListener(DeviceCallback callback, Handler handler) {
mCallback = callback;
+ mHandler = handler;
}
public void onDeviceAdded(MidiDeviceInfo device) {
- mCallback.onDeviceAdded(device);
+ if (mHandler != null) {
+ final MidiDeviceInfo deviceF = device;
+ mHandler.post(new Runnable() {
+ @Override public void run() {
+ mCallback.onDeviceAdded(deviceF);
+ }
+ });
+ } else {
+ mCallback.onDeviceAdded(device);
+ }
}
public void onDeviceRemoved(MidiDeviceInfo device) {
- mCallback.onDeviceRemoved(device);
+ if (mHandler != null) {
+ final MidiDeviceInfo deviceF = device;
+ mHandler.post(new Runnable() {
+ @Override public void run() {
+ mCallback.onDeviceRemoved(deviceF);
+ }
+ });
+ } else {
+ mCallback.onDeviceRemoved(device);
+ }
}
}
@@ -74,7 +95,7 @@ public class MidiManager {
*
* @param device a {@link MidiDeviceInfo} for the newly added device
*/
- void onDeviceAdded(MidiDeviceInfo device) {
+ public void onDeviceAdded(MidiDeviceInfo device) {
}
/**
@@ -82,7 +103,7 @@ public class MidiManager {
*
* @param device a {@link MidiDeviceInfo} for the removed device
*/
- void onDeviceRemoved(MidiDeviceInfo device) {
+ public void onDeviceRemoved(MidiDeviceInfo device) {
}
}
@@ -98,9 +119,12 @@ public class MidiManager {
* Registers a callback to receive notifications when MIDI devices are added and removed.
*
* @param callback a {@link DeviceCallback} for MIDI device notifications
+ * @param handler The {@link android.os.Handler Handler} that will be used for delivering the
+ * device notifications. If handler is null, then the thread used for the
+ * callback is unspecified.
*/
- public void registerDeviceCallback(DeviceCallback callback) {
- DeviceListener deviceListener = new DeviceListener(callback);
+ public void registerDeviceCallback(DeviceCallback callback, Handler handler) {
+ DeviceListener deviceListener = new DeviceListener(callback, handler);
try {
mService.registerListener(mToken, deviceListener);
} catch (RemoteException e) {
@@ -143,7 +167,7 @@ public class MidiManager {
/**
* Opens a MIDI device for reading and writing.
*
- * @param deviceInfo a {@link android.midi.MidiDeviceInfo} to open
+ * @param deviceInfo a {@link android.media.midi.MidiDeviceInfo} to open
* @return a {@link MidiDevice} object for the device
*/
public MidiDevice openDevice(MidiDeviceInfo deviceInfo) {
diff --git a/core/java/android/midi/MidiOutputPort.java b/media/java/android/media/midi/MidiOutputPort.java
index b9512fd..83ddeeb 100644
--- a/core/java/android/midi/MidiOutputPort.java
+++ b/media/java/android/media/midi/MidiOutputPort.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.midi;
+package android.media.midi;
import android.os.ParcelFileDescriptor;
import android.util.Log;
diff --git a/core/java/android/midi/MidiPort.java b/media/java/android/media/midi/MidiPort.java
index 7512a90..4d3c91d 100644
--- a/core/java/android/midi/MidiPort.java
+++ b/media/java/android/media/midi/MidiPort.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.midi;
+package android.media.midi;
import android.util.Log;
@@ -33,12 +33,16 @@ abstract public class MidiPort implements Closeable {
private final int mPortNumber;
/**
- * Maximum size of a packet that can pass through our ParcelFileDescriptor
+ * Maximum size of a packet that can pass through our ParcelFileDescriptor.
+ * For internal use only. Implementation details may change in the future.
+ * @hide
*/
- protected static final int MAX_PACKET_SIZE = 1024;
+ public static final int MAX_PACKET_SIZE = 1024;
/**
* size of message timestamp in bytes
+ * For internal use only. Implementation details may change in the future.
+ * @hide
*/
private static final int TIMESTAMP_SIZE = 8;
@@ -65,6 +69,7 @@ abstract public class MidiPort implements Closeable {
* Called when an IOExeption occurs while sending or receiving data.
* Subclasses can override to be notified of such errors
*
+ * @hide
*/
public void onIOException() {
}
@@ -77,8 +82,11 @@ abstract public class MidiPort implements Closeable {
* timestamp is message timestamp to pack
* dest is buffer to pack into
* returns size of packed message
+ *
+ * For internal use only. Implementation details may change in the future.
+ * @hide
*/
- protected static int packMessage(byte[] message, int offset, int size, long timestamp,
+ public static int packMessage(byte[] message, int offset, int size, long timestamp,
byte[] dest) {
if (size + TIMESTAMP_SIZE > MAX_PACKET_SIZE) {
size = MAX_PACKET_SIZE - TIMESTAMP_SIZE;
@@ -98,8 +106,11 @@ abstract public class MidiPort implements Closeable {
/**
* Utility function for unpacking a MIDI message received from our ParcelFileDescriptor
* returns the offset of the MIDI message in packed buffer
+ *
+ * For internal use only. Implementation details may change in the future.
+ * @hide
*/
- protected static int getMessageOffset(byte[] buffer, int bufferLength) {
+ public static int getMessageOffset(byte[] buffer, int bufferLength) {
// message is at the beginning
return 0;
}
@@ -107,8 +118,11 @@ abstract public class MidiPort implements Closeable {
/**
* Utility function for unpacking a MIDI message received from our ParcelFileDescriptor
* returns size of MIDI data in packed buffer
+ *
+ * For internal use only. Implementation details may change in the future.
+ * @hide
*/
- protected static int getMessageSize(byte[] buffer, int bufferLength) {
+ public static int getMessageSize(byte[] buffer, int bufferLength) {
// message length is total buffer length minus size of the timestamp
return bufferLength - TIMESTAMP_SIZE;
}
@@ -116,8 +130,11 @@ abstract public class MidiPort implements Closeable {
/**
* Utility function for unpacking a MIDI message received from our ParcelFileDescriptor
* unpacks timestamp from packed buffer
+ *
+ * For internal use only. Implementation details may change in the future.
+ * @hide
*/
- protected static long getMessageTimeStamp(byte[] buffer, int bufferLength) {
+ public static long getMessageTimeStamp(byte[] buffer, int bufferLength) {
// timestamp is at end of the packet
int offset = bufferLength;
long timestamp = 0;
diff --git a/core/java/android/midi/MidiReceiver.java b/media/java/android/media/midi/MidiReceiver.java
index 16c9bbb..64c0c07 100644
--- a/core/java/android/midi/MidiReceiver.java
+++ b/media/java/android/media/midi/MidiReceiver.java
@@ -14,12 +14,12 @@
* limitations under the License.
*/
-package android.midi;
+package android.media.midi;
import java.io.IOException;
/**
- * Interface for receiving data from a MIDI device.
+ * Interface for sending and receiving data to and from a MIDI device.
*
* CANDIDATE FOR PUBLIC API
* @hide
diff --git a/core/java/android/midi/MidiSender.java b/media/java/android/media/midi/MidiSender.java
index 2b7afad..4550476 100644
--- a/core/java/android/midi/MidiSender.java
+++ b/media/java/android/media/midi/MidiSender.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.midi;
+package android.media.midi;
/**
* Interface provided by a device to allow attaching
diff --git a/services/core/java/com/android/server/MidiService.java b/services/core/java/com/android/server/MidiService.java
index 38f1cb8..04911fa 100644
--- a/services/core/java/com/android/server/MidiService.java
+++ b/services/core/java/com/android/server/MidiService.java
@@ -17,10 +17,10 @@
package com.android.server;
import android.content.Context;
-import android.midi.IMidiDeviceServer;
-import android.midi.IMidiListener;
-import android.midi.IMidiManager;
-import android.midi.MidiDeviceInfo;
+import android.media.midi.IMidiDeviceServer;
+import android.media.midi.IMidiListener;
+import android.media.midi.IMidiManager;
+import android.media.midi.MidiDeviceInfo;
import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
diff --git a/services/usb/java/com/android/server/usb/UsbAlsaManager.java b/services/usb/java/com/android/server/usb/UsbAlsaManager.java
index 009d25d..0aa8862 100644
--- a/services/usb/java/com/android/server/usb/UsbAlsaManager.java
+++ b/services/usb/java/com/android/server/usb/UsbAlsaManager.java
@@ -26,7 +26,7 @@ import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbInterface;
import android.media.AudioSystem;
import android.media.IAudioService;
-import android.midi.MidiDeviceInfo;
+import android.media.midi.MidiDeviceInfo;
import android.os.FileObserver;
import android.os.Bundle;
import android.os.IBinder;
diff --git a/services/usb/java/com/android/server/usb/UsbDeviceManager.java b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
index be115b2..43c7336 100644
--- a/services/usb/java/com/android/server/usb/UsbDeviceManager.java
+++ b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
@@ -31,7 +31,6 @@ import android.database.ContentObserver;
import android.hardware.usb.UsbAccessory;
import android.hardware.usb.UsbManager;
import android.media.AudioManager;
-import android.midi.MidiDeviceInfo;
import android.os.FileUtils;
import android.os.Handler;
import android.os.Looper;
diff --git a/services/usb/java/com/android/server/usb/UsbMidiDevice.java b/services/usb/java/com/android/server/usb/UsbMidiDevice.java
index 396ed38..e17abc0 100644
--- a/services/usb/java/com/android/server/usb/UsbMidiDevice.java
+++ b/services/usb/java/com/android/server/usb/UsbMidiDevice.java
@@ -17,12 +17,12 @@
package com.android.server.usb;
import android.content.Context;
-import android.midi.MidiDeviceInfo;
-import android.midi.MidiDeviceServer;
-import android.midi.MidiManager;
-import android.midi.MidiPort;
-import android.midi.MidiReceiver;
-import android.midi.MidiSender;
+import android.media.midi.MidiDeviceInfo;
+import android.media.midi.MidiDeviceServer;
+import android.media.midi.MidiManager;
+import android.media.midi.MidiPort;
+import android.media.midi.MidiReceiver;
+import android.media.midi.MidiSender;
import android.os.Bundle;
import android.system.ErrnoException;
import android.system.Os;