Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
99
Room with Kotlin
kazukinr
0
28
AOSPにパッチを送ってみた
kazukinr
0
44
Other Decks in Programming
See All in Programming
「ブロックテーマでは再現できない」は本当か?
inc2734
0
1k
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
310
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
600
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
1
130
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
200
Basic Architectures
denyspoltorak
0
680
CSC307 Lecture 10
javiergs
PRO
1
660
CSC307 Lecture 03
javiergs
PRO
1
490
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
7.4k
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
430
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
220
CSC307 Lecture 08
javiergs
PRO
0
670
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
1
760
Ethics towards AI in product and experience design
skipperchong
2
200
Unsuck your backbone
ammeep
671
58k
How GitHub (no longer) Works
holman
316
140k
Darren the Foodie - Storyboard
khoart
PRO
2
2.4k
Bash Introduction
62gerente
615
210k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Abbi's Birthday
coloredviolet
1
4.8k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
52
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.