
Chinese: 
[音乐]
我叫Cassio
Google开发者关系部成员
我主要从事Android TV相关工作
今天我们要探讨的是
开发富有吸引力的应用的最佳做法
这个话题涵盖丰富的内容
而且有些宽泛
为突出重点，我们将着重
探讨以下四个方面的内容
首先，我会简要介绍Google对
住宅和客厅现状的了解
接着会介绍Android TV的一些基本要素
这些都是许多主流应用所仍然缺失的
或者没有正确对待的关键要素
说实话，要开发极富吸引力的卓越应用
处理好所有基本要素是前提条件
之后我们将简单讨论Leanback库

Spanish: 
Mi nombre es Cassio.
Soy del equipo de relaciones
con desarrolladores, de Google.
Trabajo, principalmente,
con Android TV.
Hoy les hablaré
sobre las prácticas recomendadas
para apps atractivas,
que en realidad abarcan muchos temas.
El título es genérico.
Les diré de qué voy a hablar
específicamente.
Comenzaré con una breve descripción
de la casa y la sala de estar
desde el punto de vista de Google.
Después, les hablaré
sobre algunos aspectos básicos de Android TV,
en los que presentan errores o fallan
algunas de las apps más importantes.
Una app verdaderamente atractiva
satisface todos los aspectos básicos.
Luego, me referiré a la biblioteca Leanback
y a lo que todos

Portuguese: 
Meu nome é Cassio.
Sou da área de relação
com desenvolvedores no Google.
Trabalho principalmente com o Android TV.
Hoje veremos práticas recomendadas
para criar apps interessantes,
o que envolve muitas coisas.
É um título genérico.
Para ser mais específico,
isto é o que vamos ver.
Vou começar falando um pouco
sobre o estado das casas
e salas de estar
pelo ponto de vista do Google.
Depois verei
alguns princípios básicos do Android TV.
Em muitos apps grandes
ainda há erros nesse sentido.
Um app interessante começa
com a aplicação correta
dos princípios básicos.
Em seguida, falaremos um pouco
sobre a biblioteca Leanback

Japanese: 
[音楽]
カシオです
デベロッパーリレーションズを
担当しています
主にAndroid TVが担当です
本日の内容は魅力的なアプリの
ベストプラクティスです
これは多くの内容を含むトピックです
総称的なタイトルです
内容を絞り込むため
お話しする内容を——
まとめます
まず家とリビングルームの状態について——
Googleの考えを少し話します
次にAndroid TVの
基本をお話しします
これについては多くの主要なアプリが
まだ対応できておらず——
いくつか誤りがあります
魅力的な優れたアプリの開発の基盤は——
すべての基本を正しく押さえることです
次にLeanbackライブラリの説明です

Korean: 
제 이름은 카시오입니다
Google의 개발자 관계팀을
담당하고 있죠
대부분 Android TV
관련 일을 합니다
오늘은 앱과 관련된
모범 사례에 대해
이야기할 예정입니다
상당히 광범위한 얘기가 되겠죠
포괄적인 주제이긴 합니다
범위를 좁히자면 오늘 할 이야기는
다음과 같습니다
우선 Google에서 
집과 거실의 상태를
어떻게 이해하고
있는지를 먼저 짚어 보고
여전히 주요 앱에서
많이 간과하거나 실수하는
Android TV의
기본적인 사항에 대해
이야기하겠습니다
훌륭하고 매력적인 앱들은
기본을 충실하게 지키는 것에서 시작되죠
그리고 린백 라이브러리에
대해 얘기하겠습니다

Indonesian: 
CASSIO ZEN: Nama saya Cassio.
Saya dari tim
developer relations di Google.
Biasanya saya menangani Android TV.
Hari ini kita akan bahas praktik terbaik
untuk membuat aplikasi menarik,
yang akan mencakup banyak hal.
Sepertinya judul ini terlalu luas.
Untuk mempersempitnya,
berikut adalah topik-topik
yang akan dibahas.
Saya akan mulai dengan sedikit
membahas konsep rumah
dan ruang keluarga
sesuai pemahaman di Google.
Lalu saya akan lanjut
membahas dasar-dasar
Android TV secara singkat sebab masih
banyak aplikasi besar yang melupakan
atau melakukan kesalahan di sektor itu.
Tugas pertama untuk membuat
aplikasi yang menarik adalah
memastikan semua hal dasar
dikerjakan secara benar.
Lalu, kita akan 
sedikit membahas Leanback library

English: 
[MUSIC PLAYING]
CASSIO ZEN: My name is Cassio.
I'm a developer
relations here at Google.
I work mostly with Android TV.
And today, we're going to
talk about best practices
for engaging apps, which kind
of embraces a lot of stuff.
It's kind of a generic title.
So to narrow it down,
here's the things
that we're going to talk about.
I'm going to start by saying a
little bit of the state of home
and living room as we
understand here at Google.
Then I'm going to move to
talk about some Android TV
basics, which many big
major apps still misses
and has some mistakes in there.
And really, a great
engaging app starts
with getting all of
the basics right.
Then we're moving to talk a
little bit about the Leanback

Japanese: 
みなさんの主要な疑問の１つですが——
ニーズに完全に合致していない場合に——
ライブラリをカスタマイズする方法はあるか
調整できるか
カスタマイズできるか
ネタバレ注意はできるか
答えはほとんどYESです
これらをお話します
次にOS統合について話します
ホーム画面と統合し——
コンテンツを強調する方法を説明します
検索での見つけやすさと——
Assistantとの
エンゲージメントを話します
Googleが考える
家とリビングルームの状況から——
始めます
技術によって
人と家とのかかわり方が変わりました
Googleでは家に関する——
次の技術的進展は——
ハードウェア、ソフトウェア、
そして人工知能の——
組み合わせがもたらすと考えています
家がよりスマートになるだけでなく——

Portuguese: 
e sobre uma das maiores
dúvidas que todos têm:
"Como personalizar a biblioteca Leanback?
Ela não faz exatamente o que eu quero."
É possível ajustá-la, personalizá-la?
A resposta geralmente é sim.
Falaremos um pouco sobre isso.
Depois falaremos
sobre a integração com o SO.
Veremos como fazer a integração
com a tela inicial do Android TV
para exibir seu conteúdo.
Falaremos
sobre a descoberta usando a pesquisa
e sobre a interação com o Assistente.
Vamos começar
com o estado das casas e salas de estar
para nós, no Google.
A tecnologia mudou a forma
como interagimos com nossas casas.
No Google, acreditamos que o próximo passo
da tecnologia para casa
virá da interseção
entre hardware, software
e inteligência artificial.

Chinese: 
并解答大家经常遇到的一个主要问题
即如何自定义Leanback库？
毕竟，它不一定完全符合每个人的需求
那么，我可以对它进行调整吗？
我能对它进行自定义吗？
先透露一下，答案基本上是肯定的
我们稍后会讲到这方面内容
最后我将介绍操作系统集成相关知识
包括如何与Android TV主屏幕集成
从而重点展示我们的内容
如何让用户能通过搜索发现你的应用
以及如何让你的应用能与Google助理互动
下面，我就开始介绍Google
对住宅和客厅现状的认识
技术已经改变了我们与住宅的互动方式
Google相信，面向住宅的
下一次技术飞跃
将来自硬件、软件和
人工智能的融合
我们不仅想让住宅

English: 
library and one of the major
questions that everybody always
has, which is, how do I
customize the Leanback library?
It doesn't fit necessarily
what I want exactly.
Can I adjust it?
Can I customize it?
Spoiler alert, the
answer is mostly yes,
and we're going to talk
a little bit about that.
And then I'm going to talk
about the OS integration.
We're going to talk
about how we can
integrate with Android TV's home
screen to feature our content.
We're going to talk about
discoverability through search
and engaging with the Assistant.
So starting with the states
of home and living room for us
at Google.
So technology has changed how
we interact with the home.
Here at Google, we believe
that the next leap forward
in technology for
the home will come
from the intersection
of hardware, software,
and artificial intelligence.
We want your home to
not only be smarter,

Spanish: 
quieren saber sobre ella:
"¿Cómo se personaliza?
"No es exactamente lo que necesito.
"¿Puedo ajustarla?
"¿Puedo personalizarla?".
Les doy una pista:
la respuesta, en general, es sí.
Ya lo veremos.
Luego, les contaré
sobre la integración del SO.
Veremos cómo hacer la integración
con la pantalla principal
de Android TV para incluir nuestro contenido.
Hablaré de la visibilidad en la búsqueda
y la interacción con el Asistente.
Veamos el significado de casa y sala de estar
según Google.
La tecnología cambió
el modo en que interactuamos
con la casa.
En Google, creemos que el próximo avance
en tecnología para el hogar
llegará con la combinación
del hardware, el software
y la inteligencia artificial.
Queremos que su casa sea más inteligente,

Korean: 
많은 분이 묻는 질문 중 하나가
린백 라이브러리의 맞춤 설정에
관한 것이죠
'내가 원하는 것과는
살짝 다른데요?'
'조정할 수 있나요?'
'맞춤설정할 수 있나요?'
결론부터 말하자면
대답은 대부분 '예'입니다
이 부분도 짚고 넘어가도록 하죠
그리고 OS 통합을 주제로
이야기할 건데요
Android TV의 홈 스크린에서
저희 콘텐츠를 표시하도록
통합하는 방법을 이야기하겠습니다
또 검색을 통한 검색 가능성과
Google 어시스턴트에 대해서도
이야기하겠습니다
Google에서 집과 거실을
어떻게 바라보는지부터 시작하죠
기술의 발전으로 집과 상호작용하는
방식이 바뀌었습니다
Google에서는 집을 위한
오늘날의 기술이
다양한 요소의 융합을 통해
다음 단계로 도약할 것이라고
믿고 있습니다
바로 하드웨어, 소프트웨어
그리고 AI의 융합이죠
Google에서는 여러분의 집이
더 스마트해지거나

Indonesian: 
dan salah satu pertanyaan
terbesar yang selalu membuat
penasaran, yaitu bisakah Leanback
library dikustomisasi?
Library tidak sesuai dengan
apa yang saya inginkan.
Bisakah diubah?
Bisakah disesuaikan?
Sedikit bocoran, ya, libary
bisa disesuaikan,
dan nanti kita
akan mengupasnya.
Lalu, saya akan
membahas integrasi OS.
Kita akan bahas cara
mengintegrasikan layar utama Android TV
untuk menampilkan konten milik kita.
Kita akan bahas visibilitas di pencarian
dan cara berinteraksi dengan Asisten.
Mari mulai dengan konsep
rumah dan ruang keluarga bagi
kami di Google.
Teknologi telah mengubah
cara kita berinteraksi dengan rumah.
Di Google,
kami yakin bahwa terobosan
dalam teknologi untuk hunian adalah
perpaduan antara
perangkat keras, perangkat lunak,
dan kecerdasan buatan.
Kami ingin rumah Anda
tak cuma lebih cerdas,

Indonesian: 
tak cuma lebih mampu
menunjang kebutuhan Anda,
tetapi kami ingin agar rumah
Anda yang bekerja untuk Anda.
Maksudnya adalah memadukan
perangkat keras, perangkat lunak, dan
keceradasan buatan demi
menghadirkan pengalaman luar
biasa bagi pengguna.
Hal ini tentunya difasilitasi
dengan adanya Asisten Google,
yang sangat membantu
untuk menghimpun pencarian.
Yang menghimpun media
dan semua sumber media
berikut semua titik hubung
media di Google.
Jika membahas media,
sarana terbaik untuk
menikmati dan menonton media
adalah dengan layar TV di rumah.
Android TV adalah inti
dari media di hunian yang
sudah dilengkapi Asisten Google.
Anda mungkin sudah punya
ponsel pintar, mobil pintar,
speaker pintar, tetapi
Android TV menghimpun
semuanya di satu tempat.

Japanese: 
より便利になるだけでなく——
あなたのために
働くものであってほしいと考えています
ハードウェア、ソフトウェア
人工知能を組み合わせて——
ユーザーに驚くべき体験を——
提供したいのです
これはGoogle Assistantが支えます
Google Assistantは検索を集約します
メディアと
すべてのメディアポイントを集約します
Googleの
メディアの全接点を集約します
メディアに関して——
メディアを消費し視聴する場合——
家にある大きな画面よりも
優れたものはありません
Android TVは——
Google Assistantが動かす
家のメディアの中心です
スマートフォン、スマートカー
スマートスピーカー——
Android TVはすべてを——
一カ所に集約します
メディア、ゲーム、そして音楽

Korean: 
더 많은 도움을 제공할 뿐만 아니라
여러분을 위해 뭔가를 하도록
만들려고 합니다
그리고 하드웨어, 소프트웨어
AI를 활용해
사용자에게 놀라운 경험을
제공하고자 합니다
물론 이 중심에는
Google 어시스턴트가 있죠
Google 어시스턴트는
검색을 한곳으로 통합합니다
Google의 미디어,
미디어 포인트
그리고 미디어 접점을 전부
한곳으로 모으죠
미디어 이야기를 하자면
미디어를 소비하고 시청하는 데
집에 있는 큰 화면보다
좋은 매체는 없습니다
Google 어시스턴트가
지원되는 집에서는
Android TV가
미디어의 중심에 있는 거죠
스마트폰, 스마트 자동차
스마트 스피커가 있다면
Android TV는
이를 한곳에 통합합니다

Chinese: 
变得更智能、更实用
还希望它能符合住户的需求和喜好
要将硬件、软件和
人工智能相结合
为我们的用户提供超凡体验
这一切当然都离不开Google助理
Google助理十分实用，它整合了搜索功能
汇集各类媒体资源和媒体接触点
还有Google的所有媒体联络点
谈到媒体
没有什么能比家中的大屏幕
更适合观看和体验媒体内容了
因此，在利用Google助理打造的住宅中
Android TV在展示媒体资源方面发挥核心作用
你可能会使用智能手机、智能汽车和智能音箱
而Android TV会将所有资源
汇至一处

English: 
we want your home not
only to be more helpful,
but we want your
home to work for you.
And bringing together hardware,
software, and artificial
intelligence to provide
an incredible experience
to our users.
And this, of course, is anchored
by the Google Assistant,
the helpful Google Assistant
that brings together search.
That brings together media
and all the media points
and all of the media
contact points at Google.
And if we're
talking about media,
there is no better
place to consume media
and to watch media than the
bigger screen in your home.
So the Android TV
is at the heart
of the media in the Google
Assistant-powered home.
You can have your smart
phone, your smart car,
your smart speakers, and the
Android TV brings everything
together in one place--

Portuguese: 
Além de serem
mais inteligentes e úteis,
queremos que suas casas
trabalhem para vocês,
integrando hardware,
software e inteligência artificial
para proporcionar
uma experiência incrível
aos nossos usuários.
Isso tudo tem como base
o Google Assistente,
que unifica a pesquisa, a mídia
e todos os pontos de contato
de mídia no Google.
No que se refere à mídia,
não há lugar melhor para consumir
e assistir mídia
do que na maior tela da sua casa.
Então, o Android TV
é o principal elemento de mídia
nas casas com Google Assistente.
Você pode ter um smartphone,
um carro inteligente,
alto-falantes inteligentes,
e o Android TV
integra tudo em um só lugar.

Spanish: 
y más práctica,
y que, además, trabaje por ustedes.
Por lo tanto, combinamos el hardware,
el software y la inteligencia artificial
para ofrecer una experiencia magnífica
a nuestros usuarios.
Esto es posible
gracias al Asistente de Google,
una herramienta útil que combina búsquedas,
contenido multimedia
y todos los puntos
de contacto multimedia de Google.
Sin dudas,
el mejor lugar
para consumir y mirar
contenido multimedia
es la pantalla más grande de la casa.
Por lo tanto, Android TV es el corazón
del contenido multimedia de una casa
con la tecnología del Asistente de Google.
Pueden tener un teléfono inteligente,
un auto inteligente,
bocinas inteligentes.
Android TV reúne todo
el contenido multimedia, juegos, música…

