Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
AI時代もSEOを頑張っている話
shirahama_x
0
220
Building AI with AI
inesmontani
PRO
1
470
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
0
270
AWS CDKの推しポイントN選
akihisaikeda
1
240
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
5
1.9k
関数実行の裏側では何が起きているのか?
minop1205
1
500
モデル駆動設計をやってみよう Modeling Forum2025ワークショップ/Let’s Try Model-Driven Design
haru860
0
230
レイトレZ世代に捧ぐ、今からレイトレを始めるための小径
ichi_raven
0
490
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
140
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
470
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
4
260
TVerのWeb内製化 - 開発スピードと品質を両立させるまでの道のり
techtver
PRO
3
1.4k
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.2k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
BBQ
matthewcrist
89
9.9k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
How to Ace a Technical Interview
jacobian
280
24k
KATA
mclloyd
PRO
32
15k
Statistics for Hackers
jakevdp
799
230k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Producing Creativity
orderedlist
PRO
348
40k
Unsuck your backbone
ammeep
671
58k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
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.