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.5k
既存アプリを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
540
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
950
Androidからサーバーサイドまで!プログラミング言語 Kotlinの魅力 #devboost
ntaro
5
2.6k
Kotlin Contracts #m3kt
ntaro
4
4k
How_to_Test_Server-side_Kotlin.pdf
ntaro
1
470
Other Decks in Programming
See All in Programming
Learning Kotlin with detekt
inouehi
1
150
CDKを使ったPagerDuty連携インフラのテンプレート化
shibuya_shogo
0
110
複数のAWSアカウントから横断で 利用する Lambda Authorizer の作り方
tc3jp
0
120
仕様変更に耐えるための"今の"DRY原則を考える
mkmk884
9
3.2k
Formの複雑さに立ち向かう
bmthd
1
940
AIプログラミング雑キャッチアップ
yuheinakasaka
19
4.9k
読まないコードリーディング術
hisaju
0
110
推しメソッドsource_locationのしくみを探る - はじめてRubyのコードを読んでみた
nobu09
2
340
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
19
4.2k
良いコードレビューとは
danimal141
7
1.6k
たのしいSocketのしくみ / Socket Under a Microscope
coe401_
8
1.4k
iOSでQRコード生成奮闘記
ktcryomm
2
110
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Navigating Team Friction
lara
183
15k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
134
33k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
How to Ace a Technical Interview
jacobian
276
23k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.4k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Building Adaptive Systems
keathley
40
2.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
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
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