android.hardware.usb.UsbDevice#getConfiguration ( )源码实例Demo

下面列出了android.hardware.usb.UsbDevice#getConfiguration ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: citra_android   文件: Java_WiimoteAdapter.java
public static boolean OpenAdapter()
{
  // If the adapter is already open. Don't attempt to do it again
  if (usb_con != null && usb_con.getFileDescriptor() != -1)
    return true;

  HashMap<String, UsbDevice> devices = manager.getDeviceList();
  for (Map.Entry<String, UsbDevice> pair : devices.entrySet())
  {
    UsbDevice dev = pair.getValue();
    if (dev.getProductId() == NINTENDO_WIIMOTE_PRODUCT_ID &&
            dev.getVendorId() == NINTENDO_VENDOR_ID)
    {
      if (manager.hasPermission(dev))
      {
        usb_con = manager.openDevice(dev);
        UsbConfiguration conf = dev.getConfiguration(0);

        Log.info("Number of configurations: " + dev.getConfigurationCount());
        Log.info("Number of Interfaces: " + dev.getInterfaceCount());
        Log.info("Number of Interfaces from conf: " + conf.getInterfaceCount());

        // Sometimes the interface count is returned as zero.
        // Means the device needs to be unplugged and plugged back in again
        if (dev.getInterfaceCount() > 0)
        {
          for (int i = 0; i < MAX_WIIMOTES; ++i)
          {
            // One interface per Wii Remote
            usb_intf[i] = dev.getInterface(i);
            usb_con.claimInterface(usb_intf[i], true);

            // One endpoint per Wii Remote. Input only
            // Output reports go through the control channel.
            usb_in[i] = usb_intf[i].getEndpoint(0);
            Log.info("Interface " + i + " endpoint count:" + usb_intf[i].getEndpointCount());
          }
          return true;
        }
        else
        {
          // XXX: Message that the device was found, but it needs to be unplugged and plugged back in?
          usb_con.close();
        }
      }
    }
  }
  return false;
}
 
源代码2 项目: citra_android   文件: Java_GCAdapter.java
public static boolean OpenAdapter()
{
  HashMap<String, UsbDevice> devices = manager.getDeviceList();
  for (Map.Entry<String, UsbDevice> pair : devices.entrySet())
  {
    UsbDevice dev = pair.getValue();
    if (dev.getProductId() == 0x0337 && dev.getVendorId() == 0x057e)
    {
      if (manager.hasPermission(dev))
      {
        usb_con = manager.openDevice(dev);

        Log.info("GCAdapter: Number of configurations: " + dev.getConfigurationCount());
        Log.info("GCAdapter: Number of interfaces: " + dev.getInterfaceCount());

        if (dev.getConfigurationCount() > 0 && dev.getInterfaceCount() > 0)
        {
          UsbConfiguration conf = dev.getConfiguration(0);
          usb_intf = conf.getInterface(0);
          usb_con.claimInterface(usb_intf, true);

          Log.info("GCAdapter: Number of endpoints: " + usb_intf.getEndpointCount());

          if (usb_intf.getEndpointCount() == 2)
          {
            for (int i = 0; i < usb_intf.getEndpointCount(); ++i)
              if (usb_intf.getEndpoint(i).getDirection() == UsbConstants.USB_DIR_IN)
                usb_in = usb_intf.getEndpoint(i);
              else
                usb_out = usb_intf.getEndpoint(i);

            InitAdapter();
            return true;
          }
          else
          {
            usb_con.releaseInterface(usb_intf);
          }
        }

        final Activity emulationActivity = NativeLibrary.sEmulationActivity.get();
        if (emulationActivity != null)
        {
          emulationActivity.runOnUiThread(() -> Toast.makeText(emulationActivity,
                  "GameCube Adapter couldn't be opened. Please re-plug the device.",
                  Toast.LENGTH_LONG).show());
        }
        else
        {
          Log.warning("Cannot show toast for GameCube Adapter failure.");
        }
        usb_con.close();
      }
    }
  }
  return false;
}