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
diff --git a/src/com/android/settings/deviceinfo/UsbBackend.java b/src/com/android/settings/deviceinfo/UsbBackend.java
index 210e0a0..340eba5 100644
--- a/src/com/android/settings/deviceinfo/UsbBackend.java
+++ b/src/com/android/settings/deviceinfo/UsbBackend.java
@@ -18,6 +18,7 @@
 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 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 @@
         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 @@
             // 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) {