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
Webアプリケーションにオブザーバビリティを実装するRust入門ガイド
nwiizo
7
890
20250910_障害注入から効率的復旧へ_カオスエンジニアリング_生成AIで考えるAWS障害対応.pdf
sh_fk2
3
280
人工衛星のファームウェアをRustで書く理由
koba789
15
8.3k
Claude Code でアプリ開発をオートパイロットにするためのTips集 Zennの場合 / Claude Code Tips in Zenn
wadayusuke
5
1.8k
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
260
Snowflake×dbtを用いたテレシーのデータ基盤のこれまでとこれから
sagara
0
120
スクラムガイドに載っていないスクラムのはじめかた - チームでスクラムをはじめるときに知っておきたい勘所を集めてみました! - / How to start Scrum that is not written in the Scrum Guide 2nd
takaking22
2
200
slog.Handlerのよくある実装ミス
sakiengineer
4
480
バイブスに「型」を!Kent Beckに学ぶ、AI時代のテスト駆動開発
amixedcolor
2
590
Codeful Serverless / 一人運用でもやり抜く力
_kensh
7
450
2つのフロントエンドと状態管理
mixi_engineers
PRO
3
160
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.3k
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Code Reviewing Like a Champion
maltzj
525
40k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Building Applications with DynamoDB
mza
96
6.6k
Become a Pro
speakerdeck
PRO
29
5.5k
Six Lessons from altMBA
skipperchong
28
4k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
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ΞϓϦ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