혹시 여러분의 안드로이드 앱을 안드로이드 웨어에서도 지원할 수 있도록 하는데 관심이 있으신가요? 안드로이드 TV나 캐스트 지원을 고민하고 계신가요? 크롬앱도 있고 카드보드도 있지요. 이미 개발을 진행하고 계신 분들도 있을 것이고, 무엇을 어디서부터 시작해야 할지 모르는 분들도 계실 텐데 그러한 분들을 위해 구글에서 아래와 같이 다양한 자리들을 마련했습니다!

이 자리에서 여러분은 여러분의 앱을 더욱 다양하고 혁신적인 방법으로 확장하실 수 있는 기술과 전략을 배우고 응용하실 수 있습니다. 다양한 멀티스크린 지원을 조금이라도 생각해 보신 적이 있으시다면 이번 기회를 놓치지 마시기 바랍니다~

저희가 준비한 시간들은 다음과 같습니다. 

8월 18일 월요일(일정이 기존 8월 16일 토요일에서 18일 월요일 저녁으로 변경되었습니다.): 멀티스크린 CodeLab
간단한 샘플 앱에서부터 시작해서 안드로이드 TV, 안드로이드 웨어, 구글 캐스트까지 단계적으로 멀티스크린 지원을 추가하기 위한 실습을 할 수 있는 시간입니다. 안내해 드리는 대로 그냥 따라 하시기만 하면 됩니다. :-)

8월 23일 토요일: 멀티스크린 HackTime
안드로이드 TV, 크롬캐스트 등 개발에 필요한 장비와 환경을 갖추어 드리고, 개발자 여러분들은 자유롭게 개발에 매진하실 수 있는 시간입니다.

8월 25일 월요일: Android Wear Design Sprint
안드로이드 웨어를 가장 안드로이드 웨어답게 만들 수 있는 방법을 구글 본사의 엔지니어들로부터 직접 실습과 함께 배우실 수 있습니다.

8월 30일 토요일: 멀티스크린 해커톤
멀티스크린 지원을 위한 개발 작업을 마무리하기 위한 시간입니다. 오셔서 자유롭게 개발 작업을 진행하시면 됩니다.

9월: 멀티스크린 해커톤 After Hour
멀티스크린 해커톤에 참여하신 개발자 분들과 함께 멀티스크린 지원에 대한 개발 경험과 소감을 함께 나누는 자리입니다. 

행사별로 자세한 사항은 추후 별도로 이곳에서 안내 드리겠습니다.

8월 30일까지 동작하는 데모를 완성하신 모든 분들께 구글 카드보드와 구글 티셔츠를 보내 드립니다. 개별 행사에 모두 참여하지 않으시더라도 문제 없으며, 멀티스크린 지원을 위한 개발에 도움이 되겠다고 판단되는 행사에만 신청하여 주시면 됩니다.

개발자 여러분들께서 이 시간들을 잘 활용하셔서 사용자들에게 새롭고도 혁신적인 경험을 제공하는데 도움이 되어 한국의 많은 개발자 여러분들과 함께 즐겁고 유익한 시간을 보낼 수 있기를 간절히 기원합니다!

- 모든 행사는 구글 코리아 오피스에서 진행되며 기간 중 맛있는 식사와 음료가 무제한으로 제공됩니다.
- 모든 행사에 참석하지 않으셔도 상관 없고, 원하시는 행사에만 참석하셔도 무방하며 경진대회가 아니므로 지금 바로 개발을 진행하셔도 상관 없습니다.
- 8월 30일까지 안드로이드 웨어 지원 데모를 완료하고 9월 내로 Google Play에 출시하기로 약정하시는 스타트업 3곳을 선정하여 안드로이드 웨어 디바이스를 무상으로 제공하여 드립니다.

- 8월 30일 해커톤에 참석하신 경우 해커톤에서 데모를 보여 주시면 되고, 해커톤에 참석하지 않으시는 경우에도 등록만 해 주시면 별도로 보내드릴 이메일을 통해 개발하신 내용에 관한 사항을 알려 주시면 됩니다.
- CodeLab, HackTime, 해커톤 행사 중에는 안드로이드 TV 디바이스와 크롬캐스트를 위한 모니터를 제공하여 드리며, 그외 노트북 등 개발에 필요한 장비는 직접 가지고 오셔야 합니다.
- 좌석 제한이 있으므로 행사별로 신청 인원이 수용 인원을 초과할 경우 신청 내용을 바탕으로 행사별로 참석자를 별도로 선정할 예정입니다.

- 우수한 개발 사례의 경우 추후 구글에서 진행되는 개발자 행사 등에서 별도로 소개하실 수 있는 기회를 드립니다.
- 테스트용으로 급조된 앱이나 태블릿, TV 지원의 경우 단순히 화면 비율만 늘린 경우는 제외합니다.
- 개발에 필요한 자료는 http://developers.google.com , http://googledevkr.blogspot.com , https://developer.android.com/intl/ko/design/ 등을 참고하세요.

