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.3k
既存アプリを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
Kotlin 最新動向2022 #tfcon #techfeed
ntaro
1
2k
#Ubie 狂気の認知施策と選考設計
ntaro
13
12k
UbieにおけるサーバサイドKotlin活用事例
ntaro
1
1k
KotlinでSpring 完全理解ガイド #jsug
ntaro
6
3.2k
Kotlinでサーバサイドを始めよう!
ntaro
1
840
Androidからサーバーサイドまで!プログラミング言語 Kotlinの魅力 #devboost
ntaro
5
2.3k
Kotlin Contracts #m3kt
ntaro
4
3.4k
How_to_Test_Server-side_Kotlin.pdf
ntaro
1
390
Kotlin Fest 2018 - Opening session
ntaro
0
4.2k
Other Decks in Programming
See All in Programming
StoreKit2によるiOSのアプリ内課金のリニューアル
kangnux
0
110
Snowflakeで眠ったデータを起こそう!
estie
0
110
PHPはいつから死んでいるかの調査
chiroruxx
1
370
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
220
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
680
CQRS/ES avec Symfony, c’est (trop) bien !
jeremyfreeagent
1
640
デフォルトにして至高、RubyMineの大好きな所
ruzia
0
230
Changed Rules: Architectures with Lightweight Stores
manfredsteyer
PRO
0
240
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
160
Ruby Function Composition
bkuhlmann
1
330
Git Rebase
bkuhlmann
11
1.6k
educure_カリキュラム生操作マニュアル.pdf
linew_official
0
660
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
220
21k
Designing the Hi-DPI Web
ddemaree
276
33k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
Building a Scalable Design System with Sketch
lauravandoore
455
32k
Mobile First: as difficult as doing things right
swwweet
216
8.6k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Agile that works and the tools we love
rasmusluckow
324
20k
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
Fantastic passwords and where to find them - at NoRuKo
philnash
36
2.5k
Art, The Web, and Tiny UX
lynnandtonic
288
19k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
6
990
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
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