code: public void selectController(ICursorControllerSelectListener listener)
      {
          if ((mEnabledControllerTypes == null) || (mEnabledControllerTypes.size() == 0))
          {
              mEnabledControllerTypes = new ArrayList<GVRControllerType> (Arrays.asList(GVRControllerType.GAZE, GVRControllerType.CONTROLLER));
              scanDevices();
          }
          GVRInputManager.SingleControllerSelector
                  selector = new GVRInputManager.SingleControllerSelector(context, mEnabledControllerTypes);
          getEventReceiver().addListener(selector);
          getEventReceiver().addListener(listener);
          scanControllers();
      }
docs: Select an input controller based on the list of controller types in gvr.xml.
  The list is in priority order with the highest priority controller last.
  If you call this function and no controllers are specified in gvr.xml
  it will default to "gaze,controller" (Gear controller first, then Gaze).
  <p>
  The "onCursorControllerSelected" event is emitted when
  a cursor controller is chosen. The controller chosen is
  the highest priority controller available when the call is made.
  <p>
  If a higher priority controller is connected afterwards,
  the input manager switches to using the new controller
  and "onCursorControllerSelected" is emitted again.
  @param listener     listens for onCursorControllerSelected events.
  @see ICursorControllerSelectListener
  @see org.gearvrf.io.GVRInputManager.ICursorControllerSelectListener
  @see #scanControllers()