Notificationで通知しよう 
ThreeColors 
赤井忠昭
自己紹介 
• 赤井忠昭(@akai_t)! 
• Androidに興味をもったためにThree Colorsという屋 
号で独立! 
• 元はWeb系のエンジニア(PHPを得意としていた)! 
• Androidは2009年から少しずつやりは...
AndroidWearの基本的な仕組み 
• Android 4.3以上の端末と接続が可能! 
• 端末のAndroid Wearアプリを利用して接続! 
• 実際の接続はBluetooth(接続時にペアリングが必要) 
Bluetooth接続
Android Wear通知概要 
• Android端末のNotificationをAndroidWearに表示! 
• AndroidWearのタップ、スワイプ、音声による入力 
をAndroid端末に表示 
Notificationを通知...
Notification表示の仕組み 
Android Wearアプリで 
NotificationListenerServiceを利用して 
Notificationの情報を取得 
Notificationで表示できる情報は 
Android...
Android のNotification 
1.Content title 
2.Large icon 
3.Content text 
4.Content info 
5.Small icon 
6.Time that the notifi...
Android のNotification 
NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
builder.setSmallIcon(an...
Android のNotification 
NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
builder.setSmallIcon(an...
Android のNotification Style 
Big picture style 
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);...
Android のNotification Style 
Big text style 
NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
b...
Android のNotification Style 
Inbox style 
NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
buil...
Android のNotification 
Intent の発行とAction追加 
Intent viewIntent = new Intent(this, MyActivity.class); 
PendingIntent viewPen...
Android のNotification 
Intent の発行とAction追加
Notificationまとめ 
• 通常のNotificationと変わらない作りでAndroidWearに 
表示が可能 
NotificationCompat.Builder builder = new NotificationCompa...
AndroidWearを意識する設定 
• AndroidWearに表示しない! 
• AndroidWearのみ表示する! 
• AndroidWearのみで行うAction! 
• 音声返信! 
• 選択返信! 
• Pages! 
• S...
AndroidWearに表示しない通知 
• setLocalOnlyにtrueをセットする 
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);...
AndroidWearのみに通知を表示 
• setGroupでグループ指定をする 
NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
bui...
通知の組み合わせ 
// 携帯側通知 
NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
builder.setSmallIcon(R.dra...
本来のGroupの利用方法 
• Stacking Notifications
本来のGroupの利用方法
WearableExtenderの利用 
• NotificationCompat.WearableExtenderを利用することで 
AndroidWear用に色々と拡張が可能 
• Group以外はこのWearableExtenderを利用...
WearableExtenderの利用 
• Android WearのみのAction
WearableExtenderの利用
WearableExtenderの利用 
• 音声返信
WearableExtenderの利用
WearableExtenderの利用 
• 音声返信の受け取り
WearableExtenderの利用 
• 音声 or 選択返信 
strings.xml
WearableExtenderの利用 
• Pages
WearableExtenderの利用
まとめ 
• 通知をメインとするAndroidWearはNotificationを作 
成するだけで通知されるので特別な対応は必要ない! 
• しかしAndroidWearを意識しないとAndroidWear側 
で思わぬ表示になることがある!...
ご清聴ありがとうございました 
ThreeColors 赤井 忠昭 
@akai_t
Upcoming SlideShare
Loading in...5
×

AndroidWear勉強会

1,869

Published on

大阪で2014/8/30に行われたAndroidWear勉強会の資料です。
Notification周りについて発表しました

Published in: Software

Transcript of "AndroidWear勉強会"

  1. 1. Notificationで通知しよう ThreeColors 赤井忠昭
  2. 2. 自己紹介 • 赤井忠昭(@akai_t)! • Androidに興味をもったためにThree Colorsという屋 号で独立! • 元はWeb系のエンジニア(PHPを得意としていた)! • Androidは2009年から少しずつやりはじめていて、 2010年にはじめてのアプリを公開! • Androidのために独立したが、現在は仕事で Androidアプリケーション開発は少なめ
  3. 3. AndroidWearの基本的な仕組み • Android 4.3以上の端末と接続が可能! • 端末のAndroid Wearアプリを利用して接続! • 実際の接続はBluetooth(接続時にペアリングが必要) Bluetooth接続
  4. 4. Android Wear通知概要 • Android端末のNotificationをAndroidWearに表示! • AndroidWearのタップ、スワイプ、音声による入力 をAndroid端末に表示 Notificationを通知 入力を通知
  5. 5. Notification表示の仕組み Android Wearアプリで NotificationListenerServiceを利用して Notificationの情報を取得 Notificationで表示できる情報は AndroidWearで表示できるものが多い
  6. 6. Android のNotification 1.Content title 2.Large icon 3.Content text 4.Content info 5.Small icon 6.Time that the notification was issued. 7.the details area. Big picture style Big text style Inbox style
  7. 7. Android のNotification NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(android.R.drawable.ic_menu_info_details ); builder.setContentTitle("ContentTitle"); builder.setContentText("ContentText"); builder.setContentInfo("info"); builder.setLargeIcon(BitmapFactory.decodeResource( getResources(), R.drawable.ic_launcher)); builder.setWhen(System.currentTimeMillis()); ! NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(1, builder.build());
  8. 8. Android のNotification NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(android.R.drawable.ic_menu_info_details ); builder.setContentTitle("ContentTitle"); builder.setContentText("ContentText"); builder.setContentInfo("info"); builder.setWhen(System.currentTimeMillis()); ! NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(1, builder.build());
  9. 9. Android のNotification Style Big picture style NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(android.R.drawable.ic_menu_info_details ); builder.setContentTitle("ContentTitle"); builder.setContentText("ContentText"); builder.setContentInfo("info"); builder.setStyle(new NotificationCompat .BigPictureStyle() .setBigContentTitle("BigContentTitle") .bigPicture(BitmapFactory.decodeResource( getResources(), R.drawable.sea)) .setSummaryText("summary")); ! NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(1, builder.build());
  10. 10. Android のNotification Style Big text style NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(android.R.drawable.ic_menu_info_details ); builder.setContentTitle("ContentTitle"); builder.setContentText("ContentText"); builder.setContentInfo("info"); builder.setStyle(new NotificationCompat .BigTextStyle() .setBigContentTitle("BigContentTitle") .bigText(“テストテスト ~(略)~ テストテスト”) .setSummaryText("summary")); ! NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(1, builder.build());
  11. 11. Android のNotification Style Inbox style NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(android.R.drawable.ic_menu_info_details ); builder.setContentTitle("ContentTitle"); builder.setContentText("ContentText"); builder.setContentInfo("info"); builder.setStyle(new NotificationCompat .InboxStyle() .setBigContentTitle("BigContentTitle") .addLine("Line 1") .addLine("Line 2") .setSummaryText("summary")); ! NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(1, builder.build());
  12. 12. Android のNotification Intent の発行とAction追加 Intent viewIntent = new Intent(this, MyActivity.class); PendingIntent viewPendingIntent = PendingIntent.getActivity(this,0,viewIntent,0); ! Intent mapIntent = new Intent(Intent.ACTION_VIEW); Uri geoUri = Uri.parse("geo:0,0?q=" + Uri.encode("大阪")); mapIntent.setData(geoUri); PendingIntent mapPendingIntent = PendingIntent.getActivity(this,0,mapIntent,0); ! builder = new NotificationCompat.Builder(this); builder.setSmallIcon(R.drawable.ic_launcher); builder.setContentTitle("ContentTitle"); builder.setContentText("ContentText"); builder.setContentIntent(viewPendingIntent); builder.addAction(android.R.drawable.ic_menu_mapmode, "map",mapPendingIntent);
  13. 13. Android のNotification Intent の発行とAction追加
  14. 14. Notificationまとめ • 通常のNotificationと変わらない作りでAndroidWearに 表示が可能 NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(R.drawable.ic_launcher ); builder.setContentTitle("ContentTitle"); builder.setContentText("ContentText"); ! NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(1, builder.build()); • AndroidWearを意識しないとAndroidWear側が予期せ ぬデザインになり得る setLargeIconによる背景表示 Actionアイコンがぼやける
  15. 15. AndroidWearを意識する設定 • AndroidWearに表示しない! • AndroidWearのみ表示する! • AndroidWearのみで行うAction! • 音声返信! • 選択返信! • Pages! • Stacking Notifications
  16. 16. AndroidWearに表示しない通知 • setLocalOnlyにtrueをセットする NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(R.drawable.ic_launcher ); builder.setContentTitle("ContentTitle"); builder.setContentText("ContentText"); builder.setLocalOnly(true); ! NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(1, builder.build()); • setOngoingにtrueをセットする NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(R.drawable.ic_launcher ); builder.setContentTitle("ContentTitle"); builder.setContentText("ContentText"); builder.setOngoing(true); ! NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(1, builder.build());
  17. 17. AndroidWearのみに通知を表示 • setGroupでグループ指定をする NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(R.drawable.ic_launcher ); builder.setContentTitle("ContentTitle"); builder.setContentText("ContentText"); builder.setGroup(getString(R.string.app_name)); ! NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(1, builder.build());
  18. 18. 通知の組み合わせ // 携帯側通知 NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(R.drawable.ic_launcher ); builder.setOngoing(true); builder.setContentTitle("ContentTitle"); builder.setContentText("ContentText"); ! //AndroidWear側通知 NotificationCompat.Builder wearBuilder = new NotificationCompat.Builder(this); wearBuilder.setSmallIcon(R.drawable.ic_launcher ); wearBuilder.setContentTitle(“Wear ContentTitle"); wearBuilder.setContentText("Wear ContentText"); wearBuilder.setGroup(getString(R.string.app_name)); ! NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(1, builder.build()); notificationManager.notify(2, wearBuilder.build());
  19. 19. 本来のGroupの利用方法 • Stacking Notifications
  20. 20. 本来のGroupの利用方法
  21. 21. WearableExtenderの利用 • NotificationCompat.WearableExtenderを利用することで AndroidWear用に色々と拡張が可能 • Group以外はこのWearableExtenderを利用する
  22. 22. WearableExtenderの利用 • Android WearのみのAction
  23. 23. WearableExtenderの利用
  24. 24. WearableExtenderの利用 • 音声返信
  25. 25. WearableExtenderの利用
  26. 26. WearableExtenderの利用 • 音声返信の受け取り
  27. 27. WearableExtenderの利用 • 音声 or 選択返信 strings.xml
  28. 28. WearableExtenderの利用 • Pages
  29. 29. WearableExtenderの利用
  30. 30. まとめ • 通知をメインとするAndroidWearはNotificationを作 成するだけで通知されるので特別な対応は必要ない! • しかしAndroidWearを意識しないとAndroidWear側 で思わぬ表示になることがある! • 拡張はすごく簡単なのでNotificationを作成するとき はAndroidWearを意識した作りにすること
  31. 31. ご清聴ありがとうございました ThreeColors 赤井 忠昭 @akai_t
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×