구글 멀티스크린 개발자 해커톤 참가 신청!!!

안드로이드 시계 앱은 기본적으로 별도의 프로세스안에서 구동되는 여러 엑티비티로 구성됩니다. 하지만, 이와 동시에 다음과 같이 추가로 처리해야할 일들이 있습니다.

  • 카드 스트림 제어
  • 사용자가 한 눈에 살펴볼 수 있도록 짧은 형태로 카드 표시 (shorter peek card)
  • 대기 모드 (ambient mode) 에서의 시계 표시
  • 배터리와 무음모드 상태 표시 처리

아쉽지만, 지금 당장은 이러한 일들을 처리하기 위한 공식 API 가 제공되지 않고 있기 때문에, 올바르게 동작하는 안드로이드 웨어 시계 앱을 만드는데는 많은 어려움이 있습니다.

구글은 개발자 여러분이 가능한 간단한 방법으로 다양한 디바이스에서 잘 동작하고, 배터리 사용을 최소화 하며, 사용자의 카드 스트림을 잘 표현할 수 있는 멋진 시계 앱을 만들 수 있도록 지원하려고 노력하고 있습니다. 이러한 변화 중 몇 가지는 올 하반기 안드로이드 L 정식 버전과 함께 공개될 예정입니다. 

그럼 지금 당장은 어떻게 하는게 좋을까요? 말씀드린 것 처럼, 구글 내부에서 관련된 API 를 마무리 하고 정식으로 공개하기 위해 노력하고 있기 때문에, 그 전까지는 Google Play 에 안드로이드 웨어 시계 앱을 출시하지 말고 출시 일정을 연기하는 것을 권장 드립니다. 대신 개발자 콘솔의 알파/베터 테스트 기능을 이용해 개발하고 계신 앱을 테스트 하시면 좋을 것 같습니다. 

첫째로, 공식 API 는 조만간 공개될 예정이며, 개발자 여러분은 훨씬 쉽게 안드로이드 웨어 시계 앱을 만드실 수 있을 것 입니다. 또한, 현재 버전에 존재하는 비공개 API 들은 다음 버전의 안드로이드 웨어 플랫폼에서는 호환되지 않을 수 있고, 이로 인해 여러분의 시계 앱을 사용하고 있는 사용자들이 혼란을 겪을 수도 있습니다.

아쉽지만, 여러분의 반짝이는 아이디어를 조금 만 더 간직하고 계시다가, 정식 API 공개와 함께 멋진 시계 앱들을 만들어 주시길 기대하고 있겠습니다. 그외 안드로이드 웨어 개발에 관해 궁금한 점이 있으신 분들은 안드로이드 웨어 공식 개발자 커뮤니티GDG Korea Android 커뮤니티를 방문해 의견을 남겨주시기 바랍니다.



구글은 작은 시계부터 커다란 TV까지 다양한 종류의 디바이스와 화면 크기를 아우를 수 있는 디자인이 필요했습니다. 때문에, 다양한 플랫폼에 일관되게 적용될 수 있는 통일된 디자인 가이드라인을 만들었고, 그 결과, 머티리얼 디자인은 안드로이드 웨어 (Android Wear) 와 안드로이드 TV (Android TV) 그리고 안드로이드 오토 (Android Auto) 에 모두 적용되었습니다. 지난 구글 I/O 에서 머티리얼 디자인의 프리뷰라고 할 수 있는 첫번째 버전이 공개되었고, 구글 디자인 사이트를 방문하시면 자세한 내용을 확인해보실 수 있습니다.

안드로이드에서 머리티얼 디자인 적용하기

안드로이드 L 개발자 프리뷰 버전의 주요 내용 중 하나는 바로 머티리얼 디자인입니다. 여러분의 앱에 새로운 스타일을 적용할 수 있도록 머티리얼 테마가 추가되었고, 이를 활용해 손쉽게 여러분의 고유한 브랜드 색상을 자연스럽게 앱에 녹여낼 수 있습니다. 또한 새로운 위젯들과 엑티비티 전환 애니매이션을 위한 프레임워크, 움직이는 터치 피드백 기능등도 함께 추가되었습니다. 또한, 각 뷰의 깊이 값 (Elevation) 을 설정할 수 있도록 추가되었는데, 이를 통해 UI 요소들을 화면 상에 띄우고 동적으로 적절한 그림자를 표현할 수 있습니다.



웹에서 머티리얼 디자인 적용하기

작년 I/O 에서 구글은 다음 세대의 웹을 위한 UI 툴킷을 노리는 야심찬 폴리머 (Polymer) 프로젝트를 공개했습니다. 개발자 여러분은 폴리머를 이용해 웹상에서도 만질 수 있을 것 같은 디자인 요소들, 과감하고 선명한 그래픽 디자인, 부드러운 애니매이션 효과 등 머티리얼 디자인의 핵심 요소들을 손쉽게 활용하실 수 있습니다.


