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
iQONのWear Notification最適化
Search
Yoichi Nishimura
August 28, 2014
Technology
2
440
iQONのWear Notification最適化
2014年8月28日にグーグル株式会社で行われた「Android Wear Bootcamp」で登壇した際のスライド
Yoichi Nishimura
August 28, 2014
Tweet
Share
More Decks by Yoichi Nishimura
See All by Yoichi Nishimura
Material Designの作り方 〜Bottom Sheets編〜
nissiy
1
690
はじめてのKenBurnsEffect
nissiy
1
1.4k
iQON Engineer Seminar - Android
nissiy
0
4.1k
Other Decks in Technology
See All in Technology
高速なプロダクト開発を実現、創業期から掲げるエンタープライズアーキテクチャ
kawauso
1
370
自律的なスケーリング手法FASTにおけるVPoEとしてのアカウンタビリティ / dev-productivity-con-2025
yoshikiiida
0
710
Witchcraft for Memory
pocke
1
670
整頓のジレンマとの戦い〜Tidy First?で振り返る事業とキャリアの歩み〜/Fighting the tidiness dilemma〜Business and Career Milestones Reflected on in Tidy First?〜
bitkey
0
590
Connect 100+を支える技術
kanyamaguc
0
150
rubygem開発で鍛える設計力
joker1007
2
270
KubeCon + CloudNativeCon Japan 2025 Recap by CA
ponkio_o
PRO
0
250
「Chatwork」の認証基盤の移行とログ活用によるプロダクト改善
kubell_hr
1
240
5min GuardDuty Extended Threat Detection EKS
takakuni
0
180
Lambda Web Adapterについて自分なりに理解してみた
smt7174
5
140
開発生産性を組織全体の「生産性」へ! 部門間連携の壁を越える実践的ステップ
sudo5in5k
0
530
Amazon S3標準/ S3 Tables/S3 Express One Zoneを使ったログ分析
shigeruoda
5
590
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
Scaling GitHub
holman
459
140k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
A Tale of Four Properties
chriscoyier
160
23k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
GraphQLとの向き合い方2022年版
quramy
49
14k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Embracing the Ebb and Flow
colly
86
4.7k
Building an army of robots
kneath
306
45k
Transcript
8FBS/PUJpDBUJPO࠷దԽ גࣜձࣾ7"4*-: ଜ༸Ұ
ࣗݾհ w ଜ༸Ұ w גࣜձࣾ7"4*-:ʢϰΝγϦʔʣ ΤϯδχΞ w ϑΝογϣϯΞϓϦʰJ20/ʱ։ൃऀ w "OESPJE%FWFMPQFSྺ
ϲ݄
ͱʁ
ϑΝογϣϯΞϓϦJ20/ w ঁੑ͚ϑΝογϣϯΞϓϦ w ձһສਓ ݄ݱࡏ ϊϯϓϩϞʔγϣϯͰ͜͜·Ͱདྷ·ͨ͠
None
J20/"OESPJE w ࠃͷJ04γΣΞ૿ʹٯΒͬͯٸத w 1MBZ4UPSFͷϨϏϡʔ ݄ݱࡏ
J20/"OESPJE w ্ظϕετΞϓϦʹબΕ·ͨ͠ʂ
"OESPJEϑΝʔετ ޭͨ͠ࢪࡦ
"OESPJEϑΝʔετ ࣦഊͨ͠ࢪࡦ ✕ J04࣮͠ͳ͍ ؤுͬͯޮՌ͕ग़ͳ͍ࢪࡦ ༰ࣻͳ͘আ
"OESPJEϑΝʔετ w "OESPJEϩʔϧόοΫ͕༰қʂ άϩʔεϋοΫʹ࠷ߴͷϓϥοτϑΥʔϜ w "OESPJEϑΝʔετΛ࣮ફ͢ΔͱJ04Ͱޮతͳ։ ൃ͕Ͱ͖·͢ ͨͪJ04༷͕ؾ࣋ͪΑ͘։ൃͰ͖ΔͨΊʹؤுΔ
None
"OESPJE8FBSରԠ͠·ͨ͠ w ͱ͍ͬͯ /PUJpDBUJPOͷ࠷దԽͷΈ w গ͠ͷมߋͰάοͱมΘΓ·͢ ͦΜͳʹ͔͔Βͳ͍Ͱ͢ w ˎTVQQPSUW ͕ඞཁ
#FGPSF
ݱঢ়ͷ/PUJpDBUJPOΛѲ w J20/"OESPJEͰ छྨͷ/PUJpDBUJPO͕ଘࡏ w ֤/PUJpDBUJPOʹඞͣ ը૾͕ඥ͍͍ͯΔ ˠഎܠؔ࿈ը૾ʹ͠Α͏ʂ
NotificationCompat.BigPictureStyle bigPictureStyle = new NotificationCompat.BigPictureStyle() .bigPicture(backgroundImage) .setBigContentTitle("iQON͔Βͷ͓Βͤ") .setSummaryText(message); ! NotificationManagerCompat
notificationManager = NotificationManagerCompat.from(getApplicationContext()); Notification notification = new NotificationCompat.Builder(getApplicationContext()) .setSmallIcon(R.drawable.icon) .setDefaults(Notification.DEFAULT_SOUND) .setContentTitle("iQON͔Βͷ͓Βͤ") .setContentText(message) .setContentIntent(contentIntent) .setStyle(bigPictureStyle) .setAutoCancel(true) .build(); notificationManager.notify(1, notification); എܠͷ࠷దԽͦͷ w #JH1JDUVSF4UZMFΛઃఆ͢Δ
എܠͷ࠷దԽͦͷ w 8FBSʹഎܠ͕ઃఆ͞Ε͚ͨͲ #JH1JDUVSF4UZMFʹઃఆͨ͠ͷͰεϚϗʹը૾
എܠͷ࠷దԽͦͷ w 8FBS͚ͩʹӨڹΛग़͍ͨ͠߹ 8FBSBCMF&YUFOEFSΛͬͯഎܠΛઃఆ NotificationCompat.WearableExtender wearableExtender = new NotificationCompat.WearableExtender(); if
(backgroundImage != null) { wearableExtender.setBackground(backgroundImage); } ! Notification notification = new NotificationCompat.Builder(getApplicationContext()) .setSmallIcon(R.drawable.icon) .setDefaults(Notification.DEFAULT_SOUND) .setContentTitle(“iQON͔Βͷ͓Βͤ“) .setContentText(message) .setContentIntent(contentIntent) .setAutoCancel(true) .extend(wearableExtender) .build();
എܠͷ࠷దԽͦͷ w 8FBSͷΈʹഎܠ͕ઃఆ͞Εͨ
λΠτϧͷ࠷దԽ w λΠτϧ͕ͯ͘೦ͳܗʹͳ͍ͬͯΔͷͰ ΞϓϦ໊ͷΈʹมߋ #FGPSF
ϏϑΥʔΞϑλʔ #FGPSF "GUFS
RemoteInput remoteInput = new RemoteInput.Builder("VOICE_SEARCH_DISCOUNT_ITEM") .setLabel("ηʔϧΞΠςϜΛݕࡧ") .build(); ! NotificationCompat.Action action
= new NotificationCompat.Action.Builder( R.drawable.ic_big_search, “ηʔϧΞΠςϜΛݕࡧ”, contentIntent) .addRemoteInput(remoteInput) .build(); ! wearableExtender.addAction(action); ΧʔυͷՃͱԻೖྗ w 3FNPUF*OQVUͰԻೖྗΛѻ͏͜ͱ͕Ͱ͖ͯɺ BEE"DUJPOͰΧʔυͷՃΛߦ͏͜ͱ͕Ͱ͖Δ
ΧʔυͷՃͱԻೖྗ
J20/ͷ8FBS։ൃͷల w ʹ"OESPJE8FBS"QQΛϦϦʔε͠·͢ʢ͍ͨ͠ʣ w ఆ͍ͯ͠ΔϢʔεέʔεۭ͖࣌ؒͰͷμϥݟ ίʔσΛଟ͘ݟͤΔΈΛఏڙ 'BODZΑΓ
J20/"OESPJEͷల w ͔ΒλϒϨοτϑΝʔετͷ։ൃʹγϑτ ͦͯ͠ւ֎ల։ w λϒϨοτத৺ͰΞϓϦΛ࠶ઃܭ εϚʔτϑΥϯɺ8FBSBCMFͷ00ڧԽ
·ͱΊ w "OESPJE8FBSରԠ͢ΔͳΒɺ·ͣ/PUJpDBUJPO Λ࠷దԽ গ͠ͷվमͰѹతʹྑ͘ͳΓ·͢ w ͦͷޙʹ8FBSΞϓϦ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