Top Banner
※※ 注意 ※※ Android Wear についてのムダな話をします。 30分間ムダな話にお付き合いください。 いやなら聞かなくていいんだよ?
57

Android Wear のムダ知識

Jun 21, 2015

Download

Documents

Satoshi Noda
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Android Wear のムダ知識

※※ 注意 ※※

Android Wear についてのムダな話をします。

30分間ムダな話にお付き合いください。

いやなら聞かなくていいんだよ?

Page 2: Android Wear のムダ知識

Android Wear のムダ知識

日本Androidの会 神戸支部野田悟志

Page 3: Android Wear のムダ知識

ムダな話 その1

名前:

 野田悟志

 @scarviz ←実はもう使ってない

所属:

 日本Androidの会 神戸支部 ←実はまだあった

 GDG神戸←実はあった

Page 4: Android Wear のムダ知識

OK! Google!

Page 5: Android Wear のムダ知識
Page 6: Android Wear のムダ知識
Page 7: Android Wear のムダ知識
Page 8: Android Wear のムダ知識

忘れてませんか?

Page 9: Android Wear のムダ知識
Page 10: Android Wear のムダ知識

…何が違うの?

Page 11: Android Wear のムダ知識
Page 12: Android Wear のムダ知識

なんとかせねば!

Page 13: Android Wear のムダ知識

'Difficult meeting' by Simon Blackley.CC BY-ND 2.0 http://goo.gl/Oh1LWu

Page 14: Android Wear のムダ知識

MediaRecorder

Page 15: Android Wear のムダ知識
Page 16: Android Wear のムダ知識

Mediarecorderstart failed -2147483648って超やる気のない例外…

Page 17: Android Wear のムダ知識

↑こんなのとか↑こんなのとか

Page 18: Android Wear のムダ知識

AV

Page 19: Android Wear のムダ知識

VideoView

Page 20: Android Wear のムダ知識
Page 21: Android Wear のムダ知識

VideoView(とMediaPlayer)Error: 1,-2147483648

MP4(H.264AVC)と3GPP(H.263)サイズは280×280に収まるようにリサイズ済み

Page 22: Android Wear のムダ知識

Media関連は呼べるけど

ダメっぽい…

Page 23: Android Wear のムダ知識

http://developer.android.com/intl/ja/training/wearables/apps/index.html

Page 24: Android Wear のムダ知識

Bluetoothで自由に

通信できる!

Page 25: Android Wear のムダ知識

Bluetooth機器を検出してみる

Page 26: Android Wear のムダ知識

これはBTヘッドホン→

Page 27: Android Wear のムダ知識

AndroidWearを検出させる

Page 28: Android Wear のムダ知識
Page 29: Android Wear のムダ知識

ActivityNotFoundExceptionで落ちる

BluetoothAdapter.ACTION_REQUEST_DISCOVERABLEでIntent

投げてもダメっぽい。

Page 30: Android Wear のムダ知識

'Thinker @ U of L' by Angela http://goo.gl/isFoTCCC BY-NC-ND 2.0

Page 31: Android Wear のムダ知識

Bluetooth機器として検出されるかどうかは問題じゃない

Page 32: Android Wear のムダ知識

これで何がしたいかが

問題なんだ

Page 33: Android Wear のムダ知識

http://www.android.com/wear/

Page 34: Android Wear のムダ知識

Android4.0

Page 35: Android Wear のムダ知識

僕もみんなみたいに

「Notificationめっちゃ便利!」

って言ってみたいんだよ!

Page 36: Android Wear のムダ知識

AccessibilityServiceで拾う

Notification発生

BluetoothServiceで通信

↑まずはここ

Notificationを発生させる

Page 37: Android Wear のムダ知識

Bluetooth通信の流れ

BT接続する

Notification情報を送る

スマートフォンをWearが検出する

Page 38: Android Wear のムダ知識

BluetoothAdapter.ACTION_REQUEST_DISCOVERABLEでIntentを投げる

