我正在开发一些应用程序,它使用媒体传输协议从连接到我的Android平板电脑USB主机(Android 3.1,Acer Iconia Tab A500)的相机中读取照片。
我找到了一些描述如何使用USB的教程,我从USB摄像头复制到SD卡已经正常工作。
我只有一个问题:所有教程都等待USB_DEVICE_ATTACHED-Intent,然后打开一个UsbDeviceConnection,用于与Intents Bundle中发送的设备进行通信。
所以我希望能够手动启动访问USB的活动 - 没有收到这个意图。 现在的问题是,我不能像这样打开USB连接
UsbDeviceConnection usbDeviceConnection = usbManager.openDevice(usbDevice);
它只返回null。 如果我重新插入设备并选择我的Activity作为Intent接收器,它可以正常工作。 我认为这必须是因为IntentReceiver在USB设备上拥有一些独占权限。
My Manifest看起来像这样:
<activity
android:name=".ImageActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
</activity>
一个例子:如果用户将Galery设置为USB设备的默认值,该怎么办?在这种情况下如何访问USB设备?
答案 0 :(得分:2)
我发现USB主机模式API指南文档在这方面非常有用。
http://developer.android.com/guide/topics/connectivity/usb/host.html#discovering-d
最重要的一点是,如果您没有收到某项活动的UsbDevice,那么您需要获得与之通信的权限。此过程在提供的链接中进行了描述。