https://medium.com/p/786696e73fed

오늘 SDK가 공개된 구글 크롬캐스트의 디자인 가이드를 한글로 번역하였습니다.

전문을 직역하지는 않았고, 개발 과정에서 필요한 부분만 일부 번역하였습니다.




에브리싱에서 이용 예정인 구글 크롬캐스트의 디자인 가이드 문서가 있어 한글로 번역합니다. 전문을 직역하지 않고 개발 작업에 있어서 꼭 필요한 부분들만 순하게 번역합니다. 좀 더 정확한 내용의 숙지를 원하시는 분들은 다음 원문 링크를 방문하시면 되겠습니다.

https://developers.google.com/cast/docs/design_checklist


Cast 버튼은 앱 상단에 위치하고 다음 세가지 state를 가집니다.

  • 연결할 Chromecast 동글이 없는 경우 cast 버튼은 보이지 않습니다.
Disconnected 상태입니다.
  • 연결할 Chromecast 동글이 있는 경우 회색 또는 흰색의 cast 버튼이 생깁니다.
Available to connect 상태입니다.
  • 연결을 하고 나면 cast 버튼은 색깔을 가지게 됩니다. 파란색을 추천하지만 앱의 UI에 맞는 다른 색깔을 선택해도 관련이 없습니다.
Connected 인 상태입니다.

Cast를 하는 과정은 두가지가 존재합니다.

  • cast 버튼을 눌러서 연결할 chromecast를 고른 뒤 content를 play 하는 방법

이 경우 connect 되어 있는 동안 모든 content는 Chromecast 동글에서 재생됩니다.

  • Device에서 먼저 content를 play 한 뒤 content 상단의 cast 버튼으로 연결할 chromecast 를 고르는 방법

이 경우 재생 버튼을 눌렀을 때 local device에서 content 는 pause 되고 Chromecast 동글에서 이어서 재생되어야 합니다.


Cast 버튼은 receiver available, receiver connected, casting 의 각 세가지 상태에 대해서 다르게 행동합니다.

Receiver available 상태에서 cast 메뉴를 클릭하면,

  1. connect 가 가능한 chromecast 디바이스 목록을 노출합니다.
  2. 현재 connect 되어 있는 application이 있다면, 해당 이름이 chromecast 목록에서 노출되어야 합니다.
Connect 할 Chromecast를 선택하는 단계입니다.

Receiver에 connect 되어 있는 상태에서 cast 버튼을 클릭하면

  1. Disconnect 할 수 있는 버튼이 있는 다이얼로그를 노출해야 합니다.

만약 connect 되어 있는데, 어떤 content 도 재생되지 않고 있다면 최대 5분 뒤에는 connection이 끊겨야 합니다.

Receiver는 receiver app이 로딩되고 있는 동안 아무리 짧은 시간이라 하더라도 적절하게 application 이름을 노출하는 등 적절한 화면을 사용자에게 보여줘야 합니다.

Casting 하고 있는 동안 cast 버튼을 클릭하면

  1. Connected 라는 제목을 가진 다이얼로그를 노출합니다.
  2. casting 하고 있는 content에 대해 적절한 control을 제공합니다.
  3. 이 다이얼로그에서 disconnect 할 수 있는 옵션을 제공해야 합니다.

Content를 재생하고 있는 동안 사용자는 sender application에서 content를 제어할 수 있어야 합니다.

사용자는 언제나 chromecast에서 재생되고 있는 content를 제어할 수 있어야 합니다. sender app UI는 사용자가 content를 제어할 수 있는 가장 중요한 수단입니다.

Casting을 하는 동안 sender app 은 다음 사항들을 보여줘야 합니다.

  1. 재생이 시작되기 전에 loading 상태와 content의 제목 또는 artwork을 보여줍니다.
  2. 재생이 시작되고 나면 “Casting to” 다음에 receiver의 이름을 노출하여 어느 chromecast 기기로 casting 하고 있는지 알려줍니다.
  3. Content의 제목이나 artwork을 노출합니다.
  4. Play/Pause 기능을 제공합니다.
  5. 경과된 시간과 content의 전체 시간을 표현합니다.

부가적으로 다음 사항들도 구현이 가능합니다.

  1. 현재 재생되고 있는 위치를 알려주는 슬라이더
  2. Volume control — hardware 버튼만 이용하십시오.
  3. 다른 content의 artwork이나 요소들.