머티리얼 디자인에 관해 더 궁금한점이 있는 분들은 구글의 머티리얼 디자인 가이드라인을 살펴보시기 바랍니다. 또한, 머티리얼 디자인은 계속해서 발전하고 있기 때문에, 공식 +Google Design 커뮤니티에 가입해 최신 소식이나 정보를 확인하실 수 있습니다.

<screen android:screenSize="normal" android:screenDensity="640" />
<screen android:screenSize="large" android:screenDensity="640" />
<screen android:screenSize="xlarge" android:screenDensity="640" />


<use-sdk>


어플리케이션이 어떤 버전의 안드로이드 플랫폼과 호환되는지 API 레벨 값을 이용하여 정의할 수 있습니다. 다음과 같은 세 가지 속성이 사용됩니다.

android:minSdkVersion

어플리케이션 실행에 요구되는 최소 API 레벨을 지정합니다. 지정된 값 보다 타겟 디바이스의 프레임워크 API 레벨이 더 낮은 경우, 해당 디바이스에는 앱이 설치되지 않으며 동시에 Google Play 에서 해당 앱을 검색하거나 설치할 수 없습니다. 현재, 안드로이드 시스템 API 레벨별 점유율 정보는 개발자 문서 중 안드로이드 대시보드 항목에서 확인할 수 있습니다.


android:targetSdkVersion

앱이 개발 될 때 사용되고 테스트 된 가장 최신 버전의 API 레벨을 지정하는데 사용합니다. 이 속성 값은 Google Play 를 통한 검색이나 앱 설치 가능 여부에는 영향을 미치지 않습니다. 대신, 여러분의 앱이 어떤 버전의 안드로이드 플랫폼을 타켓으로 개발되고 테스트 되었는지 알려주는 역할을 하며, 안드로이드 시스템은 해당 값을 기반으로 필요한 경우 하위 호환 기능을 적용합니다.


Screenshot_2014-02-26-10-04-07.png
targetSDKVersion < 11
Screenshot_2014-02-26-10-03-46.png
targetSDKVersion >= 11
   














예를 들어 API 레벨 11 이 후 부터는 Holo 테마가 기본 시스템 테마로 변경되었습니다. 하지만, 위 그림에서 처럼 메니페스트 상의 targetSdkVersion 속성 값이 11 보다 작다면, Holo 테마가 아닌 이전 버전의 테마가 적용됩니다. 이 외에도 AsyncTask 의 동작 방식 등, targetSdkVersion 값에 따라 API 가 동작하는 방식이 달라지는 경우가 있습니다. 보다 자세한 내용은 개발자 문서의 Build.VERSION_CODES 항목을 참고하시기 바랍니다. 기본적으로, 최신 안드로이드 플랫폼의 기능을 모두 활용하고, 디바이스 사용자에게 일관된 사용자 경험을 제공할 수 있도록 targetSdkVersion 값은 적절한 테스트 후 항상 최신 API 레벨 값으로 설정하는 것이 권장됩니다.


android:maxSdkVersion

여러분의 앱이 특정 버전 이하의 안드로이드 플랫폼에서만 동작하는 경우, maxSdkVersion 속성을 사용해 특정 버전 이상의 안드로이드 플랫폼에서는 앱이 설치되지 않도록 제한할 수 있습니다. 다만, 안드로이드는 기본적으로 버전이 업데이트 되더라도 하위 호환성이 유지되기 때문에 대부분의 경우 개발자 여러분은 이 속성 값을 사용할 필요가 없습니다.

<uses-feature>


어플리케이션에서 필요로 하는 특정 하드웨어 혹은 소프트웨어 기능을 선언하는데 사용 됩니다. 이 값은 <uses-permission> 과는 달리, 앱 내에서 특정 API 나 기능을 사용하는데 영향을 미치지 않으며, 오직 Google Play 앱 등 외부 어플리케이션이 앱의 특징을 확인하기 위해 사용 됩니다.

Google Play 앱은 실행 시, PackageManager 를 통해 현재 디바이스에서 지원하는 기능 (feature) 목록을 확인 하여 저장한 후, 앱 검색 시 각각의 앱에 선언된 기능 목록과 현재 디바이스의 기능 목록을 비교하여 해당 앱을 노출할 지 말지를 결정합니다. 만일 꼭 필요하다고 선언된 기능 중 한 가지라도 만족하지 않는 경우, 그러한 디바이스를 사용하는 사용자는 해당 앱을 검색하거나 설치할 수 없게됩니다. 예를 들어 만일 개발자 여러분이 android.hardware.telephony 기능이 꼭 필요하다고 선언한 경우, 전화 기능이 없는 태블릿등의 기기에서는 Google Play 를 통해 여러분의 앱을 검색하거나 설치할 수 없게 됩니다.

