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
Biz職でもDifyでできる! 「触らないAIワークフロー」を実現する方法
igarashikana
3
1.9k
Introduction to Bill One Development Engineer
sansan33
PRO
0
300
ソフトウェアエンジニアの生成AI活用と、これから
lycorptech_jp
PRO
0
830
AI AgentをLangflowでサクッと作って、1日働かせてみた!
yano13
1
130
Claude Codeを駆使した初めてのiOSアプリ開発 ~ゼロから3週間でグローバルハッカソンで入賞するまで~
oikon48
10
5.4k
個人でデジタル庁の デザインシステムをVue.jsで 作っている話
nishiharatsubasa
2
3.5k
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
8.9k
事業開発におけるDify活用事例
kentarofujii
5
1.3k
[OCI Skill Mapping] AWSユーザーのためのOCI – IaaS編(Compute/Storage/Networking) (2025年10月8日開催)
oracle4engineer
PRO
1
180
Digitization部 紹介資料
sansan33
PRO
1
5.6k
AWS UG Grantでグローバル20名に選出されてre:Inventに行く話と、マルチクラウドセキュリティの教科書を執筆した話 / The Story of Being Selected for the AWS UG Grant to Attending re:Invent, and Writing a Multi-Cloud Security Textbook
yuj1osm
1
130
From Natural Language to K8s Operations: The MCP Architecture and Practice of kubectl-ai
appleboy
0
110
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Code Reviewing Like a Champion
maltzj
526
40k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
Why Our Code Smells
bkeepers
PRO
340
57k
Balancing Empowerment & Direction
lara
5
700
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
190
55k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
115
20k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
It's Worth the Effort
3n
187
28k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Writing Fast Ruby
sferik
629
62k
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ΞϓϦ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