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
既存アプリを1時間でWear対応する
Search
Taro Nagasawa
July 16, 2014
Programming
2
5.6k
既存アプリを1時間でWear対応する
Android Wear勉強会 #2 (
http://atnd.org/events/53398
)の発表資料です。
Taro Nagasawa
July 16, 2014
Tweet
Share
More Decks by Taro Nagasawa
See All by Taro Nagasawa
Android開発者のための Kotlin Multiplatform入門
ntaro
0
670
Kotlin 最新動向2022 #tfcon #techfeed
ntaro
1
2.2k
#Ubie 狂気の認知施策と選考設計
ntaro
13
13k
UbieにおけるサーバサイドKotlin活用事例
ntaro
1
1.1k
KotlinでSpring 完全理解ガイド #jsug
ntaro
6
3.4k
Kotlinでサーバサイドを始めよう!
ntaro
1
980
Androidからサーバーサイドまで!プログラミング言語 Kotlinの魅力 #devboost
ntaro
5
2.7k
Kotlin Contracts #m3kt
ntaro
4
4.1k
How_to_Test_Server-side_Kotlin.pdf
ntaro
1
500
Other Decks in Programming
See All in Programming
Rails産でないDBを Railsに引っ越すHACK - Omotesando.rb #110
lnit
1
160
技術懸念に立ち向かい 法改正を穏便に乗り切った話
pop_cashew
0
1.4k
從零到一:搭建你的第一個 Observability 平台
blueswen
1
900
「兵法」から見る質とスピード
ickx
0
260
コード書くの好きな人向けAIコーディング活用tips #orestudy
77web
3
300
The Evolution of Enterprise Java with Jakarta EE 11 and Beyond
ivargrimstad
1
660
CSC307 Lecture 17
javiergs
PRO
0
110
Enterprise Web App. Development (2): Version Control Tool Training Ver. 5.1
knakagawa
1
110
複数アプリケーションを育てていくための共通化戦略
irof
10
3.8k
F#で自在につくる静的ブログサイト - 関数型まつり2025
pizzacat83
0
290
ワイがおすすめする新潟の食 / 20250530phpconf-niigata-eve
kasacchiful
0
300
ドメインモデリングにおける抽象の役割、tagless-finalによるDSL構築、そして型安全な最適化
knih
10
1.8k
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
172
14k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
650
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
900
Unsuck your backbone
ammeep
671
58k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
43
2.4k
Practical Orchestrator
shlominoach
188
11k
Facilitating Awesome Meetings
lara
54
6.4k
A Modern Web Designer's Workflow
chriscoyier
693
190k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Transcript
طଘΞϓϦΛ࣌ؒͰ 8FBSରԠ͢Δ ᖒଠ!OHTX@UBSP
ࣗݾհ w ᖒଠ!OHTX@UBSP w ιϑτΣΞΤϯδχΞ w ࣗশ,PUMJOΤόϯδΣϦετ
झຯͰ։ൃͯ͠ΔΞϓϦ ເͱຐ๏ͷͪ࣌ؒ ເͱຐ๏ͷԦࠃͷͪ࣌ؒ ΛνΣοΫ͢ΔΞϓϦͰ͢ɻ ! ɾສμϯϩʔυ ɾฏۉධՁ ɾ௨ʗΟδΣοτରԠ (PPHMF1MBZΑΓ%-Մ IUUQHPPHM0L)OH
8FBSରԠ͠·ͨ͠
طଘΞϓϦΛ࣌ؒͰ 8FBSରԠ͢Δ
طଘΞϓϦΛ࣌ؒͰ 8FBSରԠ͢Δ ͱʹ͔͘ૣ͘ϦϦʔε ڽͬͨػೳޙճ͠
w௨ฤ w8FBSΞϓϦฤ
·ͣ࢝Ίʹ DPNQJMFDPNBOESPJETVQQPSUBQQDPNQBUW DPNQJMFDPNHPPHMFBOESPJEHNTQMBZTFSWJDFT طଘΞϓϦͷCVJMEHSBEMFͰґଘؔΛߋ৽ ͜͜·Ͱ
௨ฤ
௨Կ͠ͳͯ͘ 8FBSʹදࣔ͞ΕΔΑ
ྫ*OCPY4UZMF
ྫ*OCPY4UZMF ଞʹΞΫγϣϯϘλϯ উखʹ8FBSଆʹදࣔ͞ΕΔ
͙͢ʹͰ͖Δ؆୯ͳରԠ w എܠը૾Λઃఆ w ϖʔδΛՃ w ௨ΛελοΫ͢Δ w ରԠ͠ͳ͍
8FBS༻௨ઃఆͷྲྀΕ WearableExtenderΠϯελϯεΛੜ͢Δ WearableExtenderʹରͯ͠ઃఆΛ͢Δ NotificationCompat.Builder#extendͰ WearableExtenderΛηοτ͢Δ NotificationManagerCompatΛͬͯ௨Λ
ൃߦ͢Δ
8FBS༻௨ઃఆͷྲྀΕ WearableExtenderΠϯελϯεΛੜ͢Δ WearableExtenderʹରͯ͠ઃఆΛ͢Δ NotificationCompat.Builder#extendͰ WearableExtenderΛηοτ͢Δ NotificationManagerCompatΛͬͯ௨Λ
ൃߦ͢Δ
എܠը૾ͷઃఆ wearableExtender.setBackground(bitmap); -BSHFU*DPOΛ֦େͨͭ͠ ΦϦδφϧαΠζ
ϖʔδΛՃ wearableExtender! .addPage(notification)! .addPages(notificationList); DPOUFOU5JUMF DPOUFOU5FYU
௨ΛελοΫ͢Δ notificationCompatBuilder! ! .setGroup(“GroupKey”) ͜͜·Ͱ
8FBSΞϓϦฤ
8FBSΞϓϦՃͷྲྀΕ ϓϩδΣΫτʹ8FBSϞδϡʔϧΛՃ͢Δ 8FBSΞϓϦΛ࡞Δ ຊମϞδϡʔϧʹ8FBSϞδϡʔϧΛόϯυϧ͢Δ ઃఆΛՃ͢Δ Ϗϧυͯ͠ຊମͷBQLΛެ։
8FBSϞδϡʔϧՃ 8FBSΞϓϦΛՃ͍ͨ͠ϓϩδΣΫτΛ "OESPJE4UVEJPͰ։͘ 'JMF/FX.PEVMF Οβʔυ͕ग़ΔͷͰ8FBS༻ʹઃఆ͢Δ
None
None
None
CVJMEHSBEMFͷमਖ਼ DPNQJMF4EL7FSTJPO8 DPNQJMF4EL7FSTJPO ͜͜·Ͱ
8FBSΞϓϦΛ࡞Δ w ຊମΞϓϦ͔ΒσʔλΛड͚औΔ w σʔλΛදࣔ͢Δ ϏϡʔΛ࡞Δ
ຊମΞϓϦ͔ΒσʔλΛड͚औΔ w ڞ௨Ͱ͏Ϋϥε܈ΛϞδϡʔϧʹ͚Δ w ྫ͑"UUSBDUJPOΫϥεͳͲ w ϝοηʔδΛΓऔΓ͢Δ
Ϟδϡʔϧ͚ ྫ w BQQϞδϡʔϧిʗλϒϨοτ༻ΞϓϦ w XFBSϞδϡʔϧ8FBS༻ΞϓϦ w DPNNPOϞδϡʔϧڞ௨σʔλɺϩδοΫͳͲ BQQͱXFBSDPNNPOʹґଘ͢Δ ͜͜·Ͱ
ϝοηʔδΛΓऔΓ͢Δ ৽͍ͪ࣌ؒ͠ใΛཁٻ ͪ࣌ؒใΛฦ͢
ϝοηʔδૹ৴"1* Wearable.NodeApi#getConnectedNodes Wearable.MessageApi#sendMessage Ͱଓ͍ͯ͠ΔϊʔυΛऔಘͯ͠ ͰϝοηʔδΛૹ৴͢Δ Wearable.NodeApi.getConnectedNodes(googleApiClient).setResultCallback(! new ResultCallback<NodeApi.GetConnectedNodesResult>() {! @Override!
public void onResult(final NodeApi.GetConnectedNodesResult nodes) {! for (final Node node : nodes.getNodes()) {! Wearable.MessageApi.sendMessage(client, node.getId(), path, data);! }! }! }! );
ϝοηʔδͷड৴ w MessageApi.MessageListenerΠϯλϑΣʔε Λ࣮͢Δ ! w WearableListenerServiceͷαϒΫϥεΛ࡞ͬ ͯΠϯςϯτΛर͏ PS
ϝοηʔδͷ༰CZUFྻ ΦϒδΣΫτΛੜͯ͠CZUFྻʹม ArrayList<Attraction>ˠbyte[] CZUFྻΛड৴ͯ͠ΦϒδΣΫτʹม byte[]ˠArrayList<Attraction> ͜͜·Ͱ
ϝοηʔδ"1*ͷৄࡉ ! IUUQEFWFMPQFSBOESPJEDPNJOUMKBUSBJOJOH XFBSBCMFTEBUBMBZFSJOEFYIUNM
ϏϡʔΛ࡞Δ w WearableListView8FBS༻ϦετϏϡʔ w GridViewPager(SJEͳ7JFX1BHFS w CardFragmentΧʔυܕϑϥάϝϯτ
8FBSBCMF-JTU7JFX w 8FBSBCMF-JTU7JFX"EBQUFS w 8FBSBCMF-JTU7JFX༻Ξμϓλ w 7JFX)PMEFSΛཧͯ͘͠ΕΔͬΆ͍ ˡ8FBSBCMF-JTU7JFX༻
(SJE7JFX1BHFS $BSE'SBHNFOU w ্ԼࠨӈʹεϫΠϓҠಈͰ͖Δϖʔδϟ w $BSE'SBHNFOU؆୯ʹઃஔՄೳ CardFragment.create(“title",! “description",! R.drawable.ic_launcher); 2JJUBʮ8FBS༻7JFXͷ(SJE7JFX1BHFSΛ͏ʯ
IUUQRJJUBDPNOHTX@UBSPJUFNTCBFGB ͜͜·Ͱ
8FBSϞδϡʔϧΛόϯυϧ w BQQϞδϡʔϧిʗλϒϨοτ༻ΞϓϦ w XFBSϞδϡʔϧ8FBS༻ΞϓϦ BQQϞδϡʔϧͷCVJMEHSBEMF dependencies {! ɾɾɾ! wearApp
project(‘:wear')! } ͜͜·Ͱ
Ϗϧυͯ͠ຊମͷBQLΛެ։ w #VJMEˠ(FOFSBUF4JHOFE"1,ʜ w BQQϞδϡʔϧ ຊମϞδϡʔϧ Λબ w BQQSFMFBTFBQLΛిʹΠϯετʔϧ͢Δͱଓ ͍ͯ͠Δ8FBSʹXFBSΞϓϦ͕ࣗಈతʹΠϯε
τʔϧ͞ΕΔ w BQQSFMFBTFBQLΛσϕίϯʹΞοϓͯ͠ެ։ ͜͜·Ͱ
༨ͬͨʂ
ৄ͍͠จݙ w "OESPJE%FWFMPQFST w μϯϩʔυͰ͖Δ"1*ϦϑΝϨϯε w 4%,ಉࠝͷαϯϓϧ IUUQEFWFMPQFSBOESPJEDPNJOUMKBUSBJOJOHCVJMEJOHXFBSBCMFTIUNM IUUQEFWFMPQFSBOESPJEDPNJOUMKBUSBJOJOHXFBSBCMFTBQQTMBZPVUTIUNM6J-JCSBSZ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