Spanish: 
y experiencias,
en la pantalla grande de su sala de estar.
Últimamente, Android TV
tuvo un gran crecimiento.
Seis de cada diez de los fabricantes
de televisores inteligentes más importantes
incluyen Android TV en su televisor.
Asimismo, más de 140 proveedores
de TV pagada incluyen kits de configuración
con Android TV.
El incremento de los últimos años fue enorme.
Este gran crecimiento de Android TV
también se extiende a los desarrolladores.
Hace poco,
anunciamos que Google Play
para Android TV cuenta con más de 5,000 apps,
de las cuales más de 1,000
son de proveedores de contenido.
Hay muchas novedades en Android TV
y, en Google, estamos dedicando
mucho esfuerzo a esta interfaz.

Chinese: 
最终投放到客厅的大屏幕上
展示媒体、游戏、音乐等各类体验
Android TV近来发展势头迅猛
有60%的顶级智能电视生产商在
生产标配Android TV的电视
超过140家付费电视运营商在出产
搭载Android TV的电视盒
短短几年，Android TV使用量实现巨大增长
Android TV所呈现的强劲势头
也为开发者们带来了巨大动力
我们最近宣布了Google Play目前
拥有逾5000款适用于Android TV的应用
其中有1000多款是
流媒体内容提供方强制要求安装的应用
由此可见，Android TV发展潜力巨大
Google也在Android TV上投入大量精力

Japanese: 
これらすべての体験をリビングルームの
大きな画面に集約するのです
最近Android TVは勢いを増しています
スマートテレビ製造業者の
上位10社のうちの６社が——
Android TV内蔵のテレビを
出荷しています
140超の有料テレビ提供者も——
Android TV対応機器を
提供しています
ここ数年で大幅な増加を見せています
このAndroid TVの勢いは——
開発者にもあてはまります
Google Playの5,000以上の
Android TV向けアプリのうち——
ストリーミングコンテンツプロバイダーが
強制するものです
Android TVには多くの動きがあり——
GoogleはAndroid TVに注力しています

Korean: 
미디어, 게임, 음악 등과 같은
모든 경험을
거실의 큰 스크린
하나에 통합할 수 있습니다
Android TV는 최근에
탄력을 받고 있습니다
유수의 스마트 TV 제조업체
10곳 중 6곳은
Android TV를 내장한
제품을 출하하고 있으며
140곳 이상의 
유료 TV 서비스 업체에서도
Android TV가 내장된
셋톱 박스를 제공하고 있습니다
몇 년 사이에 크게 증가한 것입니다
Android TV의 이러한 추세는
개발자들에게도 영향을 미쳤습니다
최근 발표에 따르면
Android TV용 Google Play 앱이
5,000개 이상인데
그중 1,000개 이상이 스트리밍 서비스
업체에서 설치를 요구한 앱들이죠
이처럼 Android TV와 관련해
많은 일이 벌어지고 있고
Google에서는 Android TV에
많은 노력을 기울이고 있습니다

Portuguese: 
Mídia, jogos, música
e todas essas experiências
juntas em uma tela grande
na sua sala de estar.
O Android TV
tem crescido muito recentemente.
Seis das 10 maiores
fabricantes de smart TVs
oferecem TVs com o Android TV.
Além disso, mais de 140 operadoras
de TV paga oferecem conversores
com o Android TV.
Houve um aumento enorme nos últimos anos.
Esse crescimento do Android TV
também se estende aos desenvolvedores.
Anunciamos recentemente
que temos mais de 5 mil apps
no Google Play para Android TV,
mais de mil deles são de
provedores de conteúdo por streaming.
Há muita coisa acontecendo no Android TV.
No Google,
trabalhamos muito no Android TV.

English: 
media, games, music,
and all of those
experiences together into one
big screen in your living room.
Android TV's seeing a
lot of momentum recently.
6 out of 10 top smart
TV manufacturers
are shipping TVs
with Android TV.
And over 140 paid TV operators
are shipping setup boxes
with Android TV as well.
This has been a huge increase
over the past few years.
And this great momentum that
we are seeing on Android TV
extends to developers as well.
We recently announced
that we have now
over 5,000 apps on Google Play
for Android TV, over 1,000
of them being forced from
streaming content providers.
So there's a lot going
on in Android TV,
and at Google, we are focusing
a lot of efforts in Android TV.

Indonesian: 
Media, game, musik, serta semua
pengalaman tersedia
di layar TV ruang keluarga Anda.
Belakangan ini, 
Android TV makin digemari.
Enam dari 10
pabrikan TV pintar ternama
melengkapi TV produksinya
dengan Android TV.
Lebih dari 140 operator TV
berbayar juga melengkapi
dekodernya dengan Android TV.
Ini membuktikan kemajuan yang
amat pesat beberapa tahun belakangan ini.
Kemajuan pesat
Android TV ini juga
dirasakan oleh para developer.
Belum lama ini diumumkan sudah ada
lebih dari 5.000 aplikasi di Google Play
untuk Android TV, lebih dari 1.000
di antaranya berasal dari
penyedia konten streaming.
Ada banyak hal yang terjadi
di balik Android TV,
dan di Google, kami menaruh
banyak perhatian pada Android TV.

Japanese: 
Android TV向けの
魅力的なアプリを作成する方法を話します
最初にAndroidアプリがAndroid TVアプリで
あるための条件はなんでしょうか
Androidなので——
開発者としてのスキルを——
使いまわせますが
TVアプリとしての条件はなんでしょうか
基本的なところから始めると——
機能を宣言する必要があります
本当に基本的なことなのですが——
先ほど申し上げたとおり——
多くの主要なアプリで
無視したり見逃しているため——
知ってほしいのです
基本を見逃すと
魅力的なアプリは機能しません
最初に——
タッチスクリーンは不必要と宣言します
最後に確認したとき——
ホーム画面——
リビングルームのテレビを
触って操作する人はいませんでした
操作はリモコンで行います
leanbackを使うことも
宣言する必要があります

Indonesian: 
Mari bahas cara membuat
aplikasi Android TV yang menarik.
Sebelum lanjut, apa yang membuat aplikasi
Android layak disebut aplikasi Android TV?
Sebab tentunya,
dengan Android berarti
Anda bisa memanfaatkan ulang
kemampuan sebagai developer Android
untuk menciptakan aplikasi Android TV.
Namun, apa kriteria aplikasi TV?
Mula-mula, Anda
perlu mendeklarasikan fitur.
Saya paham bahwa
ini sangat mendasar, tetapi
jangan sampai Anda melupakannya
sebab seperti yang saya bilang tadi,
ada banyak aplikasi besar
yang melewati atau melupakan
aspek-aspek dasar ini.
Aplikasi menarik tak akan berfungsi
jika aspek dasar ini dilupakan.
Tentunya, fitur pertama
yang perlu diinformasikan
adalah tidak dibutuhkannya
layar sentuh.
Berdasarkan pengamatan
terbaru, pengguna
biasanya tidak menyentuh layar utama TV,
layar TV di ruang keluarganya
menggunakan jarinya.
Kita berinteraksi dengan
remote kontrol.

Chinese: 
接下来，我们来探讨如何打造
极富吸引力的卓越Android TV应用
首先需明确，Android应用需要具备
哪些要素才能成为Android TV应用？
显然，Android TV应用也是Android应用
开发者可以重复利用Android开发技能
构建Android TV应用
但这类电视应用需要具备哪些要素呢？
我们先从基本要素谈起
你需要声明应用的特征
这非常基础，但我之所以提到这点
是因为我前面说过
有很多主流应用都忽略或缺失
一些基本要素
任何应用如果少了这些基本要素，
都成不了富有吸引力的卓越应用
你需要声明的首个特征是
不需要触摸屏就能使用应用
根据上次调查发现
人们不会用手指触摸
住宅和客厅里的电视屏幕
而是会使用遥控器进行操控

English: 
So let's talk about creating
great engaging Android TV apps.
So to get started, what makes an
Android app an Android TV app?
Because of course,
being Android means
that you can reuse all of your
skills as an Android developer
to create an Android TV app,
but what makes it a TV app?
Well, to start with
the basics, you
have to declare your features.
And I know this is
really basic, but I
want you to touch on this
because, as I mentioned,
there are a lot of big
apps that skips or misses
some of these basics.
And no great engaging app
works if you miss the basics.
So of course, the first feature
that you need to declare
is that you don't
require a touch screen.
Because the last time
I checked, people
don't go touching
their home screen TVs,
their living room TVs
with their fingers.
We interact using
a remote control.

Portuguese: 
Vamos falar sobre como criar
apps interessantes para Android TV.
Para começar, o que faz um app Android
ser adequado para Android TV?
Claro, ser Android significa
que você pode reutilizar
todas as habilidades
de desenvolvedor Android
ao criar um app para Android TV,
mas o que faz dele um app para TV?
Para começar com o básico,
é preciso declarar os recursos.
Eu sei que isso é muito básico,
mas quero falar sobre isso porque
muitos apps grandes
não atendem ou não incluem
alguns desses princípios básicos,
e nenhum app funciona bem
se ignora princípios básicos.
O primeiro recurso
que precisa ser declarado
é que não é necessário touchscreen,
porque, até onde eu sei,
as pessoas não tocam na tela
da TV da sala de estar.
Interagimos usando o controle remoto.

Korean: 
이제 매력적인 Android TV 앱을
만드는 것에 대해 얘기하겠습니다
먼저, 어떤 Android 앱이
Android TV 앱이 될 수 있을까요?
당연히 Android 기반이므로
Android 앱 개발자의 모든 기술을
TV 앱에도 적용할 수 있겠죠
하지만 TV 앱은 뭐가 다를까요?
기본적인 것부터 말씀드리자면
먼저 기능을 선언해야 합니다
아주 기본적인 것이지만
짚고 넘어갈 필요가 있습니다
말씀드렸다시피
주요 앱들 중에서 이를 건너뛰거나
빠뜨린 경우가 많거든요
기본이 빠졌다면
인기 앱이라도 유용하지가 않죠
당연히 선언해야 하는
첫 번째 기능은
터치 스크린이 필요하지
않다는 것입니다
왜냐하면 제가 알기로는
사람들은 홈 스크린 TV나
거실 TV를 손가락으로
터치하지 않거든요
리모컨으로 상호작용하죠
그리고 린백을 사용한다는 것을
선언해야 합니다

Spanish: 
Hablemos de cómo crear apps
atractivas para Android TV.
¿Qué hace que una app de Android
sea apta para Android TV?
Claro que podrán aplicar
todas sus habilidades
de creación de apps para Android
al diseño de apps para Android TV,
pero ¿cuáles son las características
de una app para televisores?
Comencemos por los aspectos básicos.
Deben declarar sus características.
Sé que esto es evidente,
pero quiero mencionarlo
porque hay muchas apps reconocidas
que omiten ciertos pasos básicos
o cometen errores en ellos.
Por supuesto, ninguna app funcionará
a la perfección si se omiten estos pasos.
La primera característica que deben declarar
es que no requieren una pantalla táctil.
Obviamente,
nadie toca la pantalla del televisor
de la sala de estar con los dedos.
Interactuamos con ella
mediante un control remoto.
También tienen que declarar
que usan Leanback.

Spanish: 
No nos referimos exclusivamente
a la biblioteca Leanback.
Leanback es un término genérico
que describe la experiencia de mirar TV,
que es diferente
a la de usar un dispositivo móvil
porque miran a distancia
y en una posición cómoda,
en una situación relajada.
Deben declarar eso.
Luego, deben declarar el banner de su app.
Les contaré más
sobre los banners
porque siempre traen problemas.
Lo último que deben declarar
es el intent de Android TV,
que no es el intent principal.
Es decir, declaran el iniciador de Leanback.
En resumen,
declaran las características
que usan, el banner
y el intent de Leanback:
uno, dos y tres.

Chinese: 
此外，还要声明应用使用了Leanback
Leanback并不一定是指Leanback库
Leanback是用于定义一种
电视观看体验的通用术语
这种体验不同于使用移动设备
因为看电视时
你会与电视相距一定距离，保持躺靠姿势
这就是Leanback所描述的情景
所以必须声明这一点
接下来，需声明应用横幅
我随后会详细讲解横幅
因为我们在处理该资源时
经常会遇到一些问题
最后，还需声明
Android TV Intent
这里并非指主要Intent
这样你就声明了自己的Leanback启动器
综上所述，你需要声明应用的特征
然后是横幅
最后就是Leanback Intent
这三点就够了

Indonesian: 
Anda pun perlu mendeklarasikan
jika Anda menggunakan leanback.
Ini tidak serta-merta
merujuk pada Leanback library.
Leanback adalah istilah umum
yang digunakan untuk
menciptakan pengalaman menonton
TV yang berbeda dari
perangkat seluler
sebab TV ditonton dari
jarak tertentu dengan posisi
sedikit merebah,
dalam kondisi santai.
Jadi, Anda perlu menunjukkannya.
Selanjutnya, Anda harus
menunjukkan banner aplikasi.
Saya akan bahas lebih dalam
tentang banner, yakni sesuatu
yang sering membingungkan
kita.
Terakhir, Anda harus deklarasikan
intent Android TV,
yang bukan merupakan intent utama.
Jadi, deklarasikan
peluncur leanback Anda.
Ringkasnya, Anda
mendeklarasikan fitur
yang digunakan,
mendeklarasikan banner,
dan intent leanback.
Satu, dua, tiga.

Japanese: 
必ずしもLeanbackライブラリを
指すわけではないです
leanbackとは——
テレビを視聴する体験を指して
使っている包括的な言葉です
モバイルデバイスとは——
異なります
なぜなら後ろにもたれた姿勢
後ろにもたれた状態で——
離れて使用するからです
ですから宣言する必要があります
次にアプリケーションバナーを宣言します
バナーについては詳しく話します
なぜなら常に問題を抱える
部分だからです
最後にAndroid TVのインテントを
宣言します
メインインテントではありません
これでleanbackランチャーを
宣言しました
まとめると、使用する機能を宣言し——
バナーを宣言し——
leanbackインテントを宣言しました
３つですね

Portuguese: 
Além disso, é preciso declarar
que você usa Leanback.
Isso não se refere
necessariamente à biblioteca Leanback.
O Leanback é um termo genérico
para definir a experiência
de assistir TV, que é diferente
de usar um dispositivo móvel,
porque usamos a TV à distância,
reclinados, ou "leanback" em inglês.
Isso precisa ser declarado.
Depois é necessário declarar
o banner do app.
Falarei um pouco mais sobre o banner,
porque sempre temos problemas com isso.
Por último, é necessário
declarar o intent do Android TV,
que não é o intent principal.
Você declara
o inicializador Leanback.
Para resumir,
declaramos os recursos usados,
o banner,
e o intent do Leanback.
Um, dois, três.

English: 
Also, you have to declare
that you use leanback.
This doesn't necessarily
refer to the Leanback library.
Leanback is this
generic term that we
use to define this
experience of watching
TV, which is
different from using
a mobile device
because you're using it
at a distance in a
leanback position,
in a leanback situation.
So you have to declare that.
Next, you have to declare
your application banner.
I'm going to talk
a little bit more
about banner, which is something
that we always have problems
with.
And finally, you have to declare
your Android TV intent, which
is not the main intent.
So you've declared
your leanback launcher.
So putting it all together,
you declared the features
that you use, you
declare the banner,
and you declare your
leanback intent--
one, two, three.

