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を使うとうまくいく。

2014年12月18日木曜日

Android WearでBluetooth接続でのADBが認証できなくなった

Android Wearを初期化したらWear側のADBを有効化+Bluetooth経由のデバッグを有効化しても繋がらなくなる現象に悩んだのでメモ

症状

普段は以下のコマンドでhandheld側のアプリでホストとターゲットが接続中となる。

$ adb forward tcp:4444 localabstract:/adb-hub
$ adb connect localhost:4444

しかし、Wearを初期化したらあとでは、”adb devices”で確認すると以下な感じになった。(**は環境によって違う)

$ adb devices
List of devices attached
***********     device
localhost:4444  unauthorized

原因

初回接続時にはhandheld側に

「Wearのデバッグを許可しますか?」

といったタイトルのRSAキーのフィンガープリントを登録するダイアログが出ているハズなのだが、初期化前の段階で

「このパソコンからのUSBデバッグを常に許可する」

にチェックを入れてしまっていると、前の情報を覚えているようで全く許可出来る雰囲気が無い。なので、この情報を消してやる必要がある。

復活の呪文

自分は以下の手順で復活出来た。

  1. Android WearのBluetooth経由でのデバッグをOFF
  2. Android Wearの電源を切る
  3. 設定→アプリ→すべて→Google Play開発者サービス→データを全て消去
  4. 念のため、handheld側のAndroid wearアプリを削除→再インストール
  5. Android Wearを再起動
  6. handheldとwearを再接続
  7. 認証画面が来て(゚д゚)ウマー