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 - Japan Android Group 2016 Aug.
Search
Takashi EGAWA
August 23, 2016
Programming
620
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Android TV - Japan Android Group 2016 Aug.
Takashi EGAWA
August 23, 2016
More Decks by Takashi EGAWA
See All by Takashi EGAWA
Fuchsia Shibuya.apk #28 2018.9.28
t_egg
1
320
GDG Tokyo Android Architecture Components - LiveData
t_egg
9
2.6k
DroidKaigi 2016 パフォーマンスを追求したAndroidアプリを作るには
t_egg
8
9.1k
Other Decks in Programming
See All in Programming
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
41
26k
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
520
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
570
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
240
まずはプロンプトガイドを読もう、話はそれからだ
kiakiraki
1
230
信頼性の目標を誰も求めてない
shubox
0
360
高専、大学編入、そして未踏へ〜プロダクト開発とキャリアの歩み - Technical College, University Transfer, and On to “Mitou” / My Journey in Product Development and Career
pkmiya
0
110
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
170
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
1
2k
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
440
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
660
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
800
Featured
See All Featured
Google's AI Overviews - The New Search
badams
0
1.6k
Product Roadmaps are Hard
iamctodd
55
12k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Designing Experiences People Love
moore
143
24k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
310
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
420
Rails Girls Zürich Keynote
gr2m
96
14k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
490
Designing for Performance
lara
611
70k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Transcript
ຊ"OESPJEͷձ݄ఆྫձ "OESPJE57ରԠͷ ΞϓϦέʔγϣϯ։ൃɾ৴ํ๏ ߐਸ UFHBXB!HNBJMDPN 4NBSUJVN ג (PPHMF%FWFMPQFS&YQFSU
"OESPJE57ͱ
ϦϏϯάϧʔϜͰ͏ϓϩμΫτ ϦϏϯάϧʔϜͰͷϢʔβʔମݧʹϑΥʔΧεͨ͠ (PPHMFͷϓϩμΫτ ˙(PPHMF$BTU ˙"OESPJE57 Chromecast Audio Chromecast Android
TV
ϦϏϯάϧʔϜͰͷϢʔβʔମݧʹϑΥʔΧεͨ͠ (PPHMFͷϓϩμΫτ ˙(PPHMF$BTU ˙"OESPJE57 ϦϏϯάϧʔϜͰ͏ϓϩμΫτ Chromecast Audio Chromecast Android
TV
σόΠεͷܗଶ ܕ Ұମܕ $ISPNFDBTU /7*%*"4)*&-% 9JBPNJ.J#PY 5PTIJCB4NBSU57 40/:#3"7*" 4)"31"2604
ܕɿ ઃఆૢ࡞ʹଟগͷ͕ࣝඞཁ͕͍ͩ׳Εͨطଘͷػث͕͑Δ Ұମܕɿ ઃఆૢ࡞༰қ͕ͩػثຊདྷͷߪೖϥΠϑαΠΫϧͱ߹͍͍
(PPHMF$BTUͱ"OESPJE57 (PPHMF$BTU ˙ΞϓϦ։ൃ (PPHMF$BTU4%, Wʹ ެ։ Λ༻͍ͯ։ൃ TFOEFSσόΠεͱͯ͠ԼهΛఏڙ w"OESPJE"1* wJ04"1*
w$ISPNF"1* ˙ΞϓϦ৴ (PPHMF$BTU4%,%FWFMPQFS ʹొʢॳճυϧʣ͠৴ IUUQTDBTUHPPHMFDPNQVCMJTI
(PPHMF$BTUͱ"OESPJE57 (PPHMF$BTU ˙ΞϓϦ։ൃ (PPHMF$BTU4%, Wʹ ެ։ Λ༻͍ͯ։ൃ TFOEFSσόΠεͱͯ͠ԼهΛఏڙ w"OESPJE"1* wJ04"1*
w$ISPNF"1* ˙ΞϓϦ৴ (PPHMF$BTU4%,%FWFMPQFS ʹొʢॳճυϧʣ͠৴ IUUQTDBTUHPPHMFDPNQVCMJTI "OESPJE57 ˙ΞϓϦ։ൃ ௨ৗͷ"OESPJEΞϓϦ։ൃ -FBOCBDL-JCSBSZͰͷ։ൃ $BTUΞϓϦඪ४ಈ࡞ ˙ΞϓϦ৴ ௨ৗͷΞϓϦͱಉ༷ʹ(PPHMF1MBZ Ͱͷ৴ ˞৹ࠪ͋Γ
"OESPJE57˺"OESPJE "OESPJE57 "OESPJE r"GFX(PPHMFBQQT r4PNFIBSEXBSFGFBUVSFT 1MBUGPSN57GFBUVSFT 0&.$VTUPNJ[BUJPO
w։ൃπʔϧ4%,طଘͷͷͱڞ௨ w"1*جຊతʹͯ͢ར༻Մ wͨͩ͠ɺ͍͔ͭ͘ͷ(PPHMFΞϓϦඇࡌ 8&#ϒϥβ $ISPNF (PPHMF.BQT ϝʔϧ (NBJM (PPHMF )BOHPVU w57ͷಛੑ্ɺࡌ͍ͯ͠ͳ͍ϋʔυΣΞػೳ͋Γ
6OJUZωΠςΟϒαϙʔτ w6OJUZ͔Β"OESPJE57ΛωΠςΟϒαϙʔτ wίʔυϥϘl"OESPJE57(BNFTGPS6OJUZz͋Γ IUUQHDPDPEFMBCT
6OJUZͰͷ73ʹೃછΈ͕ͳ͍ਓ
6OJUZͰͷ73ʹೃછΈ͕ͳ͍ਓ 6OJUZʹΑΔ73ΞϓϦέʔγϣϯ։ൃ ʕʕ࡞Γͳ͕ΒֶͿόʔνϟϧϦΞϦςΟೖ +POBUIBO-JOPXFTɹஶ ߴڮݑҰɺ҆౻ԝɺߐਸɺ͋ΜͲ͏͢͠ɹ༁ ग़൛ɿΦϥΠϦʔδϟύϯ ݄ൃച༧ఆ ԁ
ϖʔδ *4#/
"OESPJE57ΤϛϡϨʔλ w͔ͭͯͷ"OESPJE57ΤϛϡϨʔλಈ࡞ෆ҆ఆͩͬ ͕ͨɺݱࡏൺֱత҆ఆ͓ͯ͠Γɺߴʹಈ࡞͢Δ wσόΠεΛඞཁͱͤͣʹ։ൃͰ͖Δ
57ରԠͷجຊ
57ରԠͷجຊ wϥϯυεέʔϓݻఆ wૢ࡞෦ࠨӈʹஔ্͖Լઅɻ"DUJPO#BSෆཁ wϦϞίϯૢ࡞ʢ%1BE·ͨήʔϜίϯτϩʔϥʣ wϥϯνϟʔʹఏڙ͢Δ57όφʔ"DUJWJUZͷߟྀ wΦʔόʔεΩϟϯ wϋʔυΣΞػೳͷߟྀ w-FBOCBDLϥΠϒϥϦ࠾༻ͷݕ౼ wެ։લ৹ࠪ
57όφʔ ΞϓϦͷΤϯτϦϙΠϯτͷఆٛ
57όφʔ w57ͷϗʔϜεΫϦʔϯ͔ΒΞϓϦΛىಈ͢ΔͨΊͷ ΤϯτϦϙΠϯτͱͳΔ w57όφʔΛϢʔβʔ͕ΫϦοΫ͢ΔͱΞϓϦΛ ૢ࡞Ͱ͖ΔΑ͏ʹͳΔ
57όφʔ wYQY YIEQJϦιʔε wΞϓϦ໊͕ಡΊΔΑ͏ʹ͢Δ͜ͱʢ֤ࠃޠʣ
57όφʔͷՃ w"OESPJE.BOJGFTUYNM
57όφʔͷՃʢήʔϜͷ߹ʣ w"OESPJE.BOJGFTUYNM
ىಈ"DUJWJUZ ىಈ͖͢"DUJWJUZΛΒͤΔ
"DUJWJUZͷఆٛ w"OESPJE.BOJGFTUYNM
ΦʔόʔεΩϟϯ ը໘ͷ֎पʹର͢Δߟྀ
ΦʔόʔεΩϟϯ wඳը͕อূ͞Εͳ͍֎पͷྖҬ wΨΠυϥΠϯͱͯ͠ɺपғ
φϏήʔγϣϯɾ ϑΥʔΧεɾબ 57ʹ͓͚ΔϢʔβʔʹΑΔૢ࡞
φϏήʔγϣϯɾϑΥʔΧεɾબ w%1BEήʔϜίϯτϩʔϥʔͰͷΩʔೖྗૢ࡞ w্Լࠨӈͷ࢛ํʹҠಈ͕ݶఆ wॎԣೋ࣍ݩͷφϏήʔγϣϯܦ࿏͕ཧղ͠ ͍͢Α͏ʹ wϑΥʔΧε wৗʹͭͷΦϒδΣΫτʹϑΥʔΧε͢Δ ʢϢʔβʔ͕ࠓͲ͜Λૢ࡞͍ͯ͠Δ͔ཧղ Ͱ͖ΔΑ͏ʹʣ
Items Status KEYCODE_DPAD_UP KEYCODE_DPAD_DO WN
KEYCODE_DPAD_LEF T KEYCODE_DPAD_RIG HT KEYCODE_DPAD_CEN TER KEYCODE_BUTTON_A A" KEYCODE_BUTTON_B B" KEYCODE_BACK BACK" KEYCODE_HOME HOME" Android"TV" Items Focus nextFocusDown nextFocusUp nextFocusRight nextFocusLeft ํφϏήʔγϣϯ wجຊతʹͯ͢ΩʔΠϕϯτͱͯ͠ૹग़͞ΕΔ wPO,FZ%PXOͰಠࣗʹॲཧ͢Δ͜ͱՄೳ wϑΥʔΧεભҠ͕ෆࣗવͳ߹OFYU'PDVT999ཁૉͰมߋ͢Δ android:nextFocusRight=“@id/button1" android:nextFocusLeft="@id/button2"
<ImageView android:id="@+id/play_pause_button" android:focusable="true" android:nextFocusRight="@+id/ffw_button" android:nextFocusLeft="@+id/rewind_button" /> ϑΥʔΧεΛड͚औΒͳ͍7JFX wز͔ͭͷ7JFXσϑΥϧτͰϑΥʔΧεΛड͚औΒͳ͍ͷͰɺ໌ࣔత ʹઃఆ͕ඞཁ
wྫ*NBHF7JFXɺ5FYU7JFXɺ-JOFBS-BZPVUͳͲ
ϋʔυΣΞػೳ εϚϗλϒϨοτͱͷҧ͍ͷߟྀ
ϋʔυΣΞػೳ w57Ͱඪ४αϙʔτ͞Εͳ͍ػೳ͕͋Δ wແ͍͜ͱΛલఏʹ࡞Δ wڞ௨ΞϓϦͷ߹ɺػೳΛඞਢͱ͠ͳ͍ࢫΛએݴ͠ɺ࣮ߦ࣌ʹػೳͷ ༗ແΛνΣοΫ͢Δ
android.hardware.touchscreen android.hardware.faketouch android.hardware.telephony android.hardware.camera Bluetooth android.hardware.bluetooth Near Field Communications (NFC) android.hardware.nfc GPS android.hardware.location.gps android.hardware.microphone android.hardware.sensor <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
҉తͳϋʔυΣΞཁٻ wύʔϛογϣϯཁٻʢVTFQFSNJTTJPOʣΛ͢Δͱɺ҉తʹϋʔυΣ ΞػೳΛཁٻͨ͜͠ͱʹͳΔέʔε͕͋Δ w໌ࣔతʹVTFGFBUVSFλάʹSFRVJSFEGBMTF͕ඞཁ
3&$03%@"6%*0 android.hardware.microphone $".&3" android.hardware.camera "$$&44@'*/&@-0$"5*0/ android.hardware.location android.hardware.location.gps
$16ΞʔΩςΫνϟ wੈͷதͷଟ͘ͷ"OESPJE57σόΠεɺΠϯςϧܥ$16Λࡌ͍ͯ͠Δ wͨͩ͠ɺ40/:#3"7*"ͷΑ͏ʹ"3.Λ࠾༻͍ͯ͠Δͷ͋ΔͷͰɺ $16ΞʔΩςΫνϟʔʹґଘ͢ΔΞϓϦߟྀ͕ඞཁ
-FBOCBDLϥΠϒϥϦ 57༻6*ϥΠϒϥϦ
-FBOCBDLϥΠϒϥϦ w57͚Ϣʔβʔମݧͷ࣮Λࢧԉ͢ΔαϙʔτϥΠϒϥϦ wैདྷͷWαϙʔτϥΠϒϥϦɺW3FDZDMF7JFXΛར༻͠ ֦ͨுϥΠϒϥϦ wඞਢͰͳ͍͕ར༻͢Δͱ57͚6*ͷָ࣮͕ʹͳΔ wΦʔόʔεΩϟϯྖҬͷߟྀෆཁ w-FBOCBDLςʔϚ w57༻ඪ४ςʔϚ <activity
android:name="com.example.android.TvActivity" android:label="@string/app_name" android:theme="@style/Theme.Leanback">
#SPXTF'SBHNFOU wͯ͢ͷϝσΟΞίϯςϯπΛҰՕॴʹ·ͱΊͯӾཡͰ͖ΔΑ͏ʹ͢Δ wΧςΰϦ͝ͱͷྨɺ֤ϝσΟΞͷάϦουදࣔͳͲ͕ඪ४ͰՄೳ 3&$03%@"6%*0
android.hardware.microphone $".&3" android.hardware.camera "$$&44@'*/&@-0$"5*0/ android.hardware.location android.hardware.location.gps
#SPXTF'SBHNFOU 3&$03%@"6%*0 android.hardware.microphone $".&3"
android.hardware.camera "$$&44@'*/&@-0$"5*0/ android.hardware.location android.hardware.location.gps wΧςΰϦબ࣌ɺΧςΰϦʹରԠ͢ΔϝσΟΞͷλΠτϧͳͲΛදࣔ
%FUBJMT'SBHNFOU w݅ͷϝσΟΞίϯςϯπͷৄࡉͳใϝσΟΞʹର͢Δૢ࡞Λఏڙ 3&$03%@"6%*0 android.hardware.microphone
$".&3" android.hardware.camera "$$&44@'*/&@-0$"5*0/ android.hardware.location android.hardware.location.gps
1MBZCBDL0WFSMBZ'SBHNFOU wϝσΟΞͷࢹௌɾૢ࡞ʢ࠶ੜɾఀࢭɾ࣍ɾલͳͲʣ wؔ࿈ίϯςϯπͷදࣔ
4FBSDI'SBHNFOU wϝσΟΞͷࢹௌɾૢ࡞ʢ࠶ੜɾఀࢭɾ࣍ɾલͳͲʣ wؔ࿈ίϯςϯπͷදࣔ
όʔδϣϯͷҧ͍ ৽ چ
3FDPNNFOEBUJPOTʢΦεεϝʣ wΞϓϦ͕Ϣʔβʔʹ͓͢͢Ί͍ͨ͠ϝσΟΞίϯςϯπΛఏڙ wϢʔβʔ͕બ͢ΔͱͦͷϝσΟΞʹμΠϨΫτʹඈͿ͜ͱ͕Ͱ͖Δ w-FBOCBDLϥΠϒϥϦͱผͷϥΠϒϥϦ wΦεεϝ͖͢ͷͷ҆ w࣍ͷίϯςϯπྫʣγϦʔζͷ࣍ͷΤϐιʔυ w৽͍͠ίϯςϯπྫʣ৽γϦʔζਓؾίϯςϯπ wؔ࿈ίϯςϯπྫʣϢʔβʔͷࢹௌཤྺʹجͮ͘
android { compileSdkVersion 24 buildToolsVersion '24' ... } dependencies
{ ... compile 'com.android.support:leanback-v17:24.0.0' compile 'com.android.support:recommendation:24.0.0' } ར༻͢Δʹ wCVJMEHSBEMF
"1,ͷ৴ 57ରԠΞϓϦͷެ։
wՁ֨ͱൢചҬ 1SJDJOH%*453*#65*0/ ͔Β"OESPJE57ͷ ΧςΰϦʹνΣοΫΛೖΕΔ͜ͱͰ57༻ϨϏϡʔ͕ߦΘΕΔ wϨϏϡʔ͕௨Εɺ57༻1MBZ4UPSFͰެ։͞ΕΔ wϨϏϡʔ͕௨Βͳ͘ͱɺ௨ৗͷ1MBZ4UPSFʹӨڹͳ͍ wυΩϡϝϯτɿ"OESPJE57ͷʢIUUQHPPHM"S1Y1Yʣ w-&"/#"$,@-"6/$)&3 w57༻όφʔը૾ Y
YIEQJ wαϙʔτ֎ͷϋʔυΣΞͷґଘΛഉআʢλονεΫϦʔϯͳͲʣ wύʔϛογϣϯઃఆʹΑΔ҉తͳϋʔυΣΞཁٻͷ֬ೝ wϥϯυεέʔϓରԠ wڑ͕Ε͍ͯͯݟ͑ΔΑ͏ʹ wΦʔόʔεΩϟϯͷରԠ w-FBOCBDL6*ͷରԠ "1,ͷ৴
࠷ޙʹ wϦϏϯάϧʔϜʹϑΥʔΧεͨ͠ϓϩμΫτ (PPHMF$BTU "OESPJE57 w"OESPJE57$BTUඪ४ࡌͷl"OESPJEzͰ͋Δ w57ରԠʹ6*ϋʔυΣΞػೳͷߟྀ͕ඞཁ w৴ʹࣄલ৹͕ࠪඞཁ w57ରԠΛࢧԉ͢ΔͨΊʹ-FBOCBDLϥΠϒϥϦͳͲͷ ඪ४෦͕ఏڙ͞Ε͍ͯΔ