Korean: 
이는 린백 라이브러리만을
의미하지 않습니다
린백은 TV 시청 경험을
정의하는 일반적인 용어이며
이는 휴대기기를
사용하는 것과는 다릅니다
왜냐하면 거리가 떨어진 곳에서
등을 기댄 채
사용하는 것이니까요
따라서 그것을 선언해야 합니다
그다음에는 앱 배너를
선언해야 합니다
배너에 대해서는 좀 더 자세히 설명하죠
항상 문제가 발생하는
부분이거든요
마지막은 메인 인텐트가 아닌
Android TV 인텐트의 선언입니다
이렇게 린백 런처를 선언했습니다
합쳐보자면
사용하는 기능을 선언했고
배너를 선언했으며
린백 인텐트를 선언했습니다
총 세 가지죠

English: 
Your features, your banner,
and your leanback intent.
But I want to talk
a little bit more
about the app banner itself.
That's the banner-- if
you've ever used Android TV,
you know how it looks.
But here's the thing.
In many, many situations,
it might look wrong,
and in many apps, we've
seen it looking wrong.
One of such examples is when
you provide a mobile icon
to your Android TV app.
What happens is that the
icon will be scaled and put
inside a dark rectangle.
So it looks like this weird
combination of a square icon
inside a rectangle area.
This happens when you provide
a mobile icon, 512 by 512,
in your drawable-xhdpi folder.
So that's wrong.
Do not do that.
Also, if you provide any banner
that is larger than 320 by 180,
it doesn't matter in
which folder you put it.
It's not going to
appear correctly.

Indonesian: 
Fitur, banner, dan intent
leanback Anda.
Saya ingin bahas lebih dalam
banner aplikasi secara khusus.
Itu banner yang dimaksud.
Jika Anda pernah menggunakan Android TV,
Anda tahu tampilannya.
Namun begini,
Kita kerap kali menjumpai
tampilan yang aneh ini,
di banyak aplikasi pun,
tampilannya terlihat aneh.
Salah satu contohnya adalah
saat menaruh ikon seluler
di aplikasi Android TV.
Yang terjadi adalah ikon
akan tampak kecil dan
ada dalam area
persegi berwarna gelap.
Tampilannya seperti
kombinasi aneh ikon persegi
di dalam area berbentuk persegi.
Inilah yang terjadi jika Anda menaruh
ikon seluler berukuran 512x512
di folder drawable-xhdpi.
Jadi itu salah.
Hindarilah kesalahan itu.
Lalu, jika memberikan banner
yang lebih besar dari 320x180,
terlepas di folder mana pun
banner itu disimpan,
tampilan banner tidak akan
sesuai harapan.

Chinese: 
特征、横幅以及Leanback Intent
但我想详细讲一下
应用的横幅
这就是横幅，如果你使用过Android TV
就会知道它是什么样的
但问题是
横幅显示出错的情况经常发生
而且很多应用都存在这种问题
例如，为Android TV应用
使用移动应用的图标时
就会出现问题
具体而言，图标会被缩小
出现在一个黑色的矩形内
如图所示，
矩形区域内显示了正方形图标
这种图案组合看起来很别扭
如果你在drawable-xhdpi文件夹中
放入512x512大小的移动应用图标
就会出现这个问题
这是错误的做法
千万不要这么做
同样，如果横幅尺寸大于320x180
那么无论将它放入哪个文件夹
横幅都无法正确显示

Spanish: 
Las características,
el banner y el intent de Leanback.
Quiero hablarles un poco más
acerca del banner de la app.
Ese es el banner.
Si alguna vez usaron Android TV,
seguro lo conocen.
Sin embargo, en muchos casos,
es posible que no se vea correctamente.
Lo hemos comprobado en numerosas apps.
Un ejemplo es cuando proporcionan
un ícono de dispositivo móvil
para la app de Android TV.
Lo que sucede es que
se ajusta la escala del ícono
y se coloca el nuevo en un rectángulo oscuro.
Se obtiene una combinación extraña:
un ícono cuadrado
dentro de un área rectangular.
Eso sucede con los íconos
para dispositivos móviles, de 512 por 512,
en la carpeta de elementos de diseño xhdpi.
Son inadecuados.
No los usen.
Además,
si su banner mide más de 320 por 180,
no importa en qué carpeta lo coloquen,
no se verá correctamente.
En este ejemplo, tenemos una imagen

Korean: 
기능, 배너, 린백 인텐트입니다
앱 배너 자체에 대해
좀 더 이야기하도록 하죠
이것이 배너인데
Android TV를 사용한 적이 있다면
어떻게 생겼는지 아실 텐데
중요한 건 이겁니다
이게 이상하게 보이는 경우가 많다는 거죠
그런 앱들이 정말 많았습니다
Android TV 앱에 모바일 아이콘을
제공할 경우를 예로 들면
이때 발생하는 일은 아이콘이 확장되고
어두운 직사각형 안에 들어갑니다
직사각형 영역 안에 있는
정사각형 아이콘이라는
이상한 조합이 되죠
512x512의 모바일 아이콘을
드로어블-xhdpi 폴더에
제공하면 이렇게 됩니다
이러면 안 됩니다
그렇게 하지 마세요
또한 320x180보다 큰 배너를 제공한다면
어떤 폴더에 넣든
상관이 없습니다
올바르게 표시되지 않을 테니까요
이 예시에서는 REST 드로어블 폴더에

Portuguese: 
Seus recursos, banner
e intent do Leanback.
Quero falar mais um pouco
sobre o banner do app.
Este é o banner.
Se já usou o Android TV,
você sabe a aparência dele.
Mas a questão é a seguinte:
em muitas situações,
ele pode ser exibido de modo errado.
Em muitos apps,
vemos essa aparência incorreta.
Um exemplo disso é quando
um ícone para dispositivos móveis
é fornecido com o app para Android TV.
Nesse caso, o ícone será dimensionado
e posicionado em um retângulo escuro.
Ele é exibido
como uma combinação estranha
de um ícone quadrado
dentro de uma área retangular.
Isso ocorre quando você
fornece um ícone móvel, de 512 por 512,
na pasta drawable-xhdpi.
Isso é errado.
Não façam isso.
Além disso, se você fornecer
um banner com mais do que 320 por 180,
não importa em que pasta você o coloque,
ele não será exibido corretamente.

Japanese: 
機能、バナー、leanbackインテントです
アプリバナー自体について——
もう少し説明します
これがバナーです
もし使用した経験があるなら——
わかると思います
注意してください
多くの状況で適切に表示されません
多くのアプリで
誤って表示されるのを見ました
一例はAndroid TVアプリに——
モバイルアイコンをつける場合です
アイコンが縮小され——
暗い色の長方形の中に入ってしまいます
長方形の範囲の中に
正方形のアイコンがある——
変な組み合わせに見えます
drawable-xxhdpiフォルダに
512x512のアイコンを入れると——
発生します
誤りです
こうはしないでください
また320x180よりも
大きなバナーを入れた場合も——
入れるフォルダは関係なく——
正しく表示されません

English: 
In this example, we have
a 916 by 540 pixel image
in the REST drawable folder.
It doesn't work if you put
it in a different place.
So here, I have
the same image put
in the drawable [INAUDIBLE].
Also doesn't look correctly.
Again, the way to
do it is exactly
320 by 180 pixels in the
REST drawable-xhdpi folder.
This way, your banner
looks correctly.
And remembering that your
banner is used as your app
representation, but it's
also used elsewhere,
like, for example,
in the Play Next row.
So nailing it down
correctly is very important.
Finally, if you want
your application
to be published in the
PlayStore for Android TV,
there's a special
opt-in distribution
that you have to check.
If you do not do that, it's not
going to go for the PlayStore.
So in your Play Console, you
have to find this Distribution

Chinese: 
举个例子，
将916x540像素的图片
放入REST drawable文件夹
横幅的显示效果如图所示
即使将该图片放入其他文件夹
横幅也会显示有误
例如，这是将同一张图片放入
drawable-tvdpi文件夹时
横幅的显示效果
横幅仍不能正确显示
正确的做法仍然是
将320x180像素的图片放入
REST drawable-xhdpi文件夹
只有这样，横幅便会正确显示
还要注意，横幅不仅可用于展示应用
还有其他用途
如用在“接下来播放”行中
因此正确放置横幅非常重要
最后，要想在Play商店中
面向Android TV发布应用
则须勾选专门的分发范围选项
如果不这样做，应用
将不会发布到Play商店的Android TV专区
因此必须在Play管理中心找到

Japanese: 
この例では960x540ピクセルの画像を——
REST drawableフォルダに
入れています
別の場所に入れてもだめです
ここでは同じ画像を——
別のdrawableフォルダに入れています
うまく表示されません
正しく行うには——
REST drawable-xhdpiフォルダに
320x180の画像をいれます
これで正しく表示されます
アプリを表すためにバナーを使いますが——
他でも使われることに留意してください
たとえば次のおすすめ行です
正確に実施することが非常に重要です
最後にアプリケーションを——
Android TV向けPlayStoreで
公開する場合——
特別なオプトインを——
チェックします
チェックしなければ公開されません
Play Consoleでオプトインを——
見つける必要があります

Indonesian: 
Contoh ini menampilkan gambar
dengan piksel 916x540
di folder REST drawable.
Gambar tak akan berfungsi
jika ditaruh di tempat lain.
Di sini saya ada gambar
yang disimpan di
drawable [TIDAK TERDENGAR].
Tampilannya juga
tidak sesuai harapan.
Sekali lagi, cara yang tepat
untuk melakukannya adalah lewat
piksel 320x180 di folder
REST drawable-xhdpi.
Dengan begini, banner
ditampilkan dengan benar.
Ini sangat penting sebab banner
digunakan untuk mewakili
aplikasi, dan juga di
tempat lain,
misalnya, di baris
Putar Berikutnya.
Jadi, ketepatan ukuran
sangatlah penting.
Terakhir, jika ingin
aplikasi
masuk ke Play Store
untuk Android TV,
ada pilihan distribusi khusus
yang harus Anda centang.
Jika terlewat, aplikasi
tak akan dimuat di Play Store.
Di Konsol Play, carilah
aplikasi Distribution ini

Korean: 
916x540픽셀 이미지가 있는 경우를 보여줍니다
다른 곳에 두면 안 되니까
여기에서는 같은 이미지를
드로어블-tvdpi에 넣었습니다
이 또한 올바르게 보이지 않죠
다시 말하자면 올바른 방법은
REST 드로어블-xhdpi 폴더에
정확히 320x180 픽셀로 넣는 겁니다
그럼 배너가 제대로 보이죠
배너는 앱을
대표하는 데 사용되지만
관심 목록과 같은 곳에서도
사용된다는 점을 기억하시기 바랍니다
따라서 올바르게 표시하는 것이
매우 중요하죠
마지막 단계로 Android TV용
Play 스토어에 앱이
게시되기를 원한다면
사용 설정해야 하는
배포 옵션이 있습니다
이걸 안 하면
Play 스토어에 올라가지 않죠

Spanish: 
de 916 por 540 píxeles
en la carpeta de elementos de diseño REST.
Tampoco funciona en otro lugar.
Aquí tenemos la misma imagen
en la carpeta de elementos de diseño tvdpi.
Tampoco se ve bien.
Es que, como ya dijimos.
las medidas correctas son, exactamente,
320 por 180 píxeles en la carpeta REST
de elementos de diseño xhdpi.
De ese modo, el banner se ve correctamente.
Recuerden que el banner
es la representación de su app
y también se usa en otros lugares,
como en la fila Mi lista.
Realmente, es importante que sean precisos.
Finalmente, si quieren que su app
se publique en Play Store para Android TV,
deben marcar
la opción de distribución especial.
Si no lo hacen,
la app no aparecerá en Play Store.
En Play Console, deben buscar la opción

Portuguese: 
Neste exemplo,
temos uma imagem com 916 por 540 pixels
na pasta res/drawable.
Isso não funcionará
se ela for colocada em outro lugar.
Aqui temos a mesma imagem
colocada em drawable-tvdpi.
Ela também não é exibida corretamente.
Mais uma vez, a forma de fazer isso
é usar exatamente 320 por 180 pixels
na pasta res/drawable-xhdpi.
Assim o banner é exibido corretamente.
Lembrem-se de que o banner é usado
para representar seu app,
mas também em outros lugares,
como, por exemplo,
na linha "Novidades Play".
Portanto, fazer isso corretamente
é muito importante.
Por último, se quiser
que seu app seja publicado
na Play Store para Android TV,
há uma distribuição opcional
que você precisa selecionar.
Se você não fizer isso,
ele não irá para a Play Store.

Korean: 
Play Console에서 모든 TV에 대해
이 옵션을 사용 설정해야 합니다
린백 런처가 있다는 것을
보여주는 것으로는 충분하지 않아요
반드시 TV에서 이 배포 설정을 찾아
사용 설정해야 합니다
그 이유를 설명드리자면
린백 런처처럼 모든 것이
활성화되었다고 말할 수 있는
하이브리드 플랫폼이나
멀티플랫폼 개발 환경이 많지만
실제로 이와 같은
개발 환경을 사용해
TV에 테스트해 본 적은
없을 수 있기 때문입니다
이것이 꼭 TV에서 제대로
작동한다는 뜻은 아니므로
이 체크박스를 선택해야 하는 것입니다
좋습니다
지금까지 말씀드린 사항이
기본적으로 지켜야 하는 것들입니다
이제 린백 라이브러리에 대해
이야기해봅시다
물론 린백 라이브러리는
저희가 제공하는
고급 위젯 모음입니다
이 위젯은 콘텐츠별 사양을 지키며
멀리 떨어진 거리에서
TV를 사용할 때

English: 
app on every TV.
It's not enough to show that
you have a leanback launcher.
You actually have to find
this Distribute on TV
and check that box.
And the reason for that is that
there are many hybrid platforms
or multi-platform development
environments that automatically
says that everything's enabled,
like a leanback launcher,
for example, but you might never
have actually tested on a TV
by using these
development environments.
So that doesn't
necessarily mean it's
going to work correctly
on a TV, so that's
why we ask you to check
that specific checkbox.
Good.
So these are the basics.
These are the bare bones
that you have to nail.
Let's talk about the
Leanback library now.
Of course, the
Leanback library is
this set of high-level
widgets that we provide.
They conform to the
material-wise specs
and they provide
a great experience

Chinese: 
“在Android TV上分发您的应用”选项
不仅要表明应用包含Leanback启动器
还需找到并勾选
“在Android TV上分发您的应用”复选框
因为有众多混合平台或多平台开发环境
宣称它们支持所有资源
如Leanback启动器
但使用这些开发环境构建的应用
可能从未真正在电视上接受测试
所以我们不能保证
这类应用一定能在电视上正常运作
因此我们要求各位务必勾选此复选框
很好
以上就是我要讲的基本要素
这也是大家必须掌握的基本要点
接下来，我们来聊聊Leanback库
如图所示，Leanback库
是我们提供的一组高级微件
它们完全符合Material Design规范
可为远距离使用电视的用户

Spanish: 
"Distribuir la app en Android TV".
No basta con demostrar
que tienen un iniciador de Leanback.
Deben buscar la opción
de distribución para TV
y marcar la casilla.
El motivo de ello
es que existen muchos entornos de desarrollo
de plataformas híbridas o multiplataformas
en los que todo
está habilitado automáticamente,
como el iniciador de Leanback,
pero quizás nunca hayan hechos pruebas
en TVs con estos entornos de desarrollo.
No hay garantías de que su app
funcionará correctamente en un televisor,
por eso les pedimos
que marquen esa casilla específica.
Por lo tanto, deben dar en el clavo
en relación con esos aspectos básicos.
Ahora hablemos de la biblioteca Leanback.
Como ya saben,
la biblioteca Leanback
es un conjunto de widgets
de alta calidad que les ofrecemos.
Estos se ajustan a los aspectos físicos

