$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
作ろう! Android TVアプリ
Search
Kazuki Nara
November 12, 2016
Programming
0
47
作ろう! Android TVアプリ
Android Night 2016/11/11
Kazuki Nara
November 12, 2016
Tweet
Share
More Decks by Kazuki Nara
See All by Kazuki Nara
FlutterアプリでChromecastに接続する
kazukinr
2
1.1k
プロジェクト開始以来継ぎ足しながら使ってきたソースを捨てた話
kazukinr
0
98
Room with Kotlin
kazukinr
0
28
AOSPにパッチを送ってみた
kazukinr
0
43
Other Decks in Programming
See All in Programming
JETLS.jl ─ A New Language Server for Julia
abap34
1
400
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
8
5.7k
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
110
sbt 2
xuwei_k
0
300
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
38
26k
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
170
connect-python: convenient protobuf RPC for Python
anuraaga
0
410
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
6
310
Cap'n Webについて
yusukebe
0
130
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
340
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
140
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
160
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
KATA
mclloyd
PRO
33
15k
[SF Ruby Conf 2025] Rails X
palkan
0
520
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Fireside Chat
paigeccino
41
3.7k
Context Engineering - Making Every Token Count
addyosmani
9
510
How GitHub (no longer) Works
holman
316
140k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
970
Transcript
作ろう! Android TVアプリ Kazuki Nara @ Android Night 2016/11/11
自己紹介 Kazuki Nara Software Engineer @ AWA Co. Ltd. http://github.com/kazukinr
http://www.facebook.com/kazuki.nara 虹はでない
What is Android TV
Android TVとは • TV端末向けのAndroidプラットフォーム • Google I/O 2014で発表 • 実機としてはNexus
Player、Sony BRAVIAなど
Google Play StoreはTV専用 • アプリのラインアップは多くない • ゲームアプリがメイン • 上位の顔ぶれにはあまり変化がない
TV用アプリの公開には審査が必要 • Android TVアプリにはGoogleの定めたガイドラインがある • TV対応アプリをGoogle Play Storeに登録すると審査が始まる • 審査期間は1営業日以下(アメリカ時間の平日昼に審査してるぽい)
• 審査NGの場合も通常のGoogle Play Storeの公開には影響なし 審査チェック項目は以下に書いてあります。 https://developer.android.com/distribute/essentials/quality/tv.html
あまり盛り上がってないかもしれない • Google I/O 2016では特に発表なし(Leanbackの更新くらい) • GoogleがNexus Playerの生産を終了 • これからはWear
2.0だぜ!みたいな流れきてる
Storeが過疎ってる →ライバルが少ない! 開発してる人も少ない →ライバr ユーザー少ない →もう増えるしかない BRAVIAがAndroid TVだって知らずに使ってる人多いよね・・・
None
How to launch the app on Android TV
とりあえずこう でも、これだと動かせても中身がよくわかりませんよね。
なにを設定すればAndroid TVで動くのか Android TVデバイスでアプリを起動するための最低限の設定 • バナーの設定 • TVホームから起動するランチャーActivityの設定 • TVでサポートしていない機能の除外設定
バナーの設定 • AndroidManifest.xmlの宣言 • バナー画像の準備 • バナーは320x180px、画像にテキスト(アプリ名)を含むこと • xhdpiリソースとして扱う <application
android:label=”@string/app_name” android:icon=”@drawable/ic_launcher” android:banner=”@drawable/tv_app_banner”>
起動Activityの宣言 • intent-filterでLEANBACK_LAUNCHERを受ける • このintent-filterを宣言するとTVアプリとして認識される <activity android:name=”.MainActivity” android:theme=”@style/Theme.Leanback”> <intent-filter> <action
android:name=”android.intent.action.MAIN”/> <category android:name=”android.intent.category.LEANBACK_LAUNCHER”/> </intent-filter> </activity>
TVでサポートしない機能の対応 • タッチスクリーンをrequired=”false”するのは必須 • それ以外にも、TVでサポートしない機能(カメラ、GPS等)をアプリ内で使用している 場合は、required=”false”が必要 <uses-features android:name=”android.hardware.touchscreen” android:required=”false”/> <uses-features
android:name=”android.software.leanback” android:required=”false”/>
ゲームの場合 • ゲームであるという宣言が必要 • ゲームコントローラーに対応する場合も設定が必要 <application android:isGame=”true” …> <uses-feature android:name=”android.hardware.gamepad”
android:required=”false”/> </application>
Android TVはLollipop以上です defaultConfig = { minSdkVersion 21 targetSdkVersion 24 …
} ジッサイウレシイ
How to build the UI
フォーカスで操作可能な画面を作る • D-padでの操作(上下左右+決定ボタン)での操作が可能であること • フォーカスがあたってることを伝える表現(selector-drawable等) <Button android:id=”@+id/button” android:text=”押せます” android:focusable=”true” android:focusableInTouchMode=”true”/>
フォーカス順は基本的にお任せでOK • レイアウトの位置関係に応じて、上下左右でフォーカス移動してくれます • translation等で描画位置を移動している場合は注意が必要 • Z軸は基本的に無視されるので、その点も注意が必要 • ListViewじゃなくてVerticalGridView/HorizontalGridView •
静的なフォーカス順はレイアウトxmlで定義可能(nextFocusUp等) • 動的なフォーカス順はコードでちょっとがんばりましょう • そもそも細かいフォーカス移動はNG(ユーザーがわかりづらい)
Leanback Support Library • Android TV用のUI構築用のライブラリ • 標準的なレイアウトの画面に関して、各種Fragmentが用意されている • v4.app.Fragmentバージョンもあるので、こっちを使ったほうがよさそう
• ver.24でいい感じの機能が追加されてるので、24以降を使いましょう Leanbackについてはこちらを https://developer.android.com/reference/android/support/v17/leanback/package-summary.html
Leanbackを使わない場合 • 超がんばる • TV App Qualityの基準に気をつけましょう • ゲームの場合はUnityとか使ってるアプリが多そう?
Demonstration
Thank you.