Я пытаюсь подключить Android и Arduino UNO с помощью Android USB Host API.Я обнаружил устройство, используя intent-filter
.Я получаю соответствующие UsbInterface
и UsbEndpoint
.Все выглядит нормально, пока я не попытаюсь открыть UsbDeviceConnection
, , который всегда завершается ошибкой, несмотря на то, что ему предоставлены разрешения .В чем причина?
Фрагмент ниже:
@Override
protected void onResume() {
super.onResume();
usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
Intent intent = getIntent();
String action = intent.getAction();
if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
}
}
public boolean connect(UsbDevice device){
[...] // search for appropriate interfaces/endpoints
Log.i(TAG, "usbInEndpoint = " + usbInEndpoint.toString());
Log.i(TAG, "usbOutEndpoint = " + usbOutEndpoint.toString());
Log.i(TAG, "usbInterface = " + usbInterface.toString());
Log.i(TAG, "permission = " + usbManager.hasPermission(device));
usbDeviceConnection = usbManager.openDevice(device);
Log.i(TAG, "usbDeviceConnection = " + usbDeviceConnection));
[...]
}
Выдержка из Logcat ниже:
usbInEndpoint = UsbEndpoint[mAddress=131,mAttributes=2,mMaxPacketSize=64,mInterval=1]
usbOutEndpoint = UsbEndpoint[mAddress=4,mAttributes=2,mMaxPacketSize=64,mInterval=1]
usbInterface = UsbInterface[mId=1,mAlternateSetting=0,mName=null,mClass=10,mSubclass=0,mProtocol=0,mEndpoints=[
UsbEndpoint[mAddress=4,mAttributes=2,mMaxPacketSize=64,mInterval=1]
UsbEndpoint[mAddress=131,mAttributes=2,mMaxPacketSize=64,mInterval=1]]
permission = true
D/UsbService: openDevice(/dev/bus/usb/001/002) : HostAPI is restricted
usbDeviceConnection = null
РЕДАКТИРОВАТЬ
Я редактировал вопрос иИзвлечение Logcat, потому что я заметил, что UsbService регистрирует, что «Host API ограничен» после того, как я позвонил opendevice, так что я думаю, что это своего рода настройка безопасности устройства.Как это проверить?Я использую Samsung A8