Indonesian: 
di semua TV.
Menunjukkan bahwa Anda
punya peluncur leanback saja tak cukup.
Anda perlu mencari
kotak Distribute di TV
dan mencentangnya.
Alasannya, banyak platform hibrid
atau lingkungan pengembangan
multi-platform yang otomatis
menginformasikan semua sudah diaktifkan,
misalnya peluncur leanback,
tetapi mungkin Anda
belum pernah mengujinya di TV
dengan menggunakan lingkungan
pengembangan ini.
Ini tak akan menjamin
semuanya berjalan
mulus di TV, jadi itu
sebabnya Anda diminta
untuk mencentang kotak itu.
Baik.
Nah, itulah dasar-dasarnya.
Itulah poin utama 
yang harus diingat.
Sekarang mari bahas Leanback library.
Leanback library adalah
sekumpulan widget canggih
yang kami sediakan.
Library ini mampu menyesuaikan
dengan spesifikasi bahan
dan menghadirkan
pengalaman menonton TV

Japanese: 
leanbackランチャーがあることを
示すだけでは不十分です
配信するためのオプトインを探し——
チェックしないといけません
その理由は
多くのハイブリッドプラットフォームや——
マルチプラットフォーム開発環境では——
leanbackランチャーなど
すべてが有効と自動的に表示されますが——
これらの開発環境を使い——
実際にテレビで
テストしていないかもしれないからです
テレビで正しく——
機能するとは限らないので——
このチェックボックスをチェックするように
お願いしています
いいでしょうか
これらが基本です
押さえる必要がある最小限です
ではLeanbackライブラリです
Leanbackライブラリは——
当社が提供する
高度なウィジェットのセットです
物理的なスペックに準拠し——
離れてテレビを使用する際——

Portuguese: 
No Play Console, encontre a opção
"Distribua seu app no Android TV".
Não basta mostrar que você
tem um inicializador Leanback.
É preciso encontrar
a opção de distribuir para TV
e marcar essa caixa.
O motivo disso
é que há muitas plataformas híbridas,
ou ambientes
de desenvolvimento multiplataforma,
que informam automaticamente
que tudo está ativado,
como um inicializador Leanback,
mesmo que você
nunca tenha testado o app em uma TV
usando esses ambientes de desenvolvimento.
Isso não significa
que o app funcionará na TV,
por isso pedimos
que essa caixa seja marcada.
Muito bem.
Esses são os princípios básicos.
Esses são os fundamentos
que precisam ser atendidos.
Vamos falar agora
sobre a biblioteca Leanback.
A biblioteca Leanback
é um conjunto de widgets gerais.
Eles seguem
as especificações do Material Design
e fornecem uma ótima experiência

Indonesian: 
yang menyenangkan.
Tersedia widget untuk
layar utama yang berisi
misalnya, baris dan panel navigasi.
Ada widget untuk
detail konten.
Ada widget untuk berbagai kebutuhan.
Namun, pertanyaan yang
paling sering muncul soal *Leanback
library* adalah widget
yang disediakan
tidak sepenuhnya
cocok dengan kebutuhan kami.
Apakah Leanback library
bisa disesuaikan?
Jawabannya adalah ya.
Pada dasarnya, ada dua
cara menyesuaikan
Leanback library.
Cukup ubah nilai warna
dan dimensi
di aplikasi, atau tambahkan
presenter kustom.
Mari bahas warna dan
dimensi secara singkat.
Jika mencermati fragmen
Jelajahi, yang

English: 
for using TV at a distance.
We have widgets for the
home screen, which contains,
for example, rows and
a navigation drawer.
We have widgets for
content details.
We have widgets for a lot
of different situations.
But the most frequent question
that we hear about the Leanback
library is, well, the
widgets that you provide
doesn't fit 100% what we need.
So are there any ways to
customize the Leanback library?
Well, the answer is yes.
There are basically two ways
you can go about customizing
the Leanback library.
You can just simply change the
colors and dimensions values
in your app, or you can
provide custom presenters.
So let's talk a little bit
about colors and dimensions.
If you look specifically at
the Browse fragment, which

Chinese: 
提供卓越的体验
我们推出了适用于主屏幕的微件
包括各类行和一个抽屉式导航栏
推出了用于展示内容详情的微件
还有适用于其他情形的各类微件
不过，对于Leanback库
我们最常听到的问题是
你们提供的微件
并不能完全满足我们的需求
我们可以自定义Leanback库吗？
当然可以
大致来说，有两种方法可以
对Leanback库进行自定义
第一种是直接在应用中更改颜色和尺寸值
第二种是使用自定义Presenter
下面我就简单讲一讲颜色和尺寸
我们就以BrowseFragment为例

Japanese: 
素晴らしい体験を提供します
ホーム画面用のウィジェットがあります
行とナビゲーションドロワーなどが
含まれています
コンテンツの詳細に関する
ウィジェットがあります
さまざまなウィジェットがあります
しかし最もよくある質問は——
提供されているウィジェットが——
ニーズに完全に対応していない場合——
カスタマイズする方法がないかというものです
答えはイエスです
Leanbackライブラリを
カスタマイズする方法は——
基本的に２つあります
単純にアプリで色とサイズを変更する——
またはカスタムプレゼンターを提供できます
色とサイズについて少し説明します
多くのアプリケーションの
ホーム画面に使用されており——
サイドバーナビゲーションと——

Korean: 
훌륭한 경험을 제공합니다
예를 들어 홈 스크린용 위젯에는
여러 행과 탐색 창이 있습니다
콘텐츠 세부정보용 위젯도 있고
다양한 상황에 걸맞은 위젯이 있죠
그런데 린백 라이브러리와 관련해
가장 자주 듣는 질문은
여러분이 제공하는 위젯이
저희의 요건과
100% 맞지 않는다는 것입니다
그럼 린백 라이브러리를
맞춤설정할 방법이 있을까요?
물론 있습니다
린백 라이브러리를 맞춤설정하는
방법은 기본적으로 두 가지가 있습니다
간단히 앱에서 색이나 크기 값을
바꾸는 방법과
커스텀 프레젠터를
제공하는 방법이 바로 그것이죠
색과 크기에 대해
잠깐 이야기해 봅시다
여러 앱의 홈 스크린에 사용되는

Portuguese: 
para usar a TV à distância.
Temos widgets
para a tela inicial, que contêm,
por exemplo,
linhas e uma gaveta de navegação.
Temos widgets para detalhes de conteúdo
e para muitas situações diferentes.
A dúvida mais comum
sobre a biblioteca Leanback
é que os widgets fornecidos
não atendem 100% do que precisamos.
Há alguma forma
de personalizar a biblioteca Leanback?
A resposta é sim.
Há duas maneiras
de personalizar a biblioteca.
Você pode alterar
as cores e dimensões no seu app
ou fornecer apresentadores personalizados.
Vamos falar um pouco
sobre cores e dimensões.
Se você observar o fragmento de navegação,

Spanish: 
y brindan una magnífica experiencia
de uso del televisor a distancia.
Tenemos widgets para la pantalla principal,
por ejemplo, con filas
y un panel lateral de navegación.
Tenemos widgets para detalles de contenido
y para muchos otros elementos.
Sin embargo, suelen decirnos
lo siguiente sobre la biblioteca Leanback:
"Los widgets que ofrecen
"no satisfacen el 100%
de nuestras necesidades.
"¿Se puede personalizar
la biblioteca Leanback?".
La respuesta es sí.
La biblioteca Leanback puede personalizarse
de dos maneras.
Pueden cambiar los valores
de colores y dimensiones
en su app
o bien ofrecer presentadores personalizados.
Hablemos de los colores y las dimensiones.
Si observan el fragmento de exploración,
que se usa
en la pantalla principal

Chinese: 
它常用于许多应用的主屏幕
作用是显示侧边导航栏
和内容行
单就BrowseFragment而言
可以对大约20种属性
设置颜色和尺寸值
这些属性包括内边距、标题样式和行样式等
对于抽屉式导航栏
以及每个卡片等等，也是如此
例如，我们常会遇到这样的问题
我可以将抽屉式导航栏缩短吗？
是的，当然可以
不必编写代码就能实现这一目标
只需更改边距、内边距和
其他尺寸即可
的确，在记录这些属性方面
我们还有待加强
有时这些属性未必容易找到
但它们确实存在

English: 
is the one that is
used for many home
screen of many applications,
which is the one that shows up
side bar navigation and
the rows of contents,
there are almost 20 properties
only about the Browse fragment
that you can modify in your
colors and your dimensions
values.
Things like padding, like
title styles, row styles.
And this applies also to
the navigation drawer,
to each of the individual
cards, and so on and so forth.
So for example,
frequent question,
can I make my navigation
drawer shorter?
Yes, you can.
You don't need to
write code for that.
Just by changing the
margins and the margin
paddings and other
dimensions, you can do that.
Yes, we have to do a
better job at documenting
these properties.
Sometimes they are not
necessarily easy to find.
But they exist and
you can go a long way

Indonesian: 
digunakan di banyak layar utama
di berbagai aplikasi, yang
menampilkan
navigasi sidebar dan baris konten,
ada hampir 20 properti yang 
terkait dengan fragmen Jelajahi saja
yang nilai warna dan dimensinya
bisa diubah.
Elemen seperti padding,
bentuk judul, bentuk baris.
Ini juga bisa diterapkan
di panel navigasi,
di setiap kartu dan sebagainya.
Satu contoh pertanyaan
yang lazim ditanyakan:
bisakah panel navigasi
dibuat jadi lebih pendek?
Bisa.
Tak perlu menulis kode.
Cukup ubah saja margin,
padding margin, dan
dimensi lain untuk
membuatnya lebih pendek.
Semua properti ini harus betul-betul
dicatat.
Terkadang properti ini
memang sulit dicari.
Namun, properti ini
ada dan bisa memudahkan Anda

Spanish: 
de muchas apps
para mostrar la barra lateral
de exploración y las filas de contenido,
verán que hay casi 20 propiedades
exclusivas de este fragmento
a las que pueden cambiarles los valores
de color y dimensión.
Otros ejemplos son los espacios
y los estilos de títulos y de filas.
Esto también se aplica
al panel lateral de navegación,
a cada tarjeta individual, etcétera.
Por ejemplo, suelen preguntarnos
si se puede achicar
el panel lateral de navegación.
Sí, se puede.
No es necesario escribir código para eso.
Solo deben modificar los márgenes,
y sus espacios y demás dimensiones.
Debemos mejorar la documentación
de estas propiedades.
A veces, no son fáciles de encontrar;
pero existen, y cambiar sus valores

Korean: 
'둘러보기' 조각을 예로 들어 보죠
이는 사이드바 탐색 창이나
콘텐츠 행에 표시되는데
둘러보기 조각에 대해서만도
색과 크기 값에
변경할 수 있는 속성이 
거의 20개가 있습니다
패딩이나 제목 스타일,
행 스타일과 같은 것들이죠
이는 탐색 창이나
각 개별 카드에도 적용되고
다양하게 적용됩니다
자주 묻는 질문 하나가 바로
탐색 창을 더 짧게
만들 수 있는지 여부인데
가능합니다
코드도 필요 없죠
여백, 여백 패딩 및 다른 크기를
바꾸는 것만으로도
가능합니다
그리고 이런 속성들은 
잘 기록해 두어야 합니다
가끔 이런 속성들은
찾기가 쉽지 않지만
엄연히 거기에 존재하고 있으며

Japanese: 
コンテンツの行を表示する——
ブラウズフラグメントに注目すると——
色とサイズ値を変更できるプロパティが——
ブラウズフラグメントのものだけで——
約20あります
パディング、タイトルのスタイル
行のスタイルなどです
ナビゲーションドロワーも同様で——
それぞれのカードに関するものなどです
よくある質問があります——
ナビゲーションドロワーを短くできるか
できます
コードを書く必要はないんです
マージン、マージンパディング
その他を変更するだけで——
可能です
これらのプロパティをうまく整理する——
必要はあります
見つけにくいこともありますから
しかしちゃんとあります

Portuguese: 
que é usado
na tela inicial de muitos apps,
fornecendo navegação
em painel lateral e linhas de conteúdo,
há quase 20 propriedades
somente desse fragmento
com valores
de cores e dimensões modificáveis.
Elementos como padding,
estilos de títulos e de linhas.
Isso também se aplica
à gaveta de navegação, aos cards etc.
Por exemplo, esta é uma dúvida frequente:
é possível diminuir a gaveta de navegação?
Sim.
Não é preciso escrever um código.
Basta alterar as margens,
o padding e outras dimensões.
Precisamos melhorar
a documentação dessas propriedades.
Às vezes, não é fácil encontrá-las,
mas elas existem
e é possível fazer muitas coisas

Spanish: 
puede ser muy beneficioso.
Sin embargo, en algunos casos,
no es suficiente.
La biblioteca Leanback
se basa en MVP o Patrón modelo-vista,
uno de los tantos patrones del tipo MV.
Muchos de esos widgets
les permiten ofrecer
un presentador personalizado.
No voy a detallar las diferencias
entre MVP, MVC o MVVM.
La realidad es que, en MVP, el presentador
actúa como nexo entre el modelo y la vista.
Además, es responsable
de instanciar o inflar
(en términos de Android) la vista.
En consecuencia, al proporcionar
un presentador personalizado,
ustedes tienen el control absoluto
de su apariencia,
de la apariencia del widget
porque pueden
ofrecer una vista personalizada.
Veamos un ejemplo.
Analizaré el fragmento de exploración

English: 
just by modifying the
value of these properties.
Now, in some cases,
that is not enough.
So the Leanback
library, it's based
on MVP, or Model
View Pattern, which
is one of the many
MV-whatever patterns.
And many of those
widgets, they allow you
to provide a custom presenter.
I'm not going to
delve into the details
about what's the difference
between MVP or MVC or MVVM,
but the fact is that,
on MVP, your presenter
acts as the glue between
the model and the view.
But it's also responsible for
instantiating or inflating,
in Android language, the view.
Which means that, by
providing a custom presenter,
you're actually in
complete control of what
you want it to look
like or to what
that widget should
look like because you
can provide a custom view.
So let's take a
look at an example.
Again, I'm going to
use the Browse fragment

Indonesian: 
hanya dengan mengubah nilainya.
Di situasi tertentu,
tidak cukup hanya dengan cara itu.
Leanback library berbasis
MVP atau Model View
Pattern, salah
satu dari sekian banyak
jenis MV lainnya.
Banyak dari widget itu
yang memungkinkan Anda
membuat presenter kustom.
Saya tak akan membahas terlalu dalam
soal perbedaan MVP atau
MVC atau MVVM,
tetapi sebetulnya,
di MVP, presenter
bertindak sebagai penghubung
antara model dan tampilan.
Presenter juga bertugas untuk
memberi contoh atau meningkatkan -
dalam istilah Android - tampilan.
Artinya, dengan membuat
presenter kustom,
Anda bisa sepenuhnya mengatur
tampilannya atau
tampilan widget
karena Anda bisa
membuat tampilan kustom.
Mari kita bahas contoh lain.
Saya akan kembali ambil fragmen
Jelajahi sebagai contoh

