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
This commit is contained in:
Zoran Jovanovic
2015-11-04 14:00:03 +01:00
parent 33ead118a8
commit 81ec094554

View File

@@ -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) {