2014年12月21日日曜日

Android Wearの設定アプリを探す

[AOSP](
https://android.googlesource.com/platform/packages/apps/Settings/+/android-wear-5.0.0_r1)のコードの中にあるSettingsを読んでみたけどもres/values-ja/string.xmlに「ウォッチフェイス」の文字列が無かったりと、Wear用の設定部分っぽいのが無かったので、どこか他に有るんじゃないかと思い探してみた。

logcatでパッケージ名のあたりを付ける

logcatを見ながら設定アプリを起動してみる。
そうすると下のログが出てきたので、パッケージ名はなんとなく分かった。

com.google.android.apps.wearable.settings/com.google.android.clockwork.settings.SettingsActivity

I/ActivityManager﹕ START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.google.android.apps.wearable.settings/com.google.android.clockwork.settings.SettingsActivity} from uid 10023 on display 0
1

ちなみに、Handheld(Xperia Z1)で設定アプリを起動した時のログは以下

I/ActivityManager﹕ START u0 {act=android.settings.SETTINGS flg=0x10000000 cmp=com.android.settings/.Settings} from pid 1360

wearとhandheldでパッケージ名が違います。
wearは com. google .android
handheldは com.android

なのでソースはなんか違う所に有るようです。
道理でAOSPに無いわけだ。

Android Wear側のアプリが動いていない状態でデータ同期

http://developer.android.com/samples/DataLayer/index.html

DataLayerのイベントを受け取るには、イベントのリスナを実装したActivityか、WearableListenerServiceを継承したServiceを作ればOK。

リスナを実装したActivityだとActivityが死んだらデータ同期が出来ないので、Handheld側で設定した値をWear側に送るとかがいい感じに出来ない。

WearableListenerServiceを継承したServiceを使うとうまくいく。