Portuguese: 
só modificando
o valor dessas propriedades.
Em alguns casos, isso não é o suficiente.
A biblioteca Leanback é baseada em MVP,
ou padrão modelo-visualização,
que é um dos muitos
padrões "MV-alguma-coisa".
Em muitos desses widgets,
você pode fornecer
um apresentador personalizado.
Não entrarei em detalhes
sobre a diferença entre MVP, MVC ou MVVM,
mas, no MVP, o apresentador age
como a "cola"
que liga o modelo e a visualização.
Ele também é responsável pela instanciação
ou pela inflação,
na linguagem do Android, da visualização.
Ou seja,
com um apresentador personalizado,
você tem controle completo
da aparência do widget,
porque você pode fornecer
uma visualização personalizada.
Vamos ver um exemplo.
Vou usar o fragmento de navegação

Korean: 
그 속성의 값을 변경하는 것만으로도
많은 일을 할 수 있습니다
간혹 그것만으로 부족한 경우가 있습니다
린백 라이브러리는 MVP라고도 하는
모델 뷰 패턴을
기반으로 하는데
MV로 시작하는 여러 패턴
중 하나입니다
그런 위젯 중 대부분은
커스텀 프레젠터를 허용합니다
MVP, MVC 또는 MVVM에
어떤 차이가 있는지
자세히 이야기하지는 않겠습니다
중요한 사실은 MVP에서는 프레젠터가
모델과 뷰 사이의 접착제
역할을 한다는 겁니다
또한 Android 언어로
뷰를 인스턴스화하거나
인플레이트하는 역할도 하죠
그 말은 커스텀 프레젠터를 제공하면
맞춤설정된 뷰를
제공할 수 있으므로
실제로 보이는 모습이나
어떻게 보여야 하는지를
완전히 제어할 수 있습니다
예시를 하나 보여드리겠습니다
둘러보기 조각을 다시 쓸 건데요

Chinese: 
仅修改这些属性的值就会大有裨益
但在某些情况下，光靠这些还不够
这就需要用到Leanback库
它基于Model View Presenter(MVP)构建
MVP是许多MV模式之一
这些微件大多允许
使用自定义Presenter
这里我不打算详细说明
MVP、MVC或MVVM之间的区别
但事实上，MVP中的Presenter
不仅在Model层和View层之间起到“胶水”作用
它还负责使用Android语言中对视图
执行实例化或膨胀操作
这就是说，提供自定义Presenter后
就能制作自定义视图
进而随心所欲地控制
视图的呈现方式
以及微件的呈现方式
我们来看一个例子
这次我还以BrowseFragment为例

Japanese: 
これらのプロパティの値を変えるだけで
大きな効果があります
一部のケースではこれだけでは不十分です
Leanbackライブラリは——
MVPまたは
モデルビューパターンに基づき——
MVから始まる
多くのパターンのうちの１つです
それらのウィジェットの多くは——
カスタムプレゼンターの提供を可能にします
MVP、MVC、MVVMの違いについて——
詳細は掘り下げませんが——
事実としてMVPならばプレゼンターは——
モデルとビューの間の接着剤のような
役割をします
ビューのインスタンス化
Androidならばinflateの——
役割も持ちます
カスタムプレゼンターを提供して——
その見た目やウィジェットの見た目を——
完全に制御できます
なぜなら——
カスタムビューを提供できるからです
では例を見てみましょう
ここでもブラウズフラグメントを使います
ほとんどの場合——

Korean: 
앱의 메인 화면에 가장 많이
사용되는 것이기 때문이죠
이 둘러보기 조각에는
개별 목록 행을 보여주기 위한
객체 어댑터의 배열이 있습니다
개별 목록 행에는
헤더 항목과 포스트 어댑터 등이
있어야겠죠
헤더 항목 프레젠터를
중점적으로 얘기하겠습니다
탐색 창의 형태를 맞춤설정하는 데
사용되는 프레젠터죠
예를 들어 제가 탐색 창을 만들고 싶고
텍스트와 제목에 가깝게 아이콘을
표시하고 싶다고 합시다
코드는 Java라고 하죠
여기서 할 수 있는 일은
커스텀 프레젠터를 제공하는 것입니다
헤더 프레젠터니까
아이콘 헤더 항목 프레젠터라고
명명하도록 하죠
이제 최소한 세 가지 다른 메서드를
덮어써야 합니다
이 세 가지는 바로
onCreateViewHolder,
onBindViewHolder,
onUnbindViewHolder입니다

Japanese: 
アプリのメイン画面として使われるからです
ブラウズフラグメントは——
一覧の行を表示するため——
アレイオブジェクトアダプターを含み
要求します
一覧の行には
ヘッダー項目やポストアダプターなどが——
必要です
しかしここでは
ナビゲーションドロワーの見た目を——
カスタマイズできる
ヘッダー項目プレゼンターに——
注目します
ナビゲーションドロワーが必要で——
テキストの近く、タイトルの近くに
アイコンを表示したいと——
しましょう
Javaのコードですが——
カスタムプレゼンターを
提供することで可能です
ここでは
IconHeaderItemPresenterです
RowHeaderPresenterを
継承しています
そして最低３つのメソッドを上書きする——
必要があります
３つの関数です
onCreateViewHolder——
onBindViewHolder
onUnbindViewHolderです

Spanish: 
porque es el más usado
como pantalla principal de las apps.
Este fragmento
contiene y espera
un adaptador de objeto de arreglo
para mostrar las filas de la lista.
Cada fila debe contar con un encabezado,
un adaptador de entradas, etcétera.
Pero me concentraré
en el presentador de encabezado,
que se puede usar
para personalizar la apariencia
del panel lateral de navegación.
Supongamos que quieren mostrar íconos
cerca del texto, cerca de los títulos,
en el panel lateral de navegación.
Este código está en Java.
Lo que pueden hacer
es suministrar el presentador personalizado.
En este caso,
lo llamé IconHeaderItemPresenter,
que extiende el presentador de encabezado.
También deben sobrescribir
tres métodos diferentes
como mínimo.
Tres funciones diferentes:
onCreateViewHolder,
onBindViewHolder y onUnbindViewHolder.

English: 
because it's the one
that's mostly used
as the main screen of apps.
The Browse fragment,
it contains and it
expects an array
object adapter for it
to show the
individual list rows.
And the individual list rows
wants a header item and a post
adapter, et cetera, et cetera.
But I'm going to focus on the
header item presenter, which
is the one that we can use to
customize how the navigation
drawer looks.
So for example, say I want
to have my navigation drawer
and I want to display
icons close to my text,
close to my titles.
Well, what you can do--
and this code is in Java.
What you can do is provide
your custom presenter.
In this case, I'm calling it
the icon header item presenter,
extending on header presenter.
And you have to overwrite
three different methods
at bare minimum.
Three different functions--
onCreateViewHolder,
onBindViewHolder, and
onUnbindViewHolder.

Chinese: 
因为它是用于创建
应用主屏幕的最常用类之一
BrowseFragment包含并且需要
数组对象适配器
来显示单个列表行
而单个列表行又需要标题项和
发布适配器，以此类推
但我将重点介绍
HeaderItemPresenter
我们可以利用它来自定义
抽屉式导航栏的呈现方式
例如，假设我想自定义抽屉式导航栏
并将图标显示在文本旁边
紧挨标题放置
这里我们使用Java语言编写代码
你可以提供你的自定义Presenter
本例中，我将它命名为
IconHeaderItemPresenter
它是对HeaderPresenter的扩展
你必须至少重写
三种不同方法
对应的三类不同函数
分别为onCreateViewHolder
onBindViewHolder和
onUnbindViewHolder

Portuguese: 
porque ele é o mais usado
como tela inicial de apps.
O fragmento contém e espera
um adaptador de objeto de matriz
para exibir
as linhas individuais da lista,
e essas linhas exigem
um item de cabeçalho,
um adaptador de postagem etc.
Meu foco será
o apresentador do item de cabeçalho,
que é usado para
personalizar a gaveta de navegação.
Digamos que eu queira
uma gaveta de navegação
e exibir ícones perto dos títulos.
Este código está em Java.
Você pode fornecer
um apresentador personalizado.
Neste caso,
ele se chama IconHeaderItemPresenter,
estendendo RowHeaderPresenter.
Você precisa modificar
três métodos diferentes,
no mínimo.
Três funções diferentes:
onCreateViewHolder,
onBindViewHolder e onUnbindViewHolder.

Indonesian: 
sebab fragmen ini paling
banyak digunakan
sebagai layar utama aplikasi.
Fragmen Jelajahi berisi, dan
memerlukan serangkaian
adaptor objek agar
dapat menampilkan
baris daftar individual.
Baris daftar individual memerlukan
item header dan adaptor
postingan, dan lainnya.
Namun, saya akan menyoroti
presenter item header, yang
bisa digunakan untuk
menyesuaikan tampilan
panel navigasi.
Misalnya, saya ingin
panel navigasi saya
menampilkan ikon
dekat dengan judul.
Yang bisa dilakukan adalah--
kode ini adalah kode Java.
Yang perlu dilakukan adalah
membuat presenter kustom.
Dalam hal ini, saya menyebutnya
sebagai presenter item header,
perpanjangan presenter header.
Minimal Anda perlu
menimpa tiga
macam metode.
Tiga macam fungsi yaitu
onCreateViewHolder,
onBindViewHolder, dan
onUnbindViewHolder.

Chinese: 
onCreateViewHolder是膨胀布局
由于这也是一个Presenter
因此你可在该Presenter中扩充布局
并能随心所欲地
提供的任何View样式
onBindViewHolder用来设置内容
onUnbind自然就是用来释放资源
我们来具体看一看
假设我要自定义这些图标
那么我会使用线性布局
添加默认的文本视图
还有图像视图
以此制作自定义视图
进而达到目的
接着，我使用onBindViewHolder获取
ViewHolder Presenter实例和HeaderItem
获取HeaderItem后
我便可调用getName等属性
并使用这些属性填充
文本视图、标签和图标

Indonesian: 
onCreateViewHolder, yakni
pengatur tampilan, dan
karena ini presenter, Anda
sendiri yang mengatur tata letak
di dalam presenter dan Anda
bebas menyesuaikan
tampilan sesuai keinginan Anda.
onBindViewHolder berfungsi
untuk mengatur konten, dan
onUnbind untuk membebaskan resource.
Mari simak.
Misal saya ingin
menampilkan ikon berikut.
Itu bisa dilakukan
dengan membuat
tampilan kustom menggunakan
tampilan linear dan memasukkan
tak cuma tampilan teks, yang
ada secara default, tapi juga
tampilan gambar.
onBindViewHolder menyediakan
instance presenter ViewHolder
berikut HeaderItem.
Dengan adanya HeaderItem, properti
seperti getName bisa ditambahkan
dan digunakan untuk mengisi
tampilan teks, label, dan ikon.

Japanese: 
onCreateViewHolderでは
レイアウトをinflateします
なぜならプレゼンターのレイアウトを——
inflateすることであらゆるビューを——
完全に制御できるからです
onBindViewHolderでは
コンテンツを設定します
onUnbindはリソースの開放です
見てみましょう
アイコンに取り組むとします
カスタムビューを提供して実現できます
線形レイアウトを使用し——
デフォルトのTextViewだけではなく
ImageViewも——
含めます
次にonBindViewHolderで
ViewHolderプレゼンターと——
HeaderItemのインスタンスを取得します
HeaderItemを取得することにより
getNameなどのプロパティを呼び出し——
TextView、label、iconなどを
入力するために使用できます

Spanish: 
Con onCreateViewHolder,
inflan el diseño
y, dado que esto es un presentador,
al inflar el diseño dentro del presentador,
tienen el control completo
para ofrecer la vista que quieran.
Con onBindViewHolder, establecen el contenido
y, por supuesto,
con onUnbind, liberan los recursos.
Echemos un vistazo.
Si quiero
crear esos íconos,
puedo hacerlo con una vista personalizada
mediante un diseño lineal
con una vista de texto,
que es la opción predeterminada,
y una vista de imagen.
Luego, con onBindViewHolder,
obtengo una instancia
del presentador ViewHolder y de HeaderItem.
Mediante HeaderItem,
puedo llamar propiedades, como getName,
y usarlas para completar la vista
de texto, etiqueta e ícono.

Korean: 
onCreateViewHolder를
보자면...
다시 설명하지만
이것은 프레젠터이기 때문에
프레젠터 내에서
레이아웃을 인플레이트하면
원하는 뷰를 제공하도록
완전하게 제어할 수 있습니다
onBindViewHolder에서는
콘텐츠를 설정하고 리소스를
자유롭게 하는
onUnbind를 설정합니다
한번 보죠
이러한 아이콘을 사용하고 싶다면
선형 레이아웃을 사용하고
기본 텍스트 뷰뿐 아니라
이미지 뷰도 추가하여
맞춤설정 뷰를 제공하면 됩니다
그러면 onBindViewHolder에서
ViewHolder 프레젠터와 HeaderItem의
인스턴스를 갖게 됩니다
HeaderItem을 가짐으로써
저는 getName과 같은 속성을 호출하고
이를 텍스트 뷰, 라벨 및
아이콘을 채우는 데 쓸 수 있습니다

English: 
onCreateViewHolder, your
inflator layout-- and again,
because this is a presenter,
you inflate the layout
within the presenter and
you're in complete control
of providing any
view that you want.
onBindViewHolder, you set
the content, and of course,
onUnbind to free the resources.
So let's take a look.
Suppose I want do these icons.
I can do that by
providing a custom
view by using a linear
layout and including
not only a text view, which is
the default, but also an image
view.
Then, onBindViewHolder, I get
an instance of the ViewHolder
presenter and the HeaderItem.
By getting the HeaderItem, I can
call properties such as getName
and use those to fill my
text view, label, and icon.

Portuguese: 
onCreateViewHolder inflará o layout.
E, por ser um apresentador,
você infla o layout dentro dele
e tem total controle
para fornecer a visualização desejada.
onBindViewHolder é usado
para definir o conteúdo
e onUnbind para liberar os recursos.
Vamos dar uma olhada.
Digamos que eu queria usar esses ícones.
Eu posso fornecer
uma visualização personalizada
usando um layout linear e incluindo não só
a visualização de texto, que é padrão,
mas também uma de imagem.
Em seguida, em onBindViewHolder,
recebemos uma instância
do apresentador ViewHolder e HeaderItem.
Ao receber HeaderItem,
podemos chamar propriedades como getName
e usá-las para preencher
a visualização de texto, rótulo e ícone.

Portuguese: 
E modificamos onUnbindViewHolder
para liberar os recursos usados.
Esses três elementos
precisam ser modificados, no mínimo,
mas há outros,
caso você queira, por exemplo,
personalizar o visual
de itens individuais selecionados.
Há um método
que pode ser modificado para isso.
Novamente na atividade,
você pode definir HeaderPresenterSelector
fornecendo uma instância
do apresentador personalizado.
No meu caso, IconHeaderItemPresenter.
Esse é um exemplo antigo,
mas queria usá-lo de qualquer modo,
porque ele não é muito conhecido,
e essa é uma dúvida muito comum.
Certo.
Agora vamos falar
sobre integração com o SO.
Há quatro elementos fundamentais

English: 
And of course, you
overwrite onUnbindViewHolder
to free any resources
that you have used.
These are the three minimum
ones that you have to overwrite,
but of course, there are others
if you want, for example,
to customize how they
feel, how they look,
how the individual items
look when they're selected.
There's one method that you
could overwrite for that.
Backing your activity, you
can set the header presenter
selector by providing an
instance of your custom
presenter.
In my case,
IconHeaderItemPresenter.
This is a known
example but I wanted
to use it either way because
it's not very well known.
And it's, again, a
very common question.
Good.
Let's now talk about
OS integration.
There are four major
things that your app

