TV 와 휴대폰은 다릅니다. TV 는 휴대폰에 비해 화면이 훨씬 크지만, 화면에 표시되어야 하는 내용은 훨씬 적습니다. TV 에서는 마우스나 키보드 혹은 터치패드도 일반적으로 사용되는 입력 장치가 아닙니다. 안드로이드 TV 는 사용자가 거실에서 편리하고 안락하게 TV 를 사용할 수 있도록, UX 를 새롭게 구성하고 이를 지원하기 위한 다양한 API 와 라이브러리, 서비스 등을 추가하였습니다. 바로 Leanback 프레임워크 입니다.
Leanback 프레임워크가 적용된 가장 대표적인 앱이 바로 안드로이드 TV 홈 어플리케이션입니다. 사용자가 고민 없이 원하는 미디어를 바로 재생할 수 있도록 “추천" 항목이 가장 먼저 제공되며, 화면 각각의 요소들은 큼직 큼직하고 한 눈에 내용을 파악할 수 있도록 디자인 되어 있습니다. 화면 상의 모든 아이템은 4방향 키패드로 쉽고 빠르게 접근할 수 있고, 복잡한 명령은 음성을 통해 실행할 수 있습니다.
개발자 여러분이 최소한의 노력으로 기존 어플리케이션을 TV 사용자 경험에 맞추어 수정할 수 있도록, LeanbackSupportLibrary 가 지원됩니다. LeanbackSupportLibrary 는 안드로이드 L 개발자 프리뷰 v17 서포트 패키지에 포함되어 있으며, 통일된 사용자 경험을 제공할 수 있도록 Leanback 테마를 비롯하여 각종 리소스와 앱 레이아웃을 쉽게 생성할 수 있는 BrowseFragment, DetailsFragment 와 같은 다양한 위젯과 유틸리티 API 들이 포함되어 있습니다.
안드로이드는 플랫폼 자체적으로 멀티 스크린을 지원하며 개발자 여러분은 폰, 태블릿, TV 에서 모두 잘 동작하는 하나의 앱을 만들 수 있습니다. 다만, 안드로이드 TV 를 지원하는 앱을 확실히 구분하기 위하여, 안드로이드 TV 에서 실행되는 앱은 반드시 LEANBACK_LAUNCHER 라는 새롭게 추가된 인텐트 액션(Intent Action) 를 수신할 수 있는 TV 엑티비티가 하나 이상 메니페스트에 정의되어야 합니다. LeanbackSupportLibrary 및 안드로이드 TV 에서 동작하는 앱을 개발하는 방법에 관한 짤막한 I/O Byte 동영상도 제공되고 있으니, 보다 자세한 내용은 다음 동영상을 참고해 보시면 좋을 것 같습니다.
TV Input Framework
TV 튜너와 케이블 셋탑 박스, 크롬 캐스트, 게임 콘솔 등 다양한 종류의 TV 입력을 하나의 TV 에 연결하여 사용하는 경우가 많습니다. 이런 경우, 사용자는 원하는 컨텐츠를 즐기기 위해 종종 어떤 TV 입력을 선택하고 어떤 리모콘을 사용해야하는지 고민하는 경우가 많이 있습니다.
이런 문제를 해결하기 위해, 안드로이드 TV 에는 안테나를 통한 실시간 방송, HDMI 입력, 스트리밍 미디어등 다양한 TV 입력을 통합적으로 관리할 수 있는 TV Input Framework (TIF) 와 TV 입력의 종류와는 관계없이 이를 재생할 수 있는 TV 앱이 포함되어 있습니다.
TIF 를 통해 다양한 종류의 TV 입력은 각각 하나의 TV Input Service 로 표현되고 앱 형태로 배포될 수 있습니다. TV 앱은 TV Input Manager 가 제공하는 추상화된 인터페이스를 이용하여 다양한 종류의 TV 입력들을 일관된 방법으로 접근할 수 있으며, 사용자는 TV 앱을 통해 단일한 형식으로 라이브 튜너, HDMI, 스트리밍 미디어등 하드웨어 / 소프트웨어 구분 없이 모든 종류의 컨텐츠를 사용할 수 있습니다.
다시 말해, 개발자 여러분은 특정 미디어를 재생하기 위한 가상의 TV 입력을 TV Input Service 형태로 구현하고, 이를 앱으로 만들어 Google Play 를 통해 배포할 수 있습니다. 사용자가 마켓에서 앱을 다운받아 설치하면 TV Input Manager 에 여러분이 구현한 TV Input Service 가 등록되며, 사용자는 TV 앱을 통해 여러분의 미디어를 시청할 수 있게 됩니다. 개발자 여러분이 InputMethodService 를 확장한 키보드 앱을 작성하여 마켓에 이를 배포할 수 있고, 사용자는 자신이 원하는 형태의 키보드앱을 다운 받아 설치하면, 특정 키보드앱을 실행하지 않고도 언제든지 해당 키보드를 사용할 수 있는 것과 유사합니다.
Games
안드로이드 TV 는 거실에서 느긋이 앉아 큰 화면으로 게임을 즐기는데도 괜찮은 플랫폼이 될 수 있습니다. 안드로이드 L 버전 부터 안드로이드 플랫폼 자체적으로 높은 수준의 게임을 개발하는데 필요한 다양한 기능을 추가적으로 지원합니다. OpenGL ES 3.1 이 지원되며, 컴퓨트 쉐이더(compute shader), 스텐실 텍스처(stencil texture), 텍스처 개더(texture gather) 기능 등이 지원됩니다. 또한 데스크톱 수준의 그래픽을 모바일에서 구현할 수 있도록, 새롭게 추가되는 Android Extension Pack (AEP) 에는 GPU 상에서 테셀레이션 (tessellation), 지오메트리 쉐이더(geometry shaders), ASTC 텍스처 압축과 같은 기술들을 사용하기 위한 API 들이 포함되어 있습니다.
또한, 게임 컨트롤러의 버튼이 어떻게 매핑 되어야하는지 표준이 명확히 정의되었습니다. 게임 개발자 여러분은 다양한 게임 컨트롤러에대한 고민 없이 게임 컨트롤러를 지원하는 게임을 만들 수 있게 되었습니다.
마지막으로, 안드로이드 TV 플랫폼 상에서도 안드로이드 Play Game 서비스 를 사용할 수 있습니다. 간편히 사용자 로그인 기능을 비롯하여 리더 보드, 업적 등의 기능을 손 쉽게 제공할 수 있으며, 이번에 새롭게 추가된 퀘스트(완수 시 보상이 주어지는 특정 시간에 기반한 이벤트), Saved Game (게임 데이터, 이미지, 디스크립션을 지원하는 스냅샷 API), 게임 프로파일(게임 플레이어들에게 경험 점수를 제공) 기능 역시 활용하실 수 있습니다. 또한 iOS 기반 디바이스를 포함하여 실시간 / 턴기반 멀티플레이어 기능을 지원합니다. 이를 기반으로 TV 와 태블릿 디바이스 사이의 멀티플레이 기능을 복잡한 서버 측 구현없이 제공할 수 있습니다.
Google Cast
안드로이드 TV 에는 구글의 또 하나의 멀티 스크린을 위한 기술인 Google Cast 기능이 기본으로 제공됩니다. Google Cast 기능을 지원하도록 앱을 개발하신 개발자 분들은 전혀 추가적인 작업이나 노력 없이 더 많은 사용자들을 접할 수 있습니다. 이와 함께 앞으로 L 버전 릴리즈 에서는 현재의 웹앱 형태가 아닌 네이티브 형태의 리시버 앱도 개발할 수 있는 API 와 도구들도 제공될 예정입니다. 이를 이용하면, 안드로이드 TV 상에서는 사용자가 컨텐츠를 TV 로 캐스트 할 경우, 웹 페이지 대신 여러분의 네이티브 앱이 실행 될 수 있게 됩니다. 이 부분은 앞으로 업데이트를 기대해 주시면 좋을 것 같습니다.
안드로이드 TV의 특징들을 간단히 소개해 드렸습니다. 안드로이드 TV 는 이제 막 공개된 플랫폼이며, 실제 안드로이드 TV 가 적용된 디바이스는 올 가을에 처음으로 출시될 예정입니다. 그전까지는 안드로이드 L 개발자 프리뷰 SDK 를 설치하시면, 함께 제공되는 AVD(Android Virtual Device) 매니저를 이용하여, 안드로이드 TV 에뮬레이터를 실행하고 직접 안드로이드 TV 앱 개발을 시작하실 수 있습니다.
개발 관련하여 좀 더 궁금한 점이 있는 분들은 안드로이드 TV 개발자 사이트 와 함께 제공되고 샘플 프로젝트를 참고하시면 좋을 것 같습니다. 또, 안드로이드 TV 관련하여 궁금한점이나 의견이 있으신 분들은 공식 안드로이드 TV 커뮤니티 혹은 GDG Korea Android 커뮤니티에 질문이나 의견을 남겨주시기 바랍니다.
그럼 앞으로 거실 쇼파에 느긋히 앉아 여러분의 멋진 앱을 사용할 순간을 기대하고 있겠습니다.