将USB设备连接到Android

时间:2013-11-15 07:38:39

标签: android usb mouse hardware host

我需要将USB设备连接到nexus 10.设备实现鼠标接口(不是真正的鼠标,但它使用鼠标接口传输数据,这就是我的客户构建设备的方式)。

我无法在应用程序中捕获鼠标原始USB传输,我将为我的Nexus 10构建自定义ROM。我的问题是 - 我可以避免吗?我可以以某种方式从Android访问鼠标原始事件吗?

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

如果设备已正确实施,您应通过常规渠道接收输入事件。在设备上没有任何细节,很难说出可能出现的问题。

您可以使用InputManager收集一些信息。可能是设备需要configuration file,或者最糟糕的是它自己的驱动程序(您无法轻易提供)。

答案 1 :(得分:0)

我设法最终检测到了设备(问题出现在我的代码中)。这是固定代码:

BroadcastReceiver mUsbReceiver = new BroadcastReceiver(){

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);


        String message = "action:"+action+" device:"+device.getProductId()+" Vendor:"+device.getVendorId();

        Toast.makeText(MainActivity.this, message, 3000).show();    

        if(device.getVendorId()==LEVITICUS_VENDOR_ID)
        {
            if(action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED))
            {
                handleDeviceAttached(device);
            }
            if(action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED))
            {
                handleDeviceDettached(device);
            }
        }
    }
};

private void registerUsbReceiver() {
    IntentFilter filter = new IntentFilter();
    filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
    filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
    registerReceiver(mUsbReceiver, filter);     
}