Indonesian: 
Tentunya Anda perlu
menimpa onUnbindViewHolder
guna menghapus resource
yang sudah dipakai.
Inilah ketiga metode minimum
yang perlu ditimpa,
tetapi tentunya ada metode
lain jika Anda ingin, misal
melakukan penyesuaian
performa, tampilan,
tampilan setiap item
saat dipilih.
Untuk melakukannya, ada satu
metode yang bisa Anda timpa.
Kembali ke aktivitas, Anda bisa
mengatur pemilih presenter
header dengan memberikan
instance presenter
kustom.
Dalam hal ini,
IconHeaderItemPresenter.
Contoh ini sudah banyak
digunakan, tetapi saya tetap
ingin menunjukannya sebab masih
banyak yang kurang memahaminya.
Lagipula, ini juga
kerap kali ditanyakan.
Baik.
Sekarang mari kita
bahas integrasi OS.
Ada empat poin
utama yang perlu dimiliki

Spanish: 
Por supuesto, sobrescribo onUnbindViewHolder
para liberar los recursos usados.
Estos son los tres
elementos mínimos que deben sobrescribir,
pero hay otros. Por ejemplo,
si quieren personalizar la apariencia
de los elementos individuales
cuando son seleccionados,
existe un método
que pueden sobrescribir para lograrlo.
Con respecto a su actividad,
pueden establecer el selector
del presentador de encabezado
proporcionando una instancia
de su presentador personalizado.
En mi caso, es IconHeaderItemPresenter.
Este es un ejemplo viejo,
pero, de todas formas, quiero que lo vean
porque no se conoce mucho,
y nos preguntan sobre el tema con frecuencia.
Ahora, les hablaré
sobre la integración del SO.

Korean: 
그리고 onUnbindViewHolder를
덮어쓰기하여
사용한 리소스를 해제해야 합니다
이 세 가지는
최소한 덮어써야 하는 것들이며
분위기, 디자인이나 항목 선택 시
형태를 맞춤설정하는 등
다른 것을 덮어쓸 수도 있습니다
다른 메서드를 사용해서 말이죠
작업을 지원하기 위해
커스텀 프레젠터의 인스턴스를
제공하여 헤더 프레젠터 선택기를
설정할 수도 있습니다
이 경우에서는
IconHeaderItemPresenter입니다
알려진 예시지만
이를 사용하려는 이유는
그렇게 많이 알려지지는 않았고
가장 질문을 많이 받는
부분이기 때문입니다
좋습니다
이제 OS 통합에 대해 이야기해봅시다
앱이 Android TV 운영체제와
제대로 통합되고

Chinese: 
当然，可以重写onUnbindViewHolder
释放所用的任何资源
以上就是至少要重写的三类函数
当然，如果你有其他需要
如自定义图标风格、呈现方式
图标在选定状态下的外观
那么你还需要重写其他函数
下面就是一种重写方法
为了支持Activity，可以通过提供
一个自定义Presenter实例
设置HeaderPresenterSelector
本例中使用的是
IconHeaderItemPresenter
虽然这个示例比较常见
但我之所以使用它
是因为还有人不太了解
而且这也是十分常见的问题
很好
接下来我们聊聊操作系统集成
要与Android TV操作系统正确集成

Japanese: 
そしてonUnbindViewHolderを
上書きして——
使用したリソースを開放します
３つが上書きする最低限ですが——
必要に応じて他も使用できます
質感や見た目——
選択された項目の見た目などです
それ用に上書きするメソッドが１つあります
戻りますがHeaderPresenterSelectorを
設定するには——
カスタムプレゼンターのインスタンスを——
提供します
ここではIconHeaderItemPresenterです
これはすでに知られている例ですが——
よく理解されていないので使用しました
そして非常によくある質問でもあります
それでは
OS統合について説明します

English: 
needs to do to properly
integrate with the Android TV
operational system and provides
an engaging experience.
Integrative search,
media playback
controls as activated
by the Assistant,
and of course, the home
screen integration through
play next and custom channels.
Let's take a look at
each of one of these.
So media discovery.
Why?
Well, because it allows the
users to discover content
by invoking playback
from searches by voice.
Well, how do you do it?
You make your app searchable
by using a content provider.
When the Assistant performs a
query on the content provider,
it can start playback
using intents.
Let's take a look at this
simple code here closer.
So I'm creating my own search
for a content provider,
extending content provider.
These examples are in Kotlin.

Japanese: 
アプリをAndroid TVのOSと
適切に統合し——
魅力的な体験を提供するための——
4つの主要な設定があります
統合検索、Assistantが起動する——
メディア再生制御
次のおすすめによるホーム画面統合
そしてカスタムチャネルです
それぞれ見ていきましょう
まずはメディア検索です
理由は——
ユーザーが声によりコンテンツを検索し——
再生するためです
方法は——
コンテンツプロバイダーを使用して
アプリを検索可能にします
Assistantが問い合わせると——
インテントを使って再生を開始できます
簡単なコードを詳しく見ていきましょう
ここではContentProviderを継承し
MySearchContentProviderを——
作成しています
Kotlinを使っています

Korean: 
사용자를 사로잡는
경험을 제공하기 위해서는
앱에 네 가지가 필요합니다
통합 검색
어시스턴트에서 활성화하는
미디어 재생 제어
그리고 마지막으로
관심 목록 및 맞춤설정 채널을 통한
홈 화면 통합입니다
하나씩 자세히 살펴보도록 하죠
미디어 검색은 왜 중요할까요?
이는 재생된 내용을 토대로 사용자가
음성 검색으로 콘텐츠를 발견하도록
도와주기 때문입니다
이렇게 하려면
콘텐츠 프로바이더를 통해 앱이
검색 가능하도록 만들어야 합니다
어시스턴트가 콘텐츠 프로바이더에서
쿼리를 수행하면
인텐트를 사용하여
재생을 시작할 수 있습니다
단순한 코드인데
한번 자세히 들여다보죠
여기서는 콘텐츠 프로바이더,
확장된 콘텐츠 프로바이더에 대해
자체 검색을 만들고 있습니다
이 예시는 Kotlin으로 되어 있으며

Chinese: 
并提供引人入胜的体验
应用需要具备四项主要功能
也就是，支持综合搜索
由Google助理激活媒体播放控件
利用“接下来播放”实现主屏幕集成
以及提供自定义频道
下面我们就来分别探讨每一项功能
首先是媒体发现
它为何重要呢？
因为这让用户能够通过语音
来播放搜索结果中的对象
从而发现精彩的内容
具体该怎么做呢？
需要使用内容提供程序
让你的应用能被搜索到
当Google助理对内容提供程序执行查询时
它可以使用Intent开始播放内容
我们来认真看一下这段简单代码
我打算针对某内容提供程序创建自定义搜索
以扩展该内容提供程序
这里的代码示例以Kotlin语言编写

Spanish: 
Su app debe incluir
cuatro cosas fundamentales
para integrarse correctamente
con el sistema operativo
de Android TV
y ofrecer una experiencia interesante:
búsqueda integradora,
reproducción multimedia,
controles activados por el Asistente
y, por supuesto,
integración de la pantalla principal
mediante Mi lista y canales personalizados.
Analicemos cada una de esas características.
Detección multimedia.
¿Por qué?
Porque permite
a los usuarios descubrir contenido
invocando reproducciones
con búsquedas por voz.
¿Cómo logran esto?
Para que su app admita búsquedas,
deben usar un proveedor de contenido.
Cuando el Asistente
consulta al proveedor de contenido,
puede usar intents
para iniciar reproducciones.
Observemos en detalle este código sencillo.
Aquí estoy creando
mi propia búsqueda extendida
correspondiente a un proveedor de contenido.
Estos ejemplos están en Kotlin.

Indonesian: 
oleh aplikasi demi lancarnya
integrasi dengan sistem operasional
Android TV dan pengalaman terbaik.
Penelusuran integratif,
kontrol pemutaran
media yang diaktifkan
oleh Asisten,
dan tentunya, integrasi dengan
TV di rumah melalui
Putar Berikutnya dan Saluran Khusus.
Mari perdalam
setiap poin tadi.
Penemuan media.
Mengapa?
Karena pelanggan akan
bisa menemukan konten
dengan memanggil pemutaran
dari penelusuran menggunakan suara.
Bagaimana caranya?
Dengan membuat aplikasi mudah
ditemukan menggunakan penyedia konten.
Saat Asisten menjalankan
kueri di penyedia konten,
pemutaran dapat dilakukan
menggunakan intent.
Mari lihat kode
sederhana ini.
Saya akan membuat penelusuran
saya sendiri untuk penyedia konten,
memperluas penyedia konten.
Contoh di sini ditulis dalam Kotlin.

Portuguese: 
que seu app precisa fazer
para se integrar corretamente
com o SO do Android TV e proporcionar
uma experiência interessante:
pesquisa integrada,
controles de reprodução de mídia
ativados pelo Assistente
e integração com a tela inicial
por meio do "Novidades Play"
e dos canais personalizados.
Vamos ver cada um desses elementos.
Descoberta de mídia.
Por quê?
Porque ela permite
que os usuários descubram conteúdo
invocando a reprodução
a partir de pesquisas por voz.
Como fazer isso?
É possível tornar o app pesquisável
usando um provedor de conteúdo.
Quando o Assistente faz uma consulta
no provedor de conteúdo,
ele pode iniciar
a reprodução usando intents.
Vamos ver este código simples
em mais detalhes.
Estou criando minha
pesquisa provedor de conteúdo,
estendendo ContentProvider.
Esses exemplos estão em Kotlin.

Indonesian: 
Fungsi kueri sudah ditimpa dan
kursor perlu ditampilkan.
Lalu, bagaimana cara
melakukan penelusuran?
Pencarian bisa
dilakukan dengan berbagai cara.
Bisa dengan memeriksa
konten lokal yang telah
didownload di aplikasi.
Bisa dengan melakukan
penelusuran di server.
Apa pun caranya, nantinya,
Anda akan kembali ke matrixCursor
dan Asisten akan menggabungkan
hasil penelusuran Anda
dengan hasil penelusuran lain.
Perlu diingat, meskipun
penelusuran bisa
dilakukan di server,
Anda perlu melakukannya dengan
cepat sebab Asisten akan menampilkan
dan Android TV akan menampilkan
hasil penelusuran begitu hasilnya keluar.
Jadi, jika semua aplikasi lain
lebih cepat dari milik Anda,
semua ikon dan banner
aplikasi-aplikasi itu
akan ditampilkan lebih
cepat dari milik Anda.
Jadi Anda harus cepat.
Berikutnya, kontrol media.
Mengapa?
Karena untuk
memungkinkan pengguna
mengontrol pemutaran menggunakan suara.
Caranya?

Spanish: 
Sobrescribo la función
de consulta y debo mostrar un cursor.
¿Cómo se hace la búsqueda?
De la forma que quieran.
Pueden consultar el contenido local
que hayan descargado en su app.
Pueden hacer búsquedas en el servidor.
Cualquiera sea la opción que elijan,
al final, deben devolver matrixCursor
para que el Asistente
muestre sus resultados de búsqueda
dentro de cualquier otro
resultado de búsqueda.
Tengan en cuenta
que, aunque puedan
hacer la búsqueda en su servidor,
esta debe ser rápida
porque el Asistente y Android TV
mostrarán los resultados
a medida que se encuentren.
Si las demás apps
son más rápidas que la suya,
todos sus íconos y banners
aparecerán antes que los suyos.
Por lo tanto, recomendamos
que den importancia a la rapidez.
Sigamos con los controles multimedia.
¿Por qué?
Porque es importante
que permitan a los usuarios
controlar la reproducción por voz.
¿Cómo se hace?

Chinese: 
我重写了查询函数，且必须返回Cursor
我该怎么执行搜索呢？
想怎样搜索都可以
可以对应用中可能已下载的本地内容
进行搜索
也可以在服务器上执行搜索
无论采取哪种方式
系统最终都将返回matrixCursor
而Google助理将会显示你的搜索结果
以及任何其他搜索结果
问题是，虽然可以在服务器上
执行此类搜索
但还要尽快完成这一操作
因为Google助理和Android TV
都会实时显示搜索结果
如果其他所有应用
都比你的应用更快
这些应用的图标和横幅
将出现在你的应用图标和横幅的前面
因此，你需要加速这一过程
接下来，我们来谈谈媒体控件
它为何重要呢？
因为你想让用户
通过语音控制播放功能
具体该怎么做呢？

English: 
I overwrite the query function
and I have to return a cursor.
The way I'm going
to do the search?
Well, [INAUDIBLE],, you can do
the search any way you want.
You can check for local
content that you might
have downloaded in your app.
You can perform
searches on the server.
Whatever you do, at the
end, you return matrixCursor
and the Assistant will
display your search results
within any other search results.
Now, the thing is,
even though you
can do this search
on your server,
you want to do it fast because
the Assistant will show
and Android TV will show
the results as they appear.
So if all of the other
apps are faster than yours,
all of their icons,
all of their banners
will appear first than yours.
So you want to make it faster.
Next, media controls.
Why?
Well, because you want to
allow the user to control
playback by using voice.
How do you do it?

Korean: 
이 쿼리 기능을 덮어쓰고
커서를 반환해야 합니다
검색하는 방법은 무엇일까요?
검색은 원하는 방법으로
할 수 있습니다
앱에서 다운로드한 로컬 콘텐츠를
확인하거나
서버에서 검색을 수행할 수 있습니다
어떤 방법을 사용하든 마지막에는
matrixCursor를 반환하며
어시스턴트에서 다른 검색결과 내에
해당 검색결과를 표시할 것입니다
중요한 점은 이 검색을
서버에서 할 수 있지만
빨라야 한다는 겁니다
왜냐하면 어시스턴트와
Android TV는 검색결과가
나타나는 대로 표시하기 때문입니다
따라서 다른 모든 앱이
여러분의 앱보다 빠르다면
다른 앱의 아이콘과 배너가 전부
여러분의 것보다 먼저 나타납니다
그래서 빨라야 하는 것입니다
다음으로 미디어 제어가 중요한 이유는
사용자가 음성으로
재생을 제어하도록
허용하고 싶기 때문입니다
어떻게 하면 될까요?

Japanese: 
query関数を上書きして
Cursorを返します
検索は——
任意の方法でできます
アプリにダウンロードした
ローカルのコンテンツを——
確認できます
サーバーを検索できます
最後にmatrixCursorを返せば——
Assistantが検索結果内に——
独自の結果を表示します
注意したいのが——
自身のサーバーの検索もできますが——
迅速に行う必要があります
なぜならAssistantと——
Android TVは検索結果を取得次第
表示していくからです
他が自身のアプリよりも速いと——
それらのアイコンやバナーの方が——
先に表示されるからです
だからより迅速に行う必要があります
次はメディアコントロールです
理由は——
ユーザーの声によって
再生を制御できるように——
したいからです
方法は——

Portuguese: 
Modifico a função de consulta
e preciso retornar um cursor.
Como farei a pesquisa?
Isso varia.
Você pode fazer a pesquisa como quiser.
Você pode verificar o conteúdo local
transferido por download no app,
pesquisar no servidor,
seja lá o que fizer,
no final, você retornará matrixCursor,
e o Assistente exibirá
os resultados da pesquisa
dentro de outros resultados.
Embora você possa
fazer essa pesquisa no servidor,
ela precisa ser rápida,
porque o Assistente
e o Android TV mostram
os resultados conforme eles aparecem.
Portanto, se todos os outros apps
forem mais rápidos que o seu,
todos os ícones e banners
aparecerão antes dos seus.
Por isso, é importante ser rápido.
Em seguida, controles de mídia.
Por quê?
Para que os usuários controlem
a reprodução com comandos de voz.
Como fazer isso?

