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
50
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
作ろう! Android TVアプリ
Android Night 2016/11/11
Kazuki Nara
November 12, 2016
More Decks by Kazuki Nara
See All by Kazuki Nara
FlutterアプリでChromecastに接続する
kazukinr
2
1.1k
プロジェクト開始以来継ぎ足しながら使ってきたソースを捨てた話
kazukinr
0
100
Room with Kotlin
kazukinr
0
29
AOSPにパッチを送ってみた
kazukinr
0
47
Other Decks in Programming
See All in Programming
net-httpのHTTP/2対応について
naruse
0
440
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
270
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
760
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
1.5k
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
500
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
930
AutonomyとControlのあいだ:Graflowで記述するAIエージェント協調
myui
0
110
GitHub Copilot CLIのいいところ
htkym
2
1.3k
密結合なバックエンドから TypeScript のコードを生成する
kemuridama
1
740
RTSPクライアントを自作してみた話
simotin13
0
490
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
170
さぁV100、メモリをお食べ・・・
nilpe
0
130
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
220
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.3k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
140
Test your architecture with Archunit
thirion
1
2.3k
Mind Mapping
helmedeiros
PRO
1
230
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
600
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
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.