이 요소를 이용해 선언할 수 있는 기능 목록은 개발자 문서에서 확인 할 수 있으며, 개발자 여러분은 각각의 요소 마다 추가적으로 required 속성을 true 혹은 false 로 지정하여, 앱을 실행하는데 반드시 필요한 기능인지 아니면 있으면 좋지만 해당 기능을 지원하지 않는 디바이스 상에서도 앱이 동작 할 수 있는지 여부를 지정할 수 있습니다.

또한, 한 가지 주의할 점이 있습니다. 개발자 여러분이 명시적으로 <uses-feature> 요소를 선언하지 않더라도, 일부 하드웨어 기능에 대한 권한을 요청한 경우, 암시적으로 특정 기능에 대한 <uses-feature> 요소가 선언된 것 (uses-implied-feature) 으로 자동으로 간주되는 경우가 있습니다.


예를 들어, 카메라 관련 API 를 사용하기 위하여 CAMERA 권한을 사용한다고 메니페스트에 선언되어 있는 경우, 암시적으로 'android.hardware.camera' 와 'android.hardware.camera.autofocus' 가 선언됩니다. 따라서, 의도하지 않게 앱이 Google Play 에서 필터링 되는 것으로 막기 위해 개발자 여러분은 required 속성을 false 로 하여 명시적으로 특정 기능이 앱이 동작하는데 반드시 필요한 것은 아니라는 점을 명확히 선언해 주어야 합니다. 특정한 권한 사용에 따라 암시적으로 추가되는 <uses-feature> 항목은 개발자 문서의 관련 문서에서 확인하실 수 있으며, 암시적으로 선언된 uses-features 의 목록은 앱이 APK 파일로 패키징 된 후, 다음과 같이 aapt 툴을 이용하여 확인하실 수 있습니다.

aapt d badging TableMountain-debug-unaligned.apk

그럼 앱을 배포하거나 업데이트 하실 때는, 잠재적인 고객들을 잃어버리지 않기 위하여, 항상 Google Play 의 필터링 기능에 주의를 기울이시길 바랍니다. 

중국어, 일본어, 한국어 (CJK) 사용자들은 전세계 인구의 1/4입니다. 구글의 미션은 전 세계의 모든 정보를 체계화하여 누구나 언제 어디서나-언어, 사용 장치 및 환경이나 다른 조건에 관계 없이- 편리하게 쓸 수 있도록 하는 것입니다. 그 미션의 일환으로 구글은 어도비(Adobe)와 협력하여 한중일 언어를 동시에 지원하는 Pan-CJK(汎韓中日)고품질 무료 글꼴을 만들었습니다. 바로 Noto Sans CJK입니다. 이 글꼴은 여러 OS와 응용 프로그램에서 더 풍부하고 아름다운 텍스트를 볼 수 있도록 해줄 것입니다.





 Noto Sans CJK는  한국어, 중국어 간체, 중국어 번체, 일본어를 하나의 글꼴에서 모두 지원하는 한편으로 각 언어 특유의 미적 요구 사항 (예를 들어, 조금씩 다른 한자 모양)을 잘 살려서 수용했습니다. 또한, 전통과 현대적 디자인 사이에 균형을 취한 산세리프(sans serif)체로서 유저 인터페이스(UI), 디지털 콘텐츠, 랩탑, 모바일 디바이스, 전자책 등 다양한 곳에서 쓸 수 있는 다목적 글꼴입니다.  또다른 특징은 무료 글꼴에서는 유례를 찾기 힘들 정도로 많은 7 단계 웨이트(font-weight)를 지원한다는 점입니다.  아래 이미지 왼쪽부터 차례대로 Thin, LIght, DemiLight, Regular, Medium, Bold, Black입니다.




한중일의 언어를 완벽하게 지원하려면 수만 개의 글자가 필요합니다. 대다수의 한자는 한중일이 공유하지만 일부 한자는 특정 언어에서만 쓰이거나 지역·언어에 따라 약간 다른 모양을 지니기도  합니다. 또, 한글이나 일본의 가나처럼 하나의 언어에만 쓰이는 글자도 있습니다.  Noto Sans  CJK의 일차적인 목표 중 하나는  지역·언어에 특유한 글자가 그 고유한 형태를 유지하면서도 다른 글자들과 조화롭게 보이도록 하는 것입니다.




Noto Sans CJK는 현대 한국어에 쓰이는 11,172 음절 뿐 아니라  유니코드 한글 자모(한글 첫가끝 자모)로 조합 가능한 백만 자가 넘는 모든 한글 음절과 고어 문헌에 쓰이는 방점을 지원합니다. 또한  KS X 1001 (구 KS C 5601)와  KS X 1002에 있는 한자는 물론이고, 国, 数 등 널리 쓰이는 속자와  대법원 인명용 한자 대부분 (30 여자 제외)을 지원합니다. 이밖에 중국, 일본, 대만, 홍콩에서 널리 쓰이는 한자와 그 변형도 모두 다 포함하고 있습니다.


