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

Commit 81ec0945 authored by Zoran Jovanovic's avatar Zoran Jovanovic
Browse files

Don't show MIDI USB option if not supported

If device doesn't support MIDI, don't show MIDI in "Use USB for" menu
when USB cable is connected.
(Selecting MIDI will crash the Settings app.)

Change-Id: I60f4cbb6357f162fecb574cdb6766cf5ed92e78e
parent 33ead118
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.deviceinfo;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.hardware.usb.UsbManager;
import android.hardware.usb.UsbPort;
import android.hardware.usb.UsbPortStatus;
@@ -36,6 +37,7 @@ public class UsbBackend {
    public static final int MODE_DATA_MIDI   = 0x03 << 1;

    private final boolean mRestricted;
    private final boolean mMidi;

    private UserManager mUserManager;
    private UsbManager mUsbManager;
@@ -53,6 +55,8 @@ public class UsbBackend {
        mUsbManager = context.getSystemService(UsbManager.class);

        mRestricted = mUserManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER);
        mMidi = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_MIDI);

        UsbPort[] ports = mUsbManager.getPorts();
        // For now look for a connected port, in the future we should identify port in the
        // notification and pick based on that.
@@ -135,6 +139,11 @@ public class UsbBackend {
            // No USB data modes are supported.
            return false;
        }

        if (!mMidi && (mode & MODE_DATA_MASK) == MODE_DATA_MIDI) {
            return false;
        }

        if (mPort != null) {
            int power = modeToPower(mode);
            if ((mode & MODE_DATA_MASK) != 0) {