首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在应用程序打开后重新连接之前,USB设备不可用

在应用程序打开后重新连接之前,USB设备不可用
EN

Stack Overflow用户
提问于 2019-08-08 22:49:07
回答 1查看 32关注 0票数 0

因此,为了缓解每次启动应用程序时都必须授予权限的问题,我关注了this answer

因此,我设置了设备筛选器

代码语言:javascript
复制
<resources>
    <usb-device vendor-id="1234" product-id="5678" />
</resources>

清单中的活动

代码语言:javascript
复制
    <activity
        android:name=".demo.Activity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/title_demo"
        android:theme="@style/FullscreenTheme">
        <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/usb_device_filter" />
    </activity>

然后在我的java文件中

代码语言:javascript
复制
private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver()
{
    public void onReceive(Context context, Intent intent)
    {
        String action = intent.getAction();
        if (ACTION_USB_PERMISSION.equals(action))
        {
            synchronized (this)
            {
                UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
                if(device != null)
                {
                   checkDevice();
                }
            }
        }
    }
};
代码语言:javascript
复制
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
mContext.registerReceiver(mUsbReceiver, filter);

如果我在连接设备的情况下启动应用程序,它不会亮起,设备的应用程序接口也不会与其通信(但是,它会显示在UsbManager.getDeviceList()调用中)

只要我把它拆下来,再插回去,它就能工作了

有没有一种方法可以通过编程“重新连接”设备,或者其他修复方法?谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-08-08 23:27:46

在应用启动时检查设备列表中是否存在设备。

代码语言:javascript
复制
UsbManager manager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
Iterator devices = manager.getDeviceList().entrySet().iterator();
while (devices.hasNext()) {
    Map.Entry pair = (Map.Entry) devices.next();
    Log.i(TAG, pair.getKey() + " = " + pair.getValue());

    UsbDevice device = (UsbDevice) pair.getValue();
    Log.i(TAG, "UsbDevice: " + device.toString());
    if(device.getVendorId() == 1234 && device.getProductId() == 5678) {

    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57415341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档