Spanish: 
Se integran las sesiones multimedia
para que manejen las devoluciones de llamada.
Cuando el usuario
da un comando de reproducción
al Asistente,
como reproducir o pausar;
da comandos más inteligentes,
como ir al canal anterior,
ir a episodios anteriores o ir al siguiente
(que pueden usarse en apps de video y audio),
o hasta da un "Me gusta",
que es una función menos conocida…
Para que todo eso sea posible,
deben incluir y extender
las devoluciones de llamada
de compatibilidad con sesiones multimedia.
También,
pueden sobrescribir todas estas funciones:
onPlay, onPause, onStop,
onSeekTo, onSkipToNext,
onSkipToPreviews.
Pueden sobrescribir todos estos controles
y controlar su propio reproductor.
Gracias a las devoluciones de llamada
en la instancia de sesión multimedia,
su app responde a los controles
de reproducción del Asistente.

Japanese: 
コールバックを処理するために
メディアセッションを統合します
ユーザーがAssistantを使用して——
再生コマンドを実行する際——
再生や停止、よりスマートな操作なら——
前のチャネル——
前のエピソード
または次にスキップをしたとき——
ビデオとオーディオアプリの
両方によって使用できます
あまり知られていない——
高く評価する機能も実行できます
それを行うには
MediaSessionCompat.Callbackを継承し——
MediaSessionCallbackを提供します
そして、onPlay、onPause、onStop
onSeekTo、onSkipToNext——
onSkipToPreviewsなど
これらすべての関数を上書きすることが——
できます
これらすべての制御を上書きして——
独自のプレイヤーを制御できます
メディアセッションインスタンスに
これらのコールバックを提供すれば——
アプリがAssistantの再生制御に
反応するようになります

Indonesian: 
Mengintegrasikan sesi media
untuk menangani callback.
Setiap kali pengguna
menggunakan Asisten
untuk menjalankan perintah pemutaran,
seperti memutar atau menghentikan,
bahkan perintah yang lebih rumit
seperti lewat dan pindah
ke saluran lain
atau kembali ke episode lalu
atau mempercepat, yang
bisa digunakan oleh aplikasi
video atau pun audio,
bahkan Anda bisa
memberi suka jika mau,
sayangnya fitur ini kurang dikenal.
Caranya adalah dengan
memberi callback
sesi media dengan memperpanjang
callback sesi media.
Semua fungsi ini bisa ditimpa,
onPlay, onPause, onStop,
onSeekTo, onSkipToNext,
onSkipToPrevious.
Dan menimpa semua kontrol ini
dan mengontrol pemutar Anda sendiri.
Dengan menyediakan
callback ke instance media,
kini aplikasi mampu merespons
kontrol pemutaran Asisten.

Portuguese: 
É preciso integrar sessões de mídia
para controlar os callbacks.
Sempre que o usuário usar
comandos de reprodução no Assistente,
como reproduzir, pausar
ou até mais avançados,
como voltar
para o canal ou episódio anterior
ou pular para o próximo,
que podem ser usados
em apps de áudio e vídeo.
Você pode até marcar
que gostou do conteúdo,
que é um recurso menos conhecido.
Para fazer isso, é preciso fornecer
o callback de sessão de mídia
estendendo MediaSessionCompat.Callback.
Assim é possível
modificar todas estas funções:
onPlay, onPause, onStop,
onSeekTo, onSkipToNext, onSkipToPrevious.
É possível modificar todos esses controles
e controlar seu próprio player.
Ao fornecer esses callbacks
à instância da sessão de mídia,
seu app pode responder
aos controles de reprodução do Assistente.

Chinese: 
方法是集成媒体会话来处理回调
无论何时，用户都可使用Google助理
执行播放命令
例如视频和音频应用中
都会用到的播放、暂停命令
或跳至上个频道、跳至上一集
或跳过下一集等更智能的命令
甚至是使用点赞功能
不过这个功能很少为人所知
具体该怎么做呢？道理一样
可以扩展
MediaSessionCompat.Callback
提供媒体会话回调
然后重写以下所有函数
onPlay、onPause、onStop
onSeekTo、onSkipToNext
onSkipToPreviews
之后可通过重写所有控件
控制自定义播放器
向媒体会话实例提供这些回调
让应用可以响应Google助理的播放控件

English: 
You integrate media sessions
to handle the callbacks.
So whenever the user
uses the Assistant
to do playback commandsd--
things like play or pause
or even smarter ones
like skip to the
previous channel
or skip to previous episodes
or skip the next, which
can be used by both
video and audio apps,
you can even do a
thumbs up if you want,
which is a lesser known feature.
And the way you do that, again,
you provide your media session
callback by extending media
session compact callback.
And you can overwrite
all of these functions--
onPlay, onPause, onStop,
onSeekTo, onSkipToNext,
onSkipToPreviews.
And overwrite all
of these controls
and control your own player.
And by providing these callbacks
to your media session instance,
your app now responds to the
Assistant playback controls.

Korean: 
미디어 세션을 통합하여
콜백을 처리하면 됩니다
그러면 사용자가 어시스턴트를
사용하여 재생 명령어...
즉 재생, 일시중지,
이전 채널로 건너뛰기,
이전 또는 다음 에피소드 건너뛰기 등
다양한 기능을 이용할 수 있죠
이러한 기능은 동영상 앱이나
오디오 앱에서 모두 사용 가능합니다
또한 원한다면
그렇게 자주 쓰이진 않지만
'좋아요' 기능을 사용할 수도 있습니다
이것을 하기 위해서는
미디어 세션 콤팩트 콜백을 확장하여
미디어 세션 콜백을 제공하는
방법이 있습니다
onPlay, onPause, onStop, onSeekTo,
onSkipToNext, onSkipToPreviews 등
이 모든 기능을 덮어쓸 수 있습니다
이 모든 제어를 덮어씀으로써
플레이어를 제어하게 됩니다
그리고 이러한 콜백을
미디어 세션 인스턴트에 제공하면
앱이 어시스턴트
재생 제어에 반응하게 되죠

Korean: 
이제 Android TV 홈 화면과의 통합,
그중에서도 가장 중요한 관심 목록 행에 대해
이야기하려고 합니다
Android TV 인터페이스를
모르실 수 있는데
이러한 행으로 만들어져 있습니다
첫 번째 행은 사용자가
가장 좋아하는 앱이고
사용자 앱의 목록 바로 다음의 행은
관심 목록 행입니다
채널이라고도 불리는 이 행의 목표는
다양한 앱에 있는
사용자의 콘텐츠에 대한
하나의 전역 공간을 만드는 겁니다
사용자가 관심이 있거나
사용자가 상호작용했지만
재생이 완료되지 않은 모든 콘텐츠를
앱에서 관심 목록 행으로
푸시할 수 있습니다
그 이유는 시청자들이
관심을 가지는 콘텐츠나
다 시청하지 못한 콘텐츠
예를 들어 끝까지 다 못 본
동영상, 시리즈의 다음 에피소드나

Spanish: 
Ahora les hablaré de las integraciones
con la pantalla principal de Android TV.
La más importante
es la fila Mi lista.
Si no conocen la interfaz de Android TV,
verán que está formada por estas filas.
La primera es la fila
de apps favoritas del usuario,
y la fila siguiente luego de esta
es Mi lista.
Esta es una lista, o canal,
que actúa como espacio global
para el contenido del usuario
correspondiente a distintas apps.
La idea es que su app
dirija a la fila Mi lista
todo el contenido que le interesa al usuario
o el contenido
con el que no terminó de interactuar.
¿Por qué?
Así mantienen al usuario en contacto
con el contenido
que le interesa o no terminó de ver,
como videos, episodios siguientes de series,

Indonesian: 
Kini mari kita bahas integrasi
dengan layar utama Android TV,
yang merupakan hal terpenting
adalah baris Putar Berikutnya.
Jika belum tahu antarmuka
Android TV,
inilah baris-baris yang menyusunnya.
Baris pertama berisi aplikasi
favorit pengguna,
dan baris pertama setelah
daftar aplikasi milik pengguna
adalah baris Putar Berikutnya.
Ini adalah baris, atau yang
kita sebut sebagai saluran
yang secara global menghimpun
konten-konten pengguna
dari berbagai aplikasi.
Tujuannya adalah agar
aplikasi dapat menampilkan
konten, misalnya konten
yang menurut pengguna menarik
atau yang belum selesai ditonton
di baris Putar Berikutnya.
Mengapa?
Anda memastikan penonton
tetap tertarik pada konten
yang menurutnya menarik
atau belum selesai ditonton,
seperti video atau episode
terbaru suatu seri,

English: 
Now, we're going to move to
talk about the integrations
with Android TV's home
screen, the most important one
being the Play Next row.
So if you don't know the
Android TV interface,
it's made of these rows.
The first row is a row of
the user's favorite apps,
and the very first row after
the list of the user's apps
is the Play Next row.
And it's a row, or a
channel, as we call it,
that aims to be this global
space for the user's contents
across different apps.
So the idea here is that
any content that the user is
interested on or the user
interacted with but didn't
finish, your app can push this
content to the Play Next row.
So why?
You keep your viewers
engaged with content
they find interesting or
haven't finished watching,
such as videos or next
episodes of a series,

Chinese: 
下面我们将讨论
与Android TV主屏幕的集成
这方面最重要的是“接下来播放”行
我们先来了解一下Android TV界面
这个界面由几个行组成
第一行是用户收藏的应用
紧接用户应用列表的下一行
就是“接下来播放”行
它是一个行，或者我们所说的频道
其作用是集中展示
用户的多个应用中的内容
我们的设计理念就是
对于用户感兴趣的内容
或曾互动过但未完成的内容
应用均可将其推送到“接下来播放”行
为什么要这样做？
通过这种方式，你就可让观众
与他们感兴趣或尚未看完的内容进行互动
例如相关视频、电视剧的后续剧集

Portuguese: 
Vamos falar um pouco sobre integrações
com a tela inicial do Android TV.
A mais importante delas
é a linha "Novidades Play".
Caso você não saiba,
a interface do Android TV
é composta por linhas.
A primeira linha
mostra os apps favoritos do usuário.
A linha seguinte,
depois dos apps favoritos,
é a "Novidades Play".
Essa linha, ou canal, como chamamos,
destina-se a ser um espaço global
para o conteúdo do usuário
em diferentes apps.
A ideia é que
qualquer conteúdo de interesse
do usuário ou com que
ele tiver interagido sem ter concluído
pode ser exibido
pelo seu app na linha "Novidades Play".
Por quê?
Você mantém os usuários
engajados com conteúdo
do interesse deles
ou que eles não terminaram de assistir,
como vídeos,
os próximos episódios de uma série

Japanese: 
Android TVの
ホーム画面の統合に移ります
最も重要なのが——
次のおすすめ行です
Android TVのインターフェースは——
複数の行で構成されています
最初の行はユーザーのお気に入りアプリです
ユーザーのお気に入りアプリの一覧の
次の行にあるのが——
次のおすすめ行です
私たちはこの行をチャンネルと呼んでいます
さまざまなアプリのユーザーのコンテンツの
包括的スペースであることを——
目的としています
ユーザーが関心を持つ——
または最後まで見ていない
あらゆるコンテンツについて——
アプリがそれらのコンテンツを
次のおすすめ行にプッシュできます
理由は——
視聴者が関心を持っている——
または見終えていないコンテンツに
引きつけ続けるためです

Korean: 
영화 등에 대한 관심을 유지하기
위해서입니다
방법은 여러분의
WatchNextProgram을 AndroidX의
PreviewChannelHelper에
게시하는 거죠
콘텐츠 프로바이더를
직접 만들 필요가 없습니다
설명해 드리자면
Android TV의 관심 목록 행은
최근의 활동을 반영하도록
업데이트되며
관련 콘텐츠를 시청자가
바로 볼 수 있도록 합니다
콘텐츠가 추가됨에 따라
오래된 콘텐츠는 오른쪽으로 이동하고
사용자가 해당 콘텐츠와
상호작용하지 않으면
관심 목록 행에서 삭제됩니다
이 코드를 조금 더
자세히 살펴봅시다
AndroidX의
WatchNextProgram은
빌더 패턴을 따르므로
빌더를 만들고
WatchNextType을 설정합니다
설정할 유형은 영화, 시리즈,
음악일 수 있겠죠
그다음 제목과 설명, 그리고
PosterArtUri를 제공합니다

Indonesian: 
atau film yang belum
selesai ditonton.
Caranya?
Dengan memublikasikan
WatchNextProgram
ke PreviewChannelHelper
AndroidX.
Anda tak perlu membuat atau
memikirkan penyedia
konten.
Apakah itu?
Baris Putar Berikutnya
Android TV
diperbarui untuk menampilkan
interaksi terbaru
dan memudahkan penonton
untuk mencari konten yang relevan.
Saat konten bertambah, konten
lama akan bergeser ke kanan,
dan konten lama akan
dihapus dari
baris Putar Berikutnya
jika pengguna
sudah tak lagi berinteraksi
dengan konten tersebut.
Mari lihat lagi
kode ini lebih lanjut.
WatchNextProgram AndroidX
mengikuti pola builder,
jadi Anda perlu membuat builder.
Mengatur WatchNextType.
Silakan atur jenisnya. Jenis ini bisa
berupa film, seri, atau musik.
Lalu, tambahkan
Judul dan Deskripsi
serta PosterArtUri.

Japanese: 
ビデオやシリーズの次のエピソードや——
見終えていない映画などです
方法は——
WachNextProgramを
Android 10の
PreviewChannelHelperに公開します
自身でコンテンツプロバイダーを
構築する必要は——
ありません
内容ですが——
次のおすすめ行は——
最近の操作を反映して更新され——
視聴者はそれらに簡単にアクセスできます
コンテンツが追加されると
古いものは右に移動します
まったく利用されなかったものは——
あるタイミングで——
削除されます
またコードを詳しく見ていきましょう
WachNextProgramは
ビルダーパターンに従うため——
ビルダーを作成します
WatchNextTypeを設定します
映画やシリーズや音楽などの種類を
設定するということです
次にTitleとDescriptionと——
PosterArtUriを提供します

English: 
or a movie that he
hasn't finished.
How do you do that?
Well, you publish
your WatchNextProgram
to AndroidX's
PreviewChannelHelper.
You don't have to build or worry
about your content provider
yourself.
And what is it?
Well, the Android
TV's Play Next row
is updated to reflect
recent engagement
and put relevant content
at the viewer's fingertips.
As contents are added, older
contents move to the right,
and at some point,
if the user never
interacts with these
other contents,
they are removed from
the Play Next row.
Again, let's take a look at
this code a little bit closer.
So AndroidX's WatchNextProgram
follows the builder pattern,
so you create a builder.
You set the WatchNextType.
You set a type, which could be
a movie or a series or music.
Then you provide your
Title and Description
and your PosterArtUri.

Spanish: 
o una película sin terminar.
¿Cómo se hace?
Deben publicar su WatchNextProgram
en PreviewChannelHelper de AndroidX.
No deben crear el proveedor
de contenido ni preocuparse por este.
¿En qué consiste?
La fila Mi lista de Android TV
se actualiza para reflejar
las interacciones recientes
y dejar el contenido relevante
a la vista del usuario.
A medida que se agrega contenido,
lo más antiguo se mueve a la derecha.
Llegado cierto momento, si el usuario
no interactuó con el contenido antiguo,
este se quita de Mi lista.
Observemos detenidamente este código.
WatchNextProgram
de AndroidX sigue el patrón Builder.
Por ende, deben crear un Builder;
establecer WatchNextType;
determinar el tipo de contenido,
como una película, una serie o música;
proporcionar el título y la descripción,
y además incluir su PosterArtUri.