BluetoothSocket.getOutputStreamでNotification情報を書き込む

端末のアドレスからBluetoothAdapter.getRemoteDeviceで、BluetoothDeviceを取得し、createRfcommSocketToServiceRecordで通信できるようにする

IntentFilterとBroadcastReceiverを登録し、BluetoothAdapter.startDiscoveryメソッドで端末を見つける

BluetoothSocket.getInputStreamでNotification情報を読み込む

これらのBluetooth通信はServiceで行う

BluetoothAdapter.listenUsingRfcommWithServiceRecordでBluetoothServerSocketを取得し、acceptで接続を待ち受ける

Page 39: Android Wear のムダ知識

AccessibilityServiceで拾う

Notification発生

BluetoothServiceで通信

↑できた

Notificationを発生させる←つぎここ

Page 40: Android Wear のムダ知識

NotificationはAccessibilityServiceで拾う

とはいったものの…

Page 41: Android Wear のムダ知識

Notification情報がどういう形式でくるのか

全然わかんない

Page 42: Android Wear のムダ知識

欲しい情報

1. タイトル2. アイコン3. テキスト4. パッケージ名(グループ名にする)

Page 43: Android Wear のムダ知識

AccessibilityEvent.getParcelableDataから、RemoteViewでNotificationのレイアウト取得

ここからリソースIDにandroid.R.id.title指定タイトルを取得

1. タイトル

Page 44: Android Wear のムダ知識

タイトルと同じくNotificationのレイアウトから取得する

リソースIDにandroid.R.id.icon指定アイコンを取得

PackageManager.getApplicationIconでアプリアイコンの方が良さそう

2. アイコン

Page 45: Android Wear のムダ知識

AccessibilityEvent.getTextでテキストを取得

これはTickerに設定されている文字列

NotificationのレイアウトからリソースIDにandroid.R.id.textなどを指定しても空っぽ

3. テキスト

Page 46: Android Wear のムダ知識

AccessibilityEvent.getPackageNameでパッケージ名を取得

4. パッケージ名

Page 47: Android Wear のムダ知識

Notification以外にも色々飛んでくる

Page 48: Android Wear のムダ知識

accessibility_service.xmlを用意してandroid:accessibilityEventTypesに

"typeNotificationStateChanged"を設定

Page 49: Android Wear のムダ知識

GooglePlayストアの通知や、アップデート可能アプリからの通知は受け取る

それ以外のシステム(プリインストール)のものは無視する

if(!packageName.startsWith("com.android.vending")&& ((ai.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0)&& ((ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0)) {

// これらは無視する

}

aiはApplicationInfo(PackageManagerからApplicationInfoを取得)

Notificationの選別

Page 50: Android Wear のムダ知識

AccessibilityServiceで拾う

Notification発生

BluetoothServiceで通信

↑できた

Notificationを発生させる←できた

受け取った情報をNotification.Builder

に詰めるだけ ↓

Page 51: Android Wear のムダ知識

Notification.Builder notification = new Notification.Builder(this).setSmallIcon(R.drawable.ic_launcher).setContentTitle(notifyInfo.Title).setContentText(notifyInfo.Text).setGroup(notifyInfo.GroupName).setStyle(new Notification.BigPictureStyle()

.bigPicture(notifyInfo.Icon));

((NotificationManager) getSystemService(NOTIFICATION_SERVICE)).notify(GetNotifyId(), notification.build());

こんな感じ

←bigPictureに設定する

Page 52: Android Wear のムダ知識

Notificationを送ってみる

Page 53: Android Wear のムダ知識
Page 54: Android Wear のムダ知識

できた!!

Page 55: Android Wear のムダ知識

Android4.0以降とAndroidWearをBluetooth経由で通知するサンプル

https://github.com/scarviz/SampleBTNotification

Page 56: Android Wear のムダ知識
Page 57: Android Wear のムダ知識

ご清聴ありがとうございました!