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

Commit fb704624 authored by Robert Wu's avatar Robert Wu Committed by Android (Google) Code Review
Browse files

Merge "MIDI: Flag virtual UMP" into main

parents e2129d1d 50c3abc1
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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}",
]
+8 −8
Original line number Diff line number Diff line
@@ -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";
  }
}
+12 −0
Original line number Diff line number Diff line
@@ -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" />
 * &lt;/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) {
+3 −0
Original line number Diff line number Diff line
@@ -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",
    ],
}
+8 −0
Original line number Diff line number Diff line
@@ -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;