Chinese: 
或未看完的电影
具体该怎么做呢？
可以将WatchNextProgram发布到
AndroidX的PreviewChannelHelper
而且不必构建或担心自己的
内容提供程序
它有什么用？
Android TV的“接下来播放”行
能够不断更新
以便展示用户最近的互动情况
让观众只需动一动手指
就能轻松观看相关内容
随着内容越来越多
旧的内容会向右侧移动
如果用户不再与某些内容进行互动
那么系统便会适时
将它们从“接下来播放”行中移除
我们再来仔细分析一下这段代码
AndroidX的WatchNextProgram
遵循构建器模式
因此你需要创建一个构建器
然后设置WatchNextType
设置的类型可以是电影、电视剧或音乐
接着你要提供Title和Description
以及PosterArtUri

Portuguese: 
ou um filme que eles não terminaram.
Como fazer isso?
Basta publicar WatchNextProgram
em PreviewChannelHelper do AndroidX.
Você não precisa criar
nem se preocupar
com o provedor de conteúdo.
O que ela faz?
A linha "Novidades Play" do Android TV
é atualizada
para refletir interações recentes
e oferecer
conteúdo relevante aos usuários.
Conforme conteúdos são adicionados,
os itens mais velhos vão para a direita.
Em dado momento, se o usuário
nunca interagiu com esse conteúdo,
ele é removido da linha "Novidades Play".
Vamos ver esse código em mais detalhes.
O WatchNextProgram do AndroidX
segue o padrão Builder.
Por isso, criamos um builder.
Definimos WatchNextType.
Definimos um tipo,
que pode ser um filme, série ou música.
Em seguida,
fornecemos o título e a descrição
e PosterArtUri.

Korean: 
참여의 마지막 시간을 설정하는 것도
매우 중요한데요
그 이유는
이 사진이 너무 작을 수도 있는데
관심 목록 행에서
두 번째 항목을 본다면
항목을 선택했을 때
마지막 참여 시간을 제공하면
콘텐츠의 맨 밑에 작은
진행 상황 막대를 표시하여
사용자가 어디까지 시청했는지
볼 수 있습니다
만약 사용자가 보다가 멈춘
영화가 있다면
멈춘 구간이
어디인지 표시할 수 있는 거죠
그런 다음 빌드하고
PreviewChannelHelper가 있는 상태에서
프로그램과 함께
publishWatchNextProgram을
호출합니다
네 가지 중 세 가지를 다뤘습니다
마지막으로 언급할 중요한 OS 통합은
Android TV 채널을
제공해야 한다는 것입니다
다시 말하자면 채널은
Android TV 홈 스크린에
있는 행입니다
Android TV 앱을 만들려고 할 때
채널도 원하는 만큼 만들 수 있지만
기본으로 설치되는 채널은 하나입니다

Portuguese: 
Também é muito importante
definir o último horário de engajamento.
Talvez essa imagem seja pequena demais,
mas, se você observar
o segundo item na linha "Novidades Play",
sempre que um item for selecionado,
se você fornecer
o último horário de engajamento,
será exibida
uma pequena barra de progresso
na parte inferior do conteúdo,
para que o usuário possa ver onde parou.
Se ele tiver parado no meio de um filme,
você pode indicar isso
e mostrar onde ele parou.
Em seguida, você faz a compilação,
recebe PreviewChannelHelper
e chama publishWatchNextProgram
com o programa.
Já falamos sobre três dos quatro itens.
A última integração importante com o SO
que você precisa fornecer
é o canal do Android TV.
Os canais são linhas
na tela inicial do Android TV.
Os apps para Android TV
podem ter quantos canais você quiser,
mas há um que é instalado por padrão.

English: 
It's also very important to
set the last time of engagement
because--
this picture might be
a little too small,
but if you look at the second
item in the Play Next row,
whenever an item is selected, if
you provide the last engagement
time, it will display
a small progress
bar on the bottom of
the content so the user
can see where he left off.
So if it's a movie that the
user stopped in the middle,
you can put it there and
show where the user stopped.
Then you build, and you
get a PreviewChannelHelper,
and you call
publishWatchNextProgram
with that program.
So three out of four.
The last important
OS integration
that you should provide
is Android TV Channel.
Channels are, again,
rows that you have
on your Android TV home screen.
And when you create
an Android TV app,
you can have as many
channels as you want,

Indonesian: 
Penting pula untuk menambahkan
waktu interaksi terakhir
sebab…
tampaknya gambar ini
terlalu kecil,
tetapi jika Anda bisa lihat item
kedua di baris Putar Berikutnya,
setiap kali item dipilih,
dengan adanya waktu
interaksi terbaru, akan
muncul status progres
kecil di bawah konten
sehingga pengguna
tahu bagian terakhir
yang ditontonnya.
Jika ada film yang belum
selesai ditonton,
Anda bisa memberi tahu bagian
terakhir yang pengguna tonton.
Lalu buat, dan Anda akan
mendapatkan PreviewChannelHelper,
kemudian terapkan
publishWatchNextProgram
dengan program tersebut.
Tiga dari empat.
Yang penting terakhir
adalah Integrasi OS
yang perlu disediakan
adalah Saluran Android TV.
Saluran, sekali lagi,
adalah baris yang
muncul di layar utama Android TV.
Saat membuat aplikasi Android TV,
Anda bisa menambahkan
berapa pun saluran yang Anda mau,

Chinese: 
设置上次互动时间也非常重要
因为-
这里展示的图片可能太小
但如果观察“接下来播放”行中的第二项
就会发现，如果提供上次互动时间
那么无论何时选定这个项目
内容底部都会显示一个小型进度条
以便用户了解上次的观看进度
因此，如果用户在中途停止观看电影
系统就可以显示一个进度条
提示用户上次观看时中断的位置
然后你可以构建
PreviewChannelHelper
构建完成后，即可使用该程序调用
publishWatchNextProgram
我们已讲完四项功能中的三项
为实现操作系统集成
最重要的是提供Android TV频道
频道也是Android TV主屏幕上
显示的行
创建Android TV应用时
你可以视需要设置任意数量的频道

Japanese: 
LastEngagementTimeも重要です
なぜなら
見にくいかもしれませんが——
次のおすすめ行の２つ目の項目では——
項目が選択された際
最終エンゲージメント時間を提供すれば——
下部に進捗バーが表示され——
中断した位置を——
表示できます
途中で中断した映画であれば——
ユーザーが中断した位置を表示できます
そしてビルドして
PreviewChannelHelperを取得し——
プログラムを入れた
publishWachNextProgramを——
呼び出します
４つのうち３つを説明しました
提供すべき重要なOS統合の最後は——
Android TVのチャンネルです
チャンネルとは——
Android TVのホーム画面の行です
アプリを作成する際——
いくつでもチャンネルを設定できますが——

Spanish: 
También es muy importante
establecer el momento
de la última interacción.
Quizás esta imagen sea demasiado pequeña,
pero si observan el segundo elemento
de la fila de Mi lista, verán que,
si incluyeron el momento
de la última interacción,
al seleccionar un elemento,
se mostrará una barra de progreso pequeña
en la parte inferior
del contenido para que el usuario
pueda ver hasta dónde había llegado.
Si el usuario miró la mitad de una película,
podrá ver exactamente hasta dónde llegó.
Luego, deben compilar
para obtener PreviewChannelHelper,
e invocar publishWatchNextProgram
con ese programa.
Ya vimos tres
de las cuatro integraciones del SO.
La última integración importante
que deben proveer es el canal de Android TV.
Nuevamente, los canales son las filas
de la pantalla principal de Android TV.
Cuando creen una app para Android TV,
podrán incluir todos los canales que quieran,
pero hay uno que viene instalado
de forma predeterminada.

Portuguese: 
Todos os outros canais
precisam ser ativados pelo usuário
para serem incluídos na tela inicial,
mas pelo menos um canal
é sempre instalado por padrão.
Para criar canais do Android TV…
Mostrarei isso daqui a pouco.
Por quê?
Para recomendar conteúdo
na tela inicial do Android TV.
Como?
Basta publicar PreviewChannel
e PreviewProgram
em PreviewChannelHelper do AndroidX.
Novamente, não é necessário criar
o provedor de conteúdo manualmente.
Vejam este código simples.
Temos um helper.
Mais uma vez,
este código segue o padrão Builder.
Definimos DisplayName, Description
e IntentUri.
Se quiser,
você pode definir InternalProviderId,

Chinese: 
但系统会默认安装一个频道
其他频道需要由用户选择添加
否则就不会出现在主屏幕上
系统始终会默认安装至少一个频道
该如何创建Android TV频道呢？
我稍后将为大家讲解
频道为何重要？
频道可将内容推荐到
Android TV主屏幕
具体做法呢？
你要向AndroidX的PreviewChannelHelper
发布PreviewChannel和PreviewProgram
同样，你不必担心要
手动创建内容提供程序
让我们看看这段简单代码
你构建了Helper
它同样遵循构建器模式
因此我们可以设置
DisplayName、Description
以及IntentUri
如有需要，还可以设置
InternalProviderId

English: 
but there is one channel
that is installed by default.
All of the other channels,
the user has to opt in
to add them to the home screen.
But at least one channel is
always installed by default.
And the way you create
Android TV channels is--
well, I'm going to
show you in a moment.
So why?
Well, to allow content to be
recommended on the Android TV
home screen.
How?
You publish a PreviewChannel
and PreviewPrograms
to AndroidX's
PreviewChannelHelper.
Again, you don't have
to worry about manually
creating the content provider.
So let's take a look
at the simple code.
You've got helper.
Again, it follows
the builder pattern.
So we can set the DisplayName,
set the Description,
set the IntentUri.
You can, if you want, set
an InternalProviderId.

Spanish: 
El usuario debe habilitar
el resto de los canales
si quiere agregarlos a la pantalla principal.
Sin embargo, al menos un canal
se instala de forma predeterminada.
Más adelante
les mostraré cómo crear
canales de Android TV.
¿Para qué?
Para que Android TV pueda sugerir contenido
en la pantalla principal.
¿Cómo?
Deben publicar
un PreviewChannel y PreviewPrograms
en PreviewChannelHelper de AndroidX.
No es necesario que se preocupen
por crear el proveedor de contenido
de forma manual.
Veamos el código de muestra.
Hay un asistente
que sigue el patrón Builder.
Entonces, pueden escribir
el nombre para mostrar y la descripción,
y establece la URI de intent.
Si quieren, pueden incluir
un ID de proveedor interno.

Japanese: 
デフォルトで１つインストールされています
他はユーザーがオプトインして——
追加します
しかし常に１つのチャネルが
デフォルトで存在します
チャンネルを作成する方法は——
後ほどお見せします
必要な理由は——
コンテンツがホーム画面で——
お勧めされるためです
方法は——
PreviewChannelとPreviewProgramを——
PreviewChannelHelperに公開します
ここでもコンテンツプロバイダーを——
手動で作成する必要はありません
簡単なコードを見ていきましょう
helperがあります
ここでもビルダーパターンに従います
DisplayName、Description、IntentUriを——
設定できます
必要であれば
InternalProviderIdも設定できます

Indonesian: 
tetapi ada satu saluran
yang diinstal secara default.
Saluran lain harus
ditambahkan oleh pengguna
ke layar utama secara manual.
Namun setidaknya satu saluran
selalu diinstal secara default.
Cara membuat saluran
Android TV adalah…
akan saya tunjukkan nanti.
Mengapa?
Agar konten bisa
direkomendasikan di layar
utama Android TV.
Caranya?
Memublikasikan PreviewChannel
dan PreviewPrograms
ke PreviewChannelHelper
AndroidX.
Sekali lagi, Anda
tak perlu membuat penyedia
konten secara manual.
Mari simak kode
sederhana ini.
Ada helper.
Helper akan mengikuti bentuk builder.
Hasilnya, kita bisa mengatur
DisplayName, Description,
dan IntentUri.
Jika mau, Anda bisa
mengatur InternalProviderId.

Korean: 
나머지 채널은 사용자가 선택해야
홈 스크린에 추가되죠
최소 하나의 채널은
항상 기본으로 설치되어 있습니다
Android TV 채널을 만드는 방법은
잠시 후에 보여드릴 텐데
이것이 중요한 이유는
콘텐츠가 홈 스크린에
추천되게 하기 위해서입니다
방법은 AndroidX의
PreviewChannelHelper에
PreviewChannel과
PreviewPrograms를 게시하는 겁니다
여기서도 콘텐츠 프로바이더를
직접 만들 필요가 없습니다
간단한 코드를 살펴보죠
헬퍼가 있고요
다시 말씀드리지만
이는 빌더 패턴을 따르므로
따라서 DisplayName과 설명
IntentUri를 설정할 수 있습니다
원하는 경우 나중에 검색되도록
커스텀 ID인

Spanish: 
Este es su ID personalizado,
que recuperarán después.
Un logotipo.
Y compilan.
Al publicar su canal con un asistente,
recibirán un ID de canal
asignado por Android TV.
Si quieren, también pueden usar
un generador de vista previa
para crear un programa.
Esas son las cuatro integraciones
que mencioné para crear una app atractiva
que interactúe con el SO.
Eso es todo.
Gracias.

Portuguese: 
um ID personalizado que você pode
definir para recuperar mais tarde.
Logo.
E basta compilar.
Ao publicar seu canal usando o helper,
você recebe um ID do canal
atribuído pelo Android TV.
Se quiser, use um criador de visualização
para criar um programa.
Essas são as quatro integrações
que eu havia mencionado
para criar um app interessante
que interaja com o SO.
Isso é tudo.
Obrigado.

Indonesian: 
Ini adalah ID kustom yang
bisa diambil kembali nanti.
Logo.
Lalu Anda buat.
Jika memublikasikan saluran
menggunakan helper,
Anda akan mendapatkan
ID saluran yang diberikan oleh Android TV.
Anda juga bisa
gunakan builder pratinjau
untuk membuat program.
Itulah keempat integrasi
yang tadi dibahas untuk
membuat aplikasi menarik
yang mampu berinteraksi dengan OS.
Sekian dari saya.
Terima kasih.

Korean: 
InternalProviderId를 설정할 수도 있습니다
그런 다음 로고를 추가하고
빌드합니다
헬퍼를 사용해서 채널을 게시하면
Android TV에서 할당하는
채널 ID를 받게 됩니다
원한다면 미리보기 빌더를 사용해
프로그램을 빌드할 수도 있습니다
지금까지 OS와 상호작용하는...
매력적인 앱을 만들기 위한
네 가지 통합에 대해 말씀드렸습니다
제 발표는 여기까지입니다
감사합니다

Chinese: 
将其作为自定义ID以供随后检索
之后还要设置Logo
如此即可完成构建
使用Helper发布频道时
会收到Android TV分配的频道ID
如有需要，还可使用预览构建器
构建相应程序
这就是与操作系统集成所需的四项功能
只有具备这些功能
才能打造富有吸引力且能与操作系统互动的应用
以上就是我要分享的全部内容
谢谢大家
[掌声]
[音乐]

English: 
This is your own custom ID that
you can set to retrieve later.
A Logo.
And you build.
When you publish your
channel by using the helper,
you'll get back a channel
ID assigned by Android TV.
And if you want, you can
also use a preview builder
to build a program.
So these are the
four integrations
that I mentioned to have
an engaging app that
interacts with the OS.
Well, that's all I have for you.
Thank you.
[APPLAUSE]
[MUSIC PLAYING]

Japanese: 
あとで取得できる独自のカスタムIDです
Logoを設定します
そしてビルドします
ヘルパーを使用して
チャンネルを公開した場合——
Android TVが割り当てた
チャンネルIDが付与されます
必要であればプログラムをビルドするための
プレビュービルダーも——
使用できます
説明した４つの統合が——
OSとインタラクションする
魅力的なアプリに——
必要なものです
以上ですべてです
ありがとうございました
[拍手]
[音楽]