구글은 이 글꼴을 Noto 글꼴 패밀리의 일부로 'Noto Sans CJK'란 이름으로 배포합니다. 어도비는 본 글꼴 패밀리 (Source Sans family)의 일부로 본고딕(Source Han Sans)이란 이름으로 배포합니다. 글꼴 디자인의 저작권은 어도비에 있으며 누구나 제한 없이 쓸 수 있도록 아파치 2.0 라이선스를 적용했습니다.


구글과 어도비는 이 프로젝트에 다음을 각각 기여했습니다.

구글


어도비


덧붙여서 한국의 산돌 커뮤니케이션을 비롯하여 한중일 3국의 대표적인 글꼴 전문 업체 (중국의  SinoType Technology와 일본의  이와타)가 수많은 글리프를 그리고 디자인하는 등 큰 기여를 했습니다.


관련 링크
Google Developers Blog
어도비 타입킷 블로그

Share on Twitter Share on Facebook



서울 뿐 아니라 판교, 부산, 천안 등 전국 5개 지역에서 지금까지 10개의 이벤트가 열렸으며 총 650명 이상의 참석자들이 함께 했습니다. 여기에 3개의 학생 에디션 이벤트가 7월 말까지 추가적으로 열릴 예정입니다.



GDG 운영자 유승현님이 제작한 I/O Extended 서울 비디오


GDG 서울은 I/O가 열리는 시간에 맞추어 라이브로 I/O Extended를 진행했습니다. 한국 시간으로 새벽 1시에 시작되는 키노트를 기다리며 하노이 탑 게임, BoF 세션, 구글 플레이 스토어 정책팀 김보람 님의 세션 등 다양한 프로그램을 즐겼습니다.

플레이 스토어 정책 설명


BoF 세션

새벽 1시, 드디어 다 함께 키노트 감상 중!

같은 시각, 판교에서도 라이브 스트리밍으로 많은 분들이 함께 키노트를 감상했습니다. 판교에서는 I/O 키노트에 앞서 RT:FM 세션들을 통해, 다양하고 재밌는 주제로 개발자들의 발표를 듣는 시간을 가졌습니다. 개발자들의 발표가 궁금하신 분들은 에서 발표 자료를 살펴보실 수 있습니다. 


긴 시간 진행되는 행사를 위해 든든한 야식은 필수입니다.

가위바위보 게임

박현우님의 세션

키노트가 시작되었습니다!

I/O Extended 는 라이브 스트리밍 뿐 아니라 리뷰 파티로도 열렸답니다. 인천, 천안, 부산 등 서울 외의 지역에서 그리고 GDG가 아닌 곳에서도 재밌는 행사들이 진행되었습니다.


GDG 천안/아산

구글 Developer Advocate 양찬석님이 진행한 GDG 인천의 안드로이드TV 세션


이렇게 I/O Extended 행사에 참석하신 분들은 키노트 감상 뿐 아니라 서로 정보와 의견을 교환하고, 깊이 있게 이야기를 나눌 수 있는 즐거운 시간을 보냈습니다. 7월에는 방학을 맞이한 학생들(부천, GDG SSU)이 여는 마지막 I/O Extended 행사들이 기다리고 있습니다.



I/O Extended를 놓쳐서 아쉬우신가요? 한국 구글 개발자 그룹에서는 늘 다양한 곳에서 다양한 주제로 이벤트들이 열리고 있습니다! 한국 GDG 디렉토리에서 다양한 그룹과 행사 일정들을 확인해 보세요.


Share on Twitter Share on Facebook

그리고 GDG 인천에서 진행하신 IO Extended 행사 당일, 저는 이번 I/O 에서 처음 선보인 안드로이드 TV 를 소개하고 이에 관해 짤막하게 이야기를 나눌 수 있는 기회를 가졌습니다. 행사에서 소개한 내용과 다른 개발자분들과 이야기 나누었던 내용을 간단히 정리해 보았습니다.


Android + TV

