USB 호스트 및 액세서리 개요

Android는 두 가지 모드, 즉 USB 액세서리 및 USB 호스트 모드를 통해 다양한 USB 주변기기 및 Android USB 액세서리(Android 액세서리 프로토콜을 구현하는 하드웨어)를 지원합니다. USB 액세서리 모드에서 외부 USB 하드웨어는 USB 호스트 역할을 합니다. 액세서리의 예로는 로봇 컨트롤러, 도킹 스테이션, 진단 및 음악 장비, 키오스크, 카드 리더 등이 있습니다. 이러한 액세서리를 통해 호스트 기능이 없는 Android 지원 기기에서 USB 하드웨어와 상호작용할 수 있습니다. Android USB 액세서리는 Android 지원 기기와 함께 작동하도록 설계되어야 하며 Android 액세서리 통신 프로토콜을 준수해야 합니다. USB 호스트 모드에서 Android 지원 기기는 호스트 역할을 합니다. 기기의 예로는 디지털 카메라, 키보드, 마우스 및 게임 컨트롤러가 있습니다. 광범위한 애플리케이션 및 환경을 위해 설계된 USB 기기는 기기와 적절하게 통신할 수 있는 Android 애플리케이션과 계속 상호작용할 수 있습니다.

그림 1은 두 모드의 차이점을 보여줍니다. Android 지원 기기는 호스트 모드일 때 USB 호스트 역할을 하며 버스에 전원을 공급합니다. Android 지원 기기가 USB 액세서리 모드일 때 연결된 USB 하드웨어(여기서는 Android USB 액세서리)는 호스트 역할을 하고 버스에 전원을 공급합니다.

그림 1. USB 호스트 및 액세서리 모드

USB 액세서리 및 호스트 모드는 Android 3.1(API 레벨 12) 이상 플랫폼에서 직접 지원됩니다. 또한 USB 액세서리 모드는 부가기능 라이브러리로서 Android 2.3.4(API 레벨 10)로 백포팅되어 광범위한 기기를 지원할 수도 있습니다. 기기 제조업체에서는 기기의 시스템 이미지에 부가기능 라이브러리를 포함할지 여부를 선택할 수 있습니다.

참고: USB 호스트 및 액세서리 모드 지원은 궁극적으로 플랫폼 수준과 관계없이 기기의 하드웨어에 따라 달라집니다. <uses-feature> 요소를 통해 USB 호스트 및 액세서리를 지원하는 기기를 필터링할 수 있습니다. 자세한 내용은 USB 액세서리호스트 문서를 참조하세요.

디버그 고려사항

USB 액세서리 또는 호스트 기능을 사용하는 애플리케이션을 디버깅할 때는 대부분 Android 지원 기기에 USB 하드웨어가 연결되어 있을 가능성이 높습니다. 이렇게 하면 USB를 통한 Android 지원 기기로의 adb 연결을 방지할 수 있습니다. 그러나 네트워크 연결을 통해 adb에 계속 액세스할 수 있습니다. 네트워크 연결을 통해 adb를 사용 설정하려면 다음 단계를 따르세요.

  1. USB를 통해 Android 지원 기기를 컴퓨터에 연결합니다.
  2. SDK platform-tools/ 디렉터리에서 명령 프롬프트에 adb tcpip 5555를 입력합니다.
  3. adb connect <device-ip-address>:5555를 입력합니다. 이제 Android 지원 기기에 연결되었으므로 adb logcat과 같은 일반적인 adb 명령을 실행할 수 있습니다.
  4. 기기가 USB를 수신 대기하도록 설정하려면 adb usb를 입력합니다.