사용자는 TV에서 content를 재생시킨 후 언제나 다른 navigating이 가능해야 합니다.

Sender app 은 content가 재생되고 있는 동안 지속적인 control을 제공해야 합니다.

  1. 모든 application에서 유효해야 하고
  2. 현재 재생중인 content를 보여줘야 하며,
  3. content를 클릭하면 제어가 가능한 UI를 노출해야 합니다.

Sender app 에서의 control UI의 작동은 다음 가이드 라인들을 따라야 합니다.

  1. Control action은 Sender의 content가 아니라 Cast receiver 의 content를 제어해야 합니다.
  2. Sender app의 control UI는 사용자가 제어가능한 기능이 무엇이 있는지를 알려줍니다. Receiver의 UI는 현제 재생되고 있는 content의 상태를 알려주는 역할을 합니다.
  3. 모든 Android app은 하드웨어 볼륨키를 지원해야 합니다. Sender 가 casting 하고 있는 동안 sender device의 하드웨어 볼륨키는 Cast receiver의 볼륨을 조절하기 위해 이용되어져야 합니다.
  4. Sender device에서는 content의 sound가 재생되지 않아야 합니다.

Receiver app 에서의 UI 들은 다음 가이드 라인들을 따라야 합니다.

  1. Receiver app의 UI는 content에 대한 제어 수단이 아닙니다. play 되고 있는 content의 재생 상태를 알려주는데 그쳐야 합니다.
  2. 과도하게 크거나 부각되는 element 들로 content의 감상을 방해해서는 안됩니다.
  3. Receiver app 은 idle 상태일 때도 적절한 branding이나 content 또는 application 기능에 대한 노출이 필요합니다. 이러한 노출이 역동적으로 표현이 가능하면 더욱 좋습니다.
  4. 재생중인 동안 UI 요소들은 하단 1/3 이하에 노출하십시오. 가급적이면 은은하거나 반투명한 요소로 노출하십시오.

Notification bar 에서의 UI 들은 다음 가이드 라인들을 따르기를 권장합니다.

  • Application name 이나 brand icon을 노출하십시오.
  • Content의 제목이나 artwork을 노출하십시오.
  • Casting to 이후에 receiver의 이름을 노출하십시오.
  • Play/Pause 기능을 제공하십시오.
  • Title이나 artwork을 누르면 sender app 의 player control로 진입할 수 있게 하십시오.
  • Disconnect를 할 수 있는 X 버튼을 제공하십시오.

Sender application은 원활한 resume 기능을 제공해야 합니다.

  1. Casting 중이던 sender application 을 나가서 다른 앱을 실행시켰다가 다시 돌아오더라도 cast 버튼은 현재의 상태를 보여줘야 합니다.
  2. 현재 casting 중인 content에 대한 control도 제공하고 있어야 합니다.
  3. 만약 application 이 killed 되었다면 cast session 에 대한 정보를 저장해 두었다가 앱이 재시작할 때 현 상태를 복구할 수 있어야 합니다.

Casting session의 종료

Cast session은 receiver로 하여금 다른 content에 대한 재생이 가능한 상태로 만든 뒤 종료되어야 합니다. Disconnect에 대해서는 일반적으로 다음 가이드 라인을 따라야 합니다.

  1. Disconnect 버튼이 Cast menu와 상태바에서 제공이 되어야 합니다.
  2. 만약 유일한 connected sender 가 disconnect 버튼을 누르면, receiver에서 현재 재생중이던 content 를 stop 하고, receiver의 app에서 탈출합니다. Sender app 에서 해당 content를 이어서 재생할 수도 있습니다.
  3. 만약 2개 이상의 sender 가 연결되어 있는 상태에서, 하나의 sender가 disconnect를 누르면 이는 receiver에 어떤 영향도 미치지 않습니다.
  4. 만약 sender가 비의도적으로 (배터리 부족이나, 네트워크 연결 실패 등의 이유로) disconnect 된다면 이는 receiver에게 어떤 영향도 미치지 않습니다. sender app에서는 cast 버튼을 cast 버튼의 상태에 따른 변화 에서 서술한 상태대로 노출합니다.

개별 앱의 business 모델에 따라서 두번째 사용자가 session을 disconnect 했을 때 casting 을 멈추게 할 수도 있습니다. 이 부분과 관련해서는 어느정도 자유롭게 시나리오를 구성할 수 있습니다.

재생이 완료 되었을 때 receiver는 다른 content나 brand image를 홍보할 수 있습니다.