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 액세서리 또는 호스트 기능을 사용하는 애플리케이션을 디버깅할 때는 USB 하드웨어가 Android 지원 기기에 연결되어 있을 가능성이 큽니다. 이렇게 하면 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를 입력합니다.