code: public List<IoDevice> getAvailableIoDevices() {
          List<IoDevice> returnList = new ArrayList<IoDevice>();
          for (PriorityIoDeviceTuple compatibleIoDeviceTuple : mCompatibleDevices) {
              IoDevice compatibleIoDevice = compatibleIoDeviceTuple.getIoDevice();
              if (compatibleIoDevice.equals(mIODevice)) {
                  returnList.add(mIODevice);
              } else {
                  IoDevice ioDevice = mCursorManager.getIoDevice(compatibleIoDevice);
                  if (ioDevice != null) {
                      returnList.add(ioDevice);
                  }
              }
          }
          return returnList;
      }
docs: Get a list of currently available {@link IoDevice}s to use with the {@link Cursor}. The
  {@link Cursor} defines a list of compatible {@link IoDevice}s in the settings.xml. This
  method returns a subset from the compatible list of {@link IoDevice}s that are available to
  the framework and not being used by any other cursor. This list is sorted in order
  of priority with highest priority devices first.
  
  @return a list of available {@link IoDevice}.