안드로이드 TV는 텔레비전과 셋탑박스를 위한 안드로이드 플랫폼입니다. 폰이나 태블릿에 비해 훨씬 큰 화면에서 잘 동작하고, 리모콘과 같이 간단한 조작 체계를 이용해 편리하게 사용할 수 있는 앱을 만들 수 있도록 다양한 기능을 지원하고 있습니다. 그리고, 개발자 여러분에게 있어 가장 중요한 특징은 바로, 안드로이드 TV 자체가 안드로이드 플랫폼의 핵심 구성 요소 중 하나라는 점 입니다. 다시 말해, 안드로이드 TV는 안드로이드에 기반한 새로운 플랫폼이 아닌, 안드로이드 플랫폼에 기본적으로 포함된 기능입니다. 이번 I/O 에서 공개된 L 개발자 프리뷰를 포함하여, 앞으로 공개될 안드로이드 프레임워크에는 TV 기능을 지원하기 위한 API 와 서비스 및 개발 도구들이 항상 같이 공개될 것 입니다.
개발자 여러분은 폰이나 태블릿 앱을 만들 때 사용하는 것과 완전히 동일한 플랫폼 및 개발 도구들을 활용하여 안드로이드 TV 에서 동작하는 앱을 만들 수 있고, 안드로이드에 새로운 기능이나 서비스가 추가되는 경우 이러한 최신 기능을 항상 사용할 수 있게 될 것 입니다. 또한, 안드로이드 TV용 앱은 다른 폰이나 태블릿 앱과 마찬가지로 Google Play 를 통해 등록하고 사용자에게 배포될 수 있습니다. 그리고 당연히 기존과 마찬가지로, 개발자 여러분이 만든 앱에 가장 어울리는 형태로 광고 및 앱 내 아이템 구매와 같은 다양한 방법으로 앱을 홍보하고 수익을 낼 수 있습니다.


Leanback 프레임워크

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 커뮤니티에 질문이나 의견을 남겨주시기 바랍니다.


그럼 앞으로 거실 쇼파에 느긋히 앉아 여러분의 멋진 앱을 사용할 순간을 기대하고 있겠습니다.
Share on Twitter Share on Facebook


안드로이드 웨어를 통해, 지금까지와는 다른 새로운 형태의 서비스와 앱이 등장하여 Google Play 생태계를 더욱 풍성하게 만들어 줄 수 있을 것으로 기대됩니다. 새로운 플랫폼을 위해 새로운 앱을 개발하거나 아니면 기존 앱을 수정하고 싶은 개발자 분들이 많을 것 같은데요. 7월 2일 안드로이드 웨어를 지원하는 새로운 기능이 추가된 Google Play 서비스가 배포 완료되고, 안드로이드 웨어 디바이스와 휴대 단말을 연결 할 수 있는 안드로이드 웨어 앱이 공개되면서 개발자 여러분은 드디어 안드로이드 웨어를 지원하는 앱을 개발하실 수 있게 되었습니다.

천 리 길도 한 걸음부터, 안드로이드 웨어 앱 개발을 어떻게 시작할 수 있는지 단계별로 정리해 보았습니다.


개발 환경 준비하기

우선 안드로이드 웨어 앱 개발을 위해서는 다음과 같은 개발 환경이 필요합니다.



웨어 디바이스 혹은 AVD 설정

안드로이드 웨어 에뮬레이터는 다음과 같은 단계를 통해 설치하고 활용할 수 있습니다.

1. AVD 매니저 실행 후 아래와 같은 설정으로 AVD 생성

2. 에뮬레이터 실행
인내심을 갖고 기다리시면 아래와 같은 안드로이드 웨어 홈 화면을 만나보실 수 있습니다.


