diff options
author | 2023-10-16 20:30:36 +0000 | |
---|---|---|
committer | 2023-10-16 20:30:36 +0000 | |
commit | fb7046244b127b446d5f5bc714879aa57eec4071 (patch) | |
tree | 60d64be43f18dcff762eab8b03da93a3de8194e0 | |
parent | e2129d1dfdbc02503e0248b0b0a9ec564419029d (diff) | |
parent | 50c3abc13a04d2a1762411c08f0aa38ffbbd04ca (diff) |
Merge "MIDI: Flag virtual UMP" into main
-rw-r--r-- | AconfigFlags.bp | 1 | ||||
-rw-r--r-- | core/api/current.txt | 16 | ||||
-rw-r--r-- | media/java/android/media/midi/MidiUmpDeviceService.java | 12 | ||||
-rw-r--r-- | services/midi/Android.bp | 3 | ||||
-rw-r--r-- | services/midi/java/com/android/server/midi/MidiService.java | 8 |
5 files changed, 32 insertions, 8 deletions
diff --git a/AconfigFlags.bp b/AconfigFlags.bp index 36430b6a215d..605ce22e1aae 100644 --- a/AconfigFlags.bp +++ b/AconfigFlags.bp @@ -47,6 +47,7 @@ aconfig_srcjars = [ ":android.credentials.flags-aconfig-java{.generated_srcjars}", ":android.view.contentprotection.flags-aconfig-java{.generated_srcjars}", ":android.service.voice.flags-aconfig-java{.generated_srcjars}", + ":aconfig_midi_flags_java_lib{.generated_srcjars}", ":android.service.autofill.flags-aconfig-java{.generated_srcjars}", ":com.android.net.flags-aconfig-java{.generated_srcjars}", ] diff --git a/core/api/current.txt b/core/api/current.txt index 69a3cb35fa61..f6564ecdbec0 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -25787,15 +25787,15 @@ package android.media.midi { method public abstract void onDisconnect(android.media.midi.MidiReceiver); } - public abstract class MidiUmpDeviceService extends android.app.Service { + @FlaggedApi("com.android.media.midi.flags.virtual_ump") public abstract class MidiUmpDeviceService extends android.app.Service { ctor public MidiUmpDeviceService(); - method @Nullable public final android.media.midi.MidiDeviceInfo getDeviceInfo(); - method @NonNull public final java.util.List<android.media.midi.MidiReceiver> getOutputPortReceivers(); - method @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent); - method public void onClose(); - method public void onDeviceStatusChanged(@NonNull android.media.midi.MidiDeviceStatus); - method @NonNull public abstract java.util.List<android.media.midi.MidiReceiver> onGetInputPortReceivers(); - field public static final String SERVICE_INTERFACE = "android.media.midi.MidiUmpDeviceService"; + method @FlaggedApi("com.android.media.midi.flags.virtual_ump") @Nullable public final android.media.midi.MidiDeviceInfo getDeviceInfo(); + method @FlaggedApi("com.android.media.midi.flags.virtual_ump") @NonNull public final java.util.List<android.media.midi.MidiReceiver> getOutputPortReceivers(); + method @FlaggedApi("com.android.media.midi.flags.virtual_ump") @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent); + method @FlaggedApi("com.android.media.midi.flags.virtual_ump") public void onClose(); + method @FlaggedApi("com.android.media.midi.flags.virtual_ump") public void onDeviceStatusChanged(@NonNull android.media.midi.MidiDeviceStatus); + method @FlaggedApi("com.android.media.midi.flags.virtual_ump") @NonNull public abstract java.util.List<android.media.midi.MidiReceiver> onGetInputPortReceivers(); + field @FlaggedApi("com.android.media.midi.flags.virtual_ump") public static final String SERVICE_INTERFACE = "android.media.midi.MidiUmpDeviceService"; } } diff --git a/media/java/android/media/midi/MidiUmpDeviceService.java b/media/java/android/media/midi/MidiUmpDeviceService.java index bbbe7f683b05..c54bfce840aa 100644 --- a/media/java/android/media/midi/MidiUmpDeviceService.java +++ b/media/java/android/media/midi/MidiUmpDeviceService.java @@ -16,6 +16,9 @@ package android.media.midi; +import static com.android.media.midi.flags.Flags.FLAG_VIRTUAL_UMP; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Service; @@ -54,9 +57,11 @@ import java.util.List; * android:resource="@xml/device_info" /> * </service></pre> */ +@FlaggedApi(FLAG_VIRTUAL_UMP) public abstract class MidiUmpDeviceService extends Service { private static final String TAG = "MidiUmpDeviceService"; + @FlaggedApi(FLAG_VIRTUAL_UMP) public static final String SERVICE_INTERFACE = "android.media.midi.MidiUmpDeviceService"; private IMidiManager mMidiManager; @@ -75,6 +80,7 @@ public abstract class MidiUmpDeviceService extends Service { } }; + @FlaggedApi(FLAG_VIRTUAL_UMP) @Override public void onCreate() { mMidiManager = IMidiManager.Stub.asInterface( @@ -112,6 +118,7 @@ public abstract class MidiUmpDeviceService extends Service { * The number of input and output ports must be equal and non-zero. * @return list of MidiReceivers */ + @FlaggedApi(FLAG_VIRTUAL_UMP) public abstract @NonNull List<MidiReceiver> onGetInputPortReceivers(); /** @@ -120,6 +127,7 @@ public abstract class MidiUmpDeviceService extends Service { * The number of input and output ports must be equal and non-zero. * @return the list of MidiReceivers */ + @FlaggedApi(FLAG_VIRTUAL_UMP) public final @NonNull List<MidiReceiver> getOutputPortReceivers() { if (mServer == null) { return new ArrayList<MidiReceiver>(); @@ -132,6 +140,7 @@ public abstract class MidiUmpDeviceService extends Service { * Returns the {@link MidiDeviceInfo} instance for this service * @return the MidiDeviceInfo of the virtual MIDI device if it was successfully created */ + @FlaggedApi(FLAG_VIRTUAL_UMP) public final @Nullable MidiDeviceInfo getDeviceInfo() { return mDeviceInfo; } @@ -140,6 +149,7 @@ public abstract class MidiUmpDeviceService extends Service { * Called to notify when the {@link MidiDeviceStatus} has changed * @param status the current status of the MIDI device */ + @FlaggedApi(FLAG_VIRTUAL_UMP) public void onDeviceStatusChanged(@NonNull MidiDeviceStatus status) { } @@ -147,9 +157,11 @@ public abstract class MidiUmpDeviceService extends Service { * Called to notify when the virtual MIDI device running in this service has been closed by * all its clients */ + @FlaggedApi(FLAG_VIRTUAL_UMP) public void onClose() { } + @FlaggedApi(FLAG_VIRTUAL_UMP) @Override public @Nullable IBinder onBind(@NonNull Intent intent) { if (SERVICE_INTERFACE.equals(intent.getAction()) && mServer != null) { diff --git a/services/midi/Android.bp b/services/midi/Android.bp index 5adcfbaf432e..4b5f8a7bf0ac 100644 --- a/services/midi/Android.bp +++ b/services/midi/Android.bp @@ -19,4 +19,7 @@ java_library_static { defaults: ["platform_service_defaults"], srcs: [":services.midi-sources"], libs: ["services.core"], + static_libs: [ + "aconfig_midi_flags_java_lib", + ], } diff --git a/services/midi/java/com/android/server/midi/MidiService.java b/services/midi/java/com/android/server/midi/MidiService.java index a8902fcf77af..2f47cc7160b7 100644 --- a/services/midi/java/com/android/server/midi/MidiService.java +++ b/services/midi/java/com/android/server/midi/MidiService.java @@ -16,6 +16,8 @@ package com.android.server.midi; +import static com.android.media.midi.flags.Flags.virtualUmp; + import android.Manifest; import android.annotation.NonNull; import android.annotation.RequiresPermission; @@ -1549,6 +1551,12 @@ public class MidiService extends IMidiManager.Stub { return; } + if (!virtualUmp()) { + Log.w(TAG, "Skipping MIDI device service " + serviceInfo.packageName + + ": virtual UMP flag not enabled"); + return; + } + Bundle properties = null; int numPorts = 0; boolean isPrivate = false; |