3. 휴대폰과 페어링 하기

  1. 구글 플레이 다음 링크를 통해 안드로이드 웨어 앱 설치
  2. USB 로 휴대 단말을 개발 PC 에 연결하기
  3. 에뮬레이터에서 송신하는 데이타가 휴대폰에 포워드 될 수 있도록 포트 포워딩 설정하기
  • adb -d forward tcp:5601 tcp:5601

  • 안드로이드 웨어 앱을 통해 에뮬레이터와 휴대 단말 페어링 하기
  • 웨어 디바이스가 있는 분들은 다음과 같이 안드로이드 웨어 디바이스와 휴대 단말을 연결할 수 있습니다.
    1. 구글 플레이 다음 링크를 통해 안드로이드 웨어 앱 설치
    2. 안드로이드 웨어 앱 실행 한 후 안내에 따라 안드로이드 웨어 디바이스와 연결하기
    3. 안드로이드 웨어 디바이스를 개발 PC 와 USB 로 연결하기. 이렇게 하면, 작성한 안드로이드 웨어 앱을 안드로이드 웨어 디바이스로 바로 설치 할 수 있습니다.

    프로젝트 생성

    안드로이드 스튜디오의 프로젝트 위저드 메뉴를 이용하면, 손쉽게 안드로이드 웨어와 휴대폰용 모듈을 포함한 프로젝트를 생성할 수 있습니다. 개발자 문서 중 “프로젝트 생성하기" 항목을 참고하시면 보다 자세한 내용을 확인 하실 수 있습니다.

    1. “Configure your Project” 화면에서 앱 이름과 패키지 이름을 입력합니다.
    2. “Form Factors” 화면에서


    3. 모바일 및 웨어를 위해 각각 빈 액티비티를 추가한 후 완료 버튼을 클릭합니다.
    4. 프로젝트 위자드가 완료되면, “mobile” 과 “wear” 두 개의 모듈이 포함된 프로젝트가 생성됩니다. 말 그대로 “mobile” 모듈은 휴대 단말에 설치될 앱을 위한 모듈이며, “wear” 모듈은 안드로이드 웨어 디바이스에서 동작하는 앱을 위한 모듈입니다.



    앱 개발하기

    이제 안드로이드 웨어와 휴대 단말을 위한 앱을 개발을 시작할 수 있습니다. 안드로이드 웨어 앱을 만드실 때도 액티비티, 커스텀 뷰와 같은 익숙한 개념과 기능들을 활용할 수 있지만, 앱 개발을 시작하기 전에 꼭 한번 디자인 가이드라인 문서를 살펴보시기 바랍니다. 안드로이드 웨어 앱은 기존의 폰 및 태블릿 앱과는 다른 장단점을 가지며, 개발자 여러분은 사용자에게 보다 향상된 사용자 경험을 제공하기 위하여, 안드로이드 웨어 앱이 어떻게 디자인되어야 되는지 기본적인 개념을 잘 숙지할 필요가 있습니다.

    가장 기본적인 원칙중 하나는 바로 사용자가 네트워크 작업 혹은 복잡한 사용자 상호작용이 필요한 작업등 무거운 작업은 모두 휴대 단말 상에서 처리하고, 안드로이드 웨어 앱에서는 사용자에게 꼭 필요한 최소한의 정보와 함께 작업의 결과만을 알림(Notification) 기능 혹은 데이터 동기화 기능을 통해 알려주는 것 입니다.

    새로운 플랫폼에서 앱을 개발하는데 유용한 샘플들을 빼놓을 순 없겠조. SDK 폴더 아래 “/samples/android-20/wearable/” 폴더에 가시면 각각의 기능을 활용한 안드로이드 웨어 샘플 앱들을 확인하실 수 있습니다. 혹은 GitHub 의 AndroidWearable-Samples 페이지를 방문하시면, GDG 운영자 중 한 분인 Sebastian Mauer 님이 이 모든 샘플들이 하나의 프로젝트틀 확인할 수 있도록 패키징하여 제공하고 있습니다.

    안드로이드 웨어 기능을 활용하고 있는 보다 구체적인 사례가 궁금한 개발자 분들은, Google Play 의 “Apps for Android Wear” 를 방문해 보시면, 안드로이드 웨어 기능을 잘 활용한 앱들을 찾아보실 수 있습니다.

    그럼 개발자 여러분의 멋진 안드로이드 웨어 앱을 기대하고 있겠습니다.
    Share on Twitter Share on Facebook

    안드로이드 웨어러블(Android Wearable) 서비스

    Google Play 서비스 5.0 에서는 Android Wear 디바이스에서 동작하는 앱과 커뮤니케이션 할 수 있는 API 가 새롭게 추가되었습니다. 자동으로 데이터를 동기화 할 수 있는 API, 저장 장치에 데이터를 저장하기 위한 API 그리고 작은 지연시간(low latency)으로 상호간에 컨트롤 메시지를 교환하고 데이터를 전달 할 수 있는 메세징 인터페이스가 제공됩니다.


    동적 보안 프로바이더(Dynamic Security Provider)

    앱이 동적으로 보안 프로바이더를 선택하여 적용할 수 있는 API 가 제공됩니다. 동적 보안 프로바이더에는 안드로이드 플랫폼에서 제공되는 기본 보안 네트워킹 API 를 대신할 수 있는 API 도 포함되어 있습니다. 동적 보안 프로바이더를 사용하면 보안 상의 결함으로 보안 패치가 필요한 경우 Google Play 서비스를 통해 실제 앱을 수정하지 않고도, 패치가 빠르게 반영될 수 있습니다. 현재 버전에 포함된 API 는 최근에 문제가 되었던 OpenSSL 보안 문제가 해결되어 있습니다.

    Google Play 게임 서비스


    퀘스트(Quest)

    퀘스트 기능이 새롭게 지원되며 이를 위한 새로운 API 가 추가됩니다. 게임 APK 수정 없이, 개발자 여러분은 게임 유저들에게 퀘스트를 부여할 수 있습니다. 시간을 기반으로 목표를 부여하고, 이를 달성한 유저들에게 특정 보상을 지급할 수 있습니다. 특정 게임 액티비티(스테이지를 클리어 하거나, 에얼리언을 사냥하거나 희귀한 검은 양을 구해내거나 등등)가 일어날 때마다 해당 정보를 퀘스트 서비스로 전달할 수 있으며, 퀘스트 서비스는 게임 내에서 어떤 일들이 일어나고 있는지 알 수 있습니다. 개발자 여러분은 이 정보를 기반으로 적절하다고 생각되는 퀘스트를 생성하여 사용자에게 끊임없이 새로운 퀘스트를 제공할 수 있습니다. 유저들은 새로운 게임 플레이 경험을 누릴 수 있고 동시에 지속적으로 게임을 플레이하기 위한 동기를 갖게 됩니다.

    세이브 게임(Saved Games)

    새로운 게임 세이브 스냅샷 API 가 제공됩니다. 개발자 여러분은 사용자의 게임 진행 데이터를 한 장의 이미지와 이와 관련된 설명 그리고 플레이한 시간 정보와 함께 구글 클라우드 상에 저장할 수 있습니다. 구글에 게임 진행 데이터가 저장되므로 사용자들은 기기를 변경하거나 앱을 다시 설치하더라도 첫 번째 스테이지 부터 게임을 다시 플레이할 필요가 없고, 이미지와 내용을 확인해서 자신이 어디까지 게임을 진행했는지 쉽게 확인할 수 있습니다. 또한, 사용자는 Play 게임 앱을 통해 저장된 게임 진행 데이터를 한 눈에 확인할 수 있고, 바로 게임을 이어서 플레이할 수도 있습니다.


    앱 인덱싱(App Indexing) API

    앱 인덱싱 API 를 통해 개발자 여러분은 모바일 어플리케이션에서 지원하는 딥 링크(deep links) 정보를 구글에 등록할 수 있습니다. 앱 인덱싱 API 를 적용하면 Google Search 앱이 여러분의 앱 사용 기록을 기반으로 사용자에게 추천 검색을 제공할 수 있고, 이를 통해 사용자는 앱 내의 특정 페이지로 쉽고 빠르게 접근할 수 있습니다. 또한, 앱 인덱싱 API 를 통해 등록된 딥 링크들은 구글이 앱 컨텐츠를 인덱싱 하는데도 사용되며, 검색 결과에 등록된 딥 링크 결과가 표시될 수 있습니다.


    Google Cast

    Google Cast SDK 에는 미디어 트랙이 새롭게 포함되었고, 이를 통해 크롬 캐스트 자막 기능을 지원할 수 있습니다.


    드라이브(Drive)

    Google Drive API 에는 계속해서 새로운 기능들이 추가되고 있습니다. 이번 버전에서는 쿼리 결과를 정렬하는 기능과 오프라인 상에서 폴더를 생성하는 기능이 추가되었고 파일 선택 시 기본적으로 마임(MIME) 타입 제한 없이 파일을 선택할 수 있도록 변경되었습니다.


    월렛(Wallet)

    포인트 적립, 쿠폰과 같은 특정 제안(Offer) 내용을 사용자가 Google Wallet 에 담을 수 있는, “Save to Wallet” 버튼이 추가됩니다. 사용자가 버튼을 클릭하면 해당 제안이 Google Wallet 에 저장되며, 이 후 사용자는 Google Wallet 상에서 저장된 제안 목록을 살펴볼 수 있습니다. 또한 이번 업데이트 부터, 사용자가 Google Wallet 즉시 구매를 통해 결제를 진행하는 경우, 총액을 나누어 결제할 수 있습니다. 예를 들어, Google Wallet 내의 잔액이 부족한 경우, 부족한 액수는 Google Wallet 에 등록된 신용카드를 통해 결제 할 수 있습니다.


    애널리틱스(Analytics)

    향상된 전자 상거래(Enhanced Ecommerce) 분석 기능을 통해 고객이 여러분의 앱을 사용하는 전체 과정을 상세히 살펴볼 수 있습니다. 상품의 노출 수, 상품을 클릭 한 횟수, 상품 상세 화면을 본 횟수, 상품을 쇼핑 카드에 담음 횟수, 결제를 시도한 횟수, 내부 프로모션, 결제, 반품 등을 모두 측정 할 수 있습니다. 사용자들이 제품 구매 단계 중 어디까지 진행하는지 그리고 어떤 지점에서 멈추어 서는지등을 한눈에 파악할 수 있으며, 이를 통해 여러분의 사업이 얼마나 잘 진행되고 있는지 보다 잘 이해할 수 있습니다. 또한 내부 프로모션, 쿠폰, 제휴 마켓팅 등등을 포함하여 진행 중인 마케팅 및 판매 촉진 행사가 얼마나 효과를 발휘하고 있는지 분석할 수도 있습니다.


    모바일 광고(Mobile Ads)

    Google 모바일 광고는 앱을 통해 수익을 낼 수 있는 훌륭한 방법 중 하나 입니다. 이번 업데이트 에서는 인앱구매(In-app purchase) 광고 기능이 개선되어, Google Play In-app Billing 서비스를 이용하여 소비될 수 있는(consumable) 구매에 관한 기본 구현이 추가되었습니다. 


    새로운 기능과 다양한 업데이트를 포함한 Google Play 서비스 5.0 버전의 배포가 완료되었고, 이제 개발자 분들은 안드로이드 SDK 매니저를 통해 Google Play 서비스 SDK 를 다운로드 받으실 수 있습니다. 새로 공개된 API 에 대한 내용은 개발자 문서를 참고하시기 바랍니다.



    Share on Twitter Share on Facebook