目次
Android Wear
Device
Android Wear の腕時計型端末は、Android OS 4.4W (API Level 20) を搭載しており単体でアプリケーションが走ります。 ただし Bluetooth 4.0LE による他の端末との同期が必須で、ペアリングしないと何も出来ない仕組みになっています。
ここではペアリングした Android Smartphone/Tablet 端末を Mobile、Android Wear の腕時計型端末を Wearable と呼びます。
- Mobile 端末の役割
- インターネット接続
- 音声認識
- 各種通知の受信など
- アプリケーションのダウンロードとインストール
- セッティング
- システムやアプリケーションの設定は、Wearalbe ではなく Mobile 側で行います。
- ただしアプリの作り方に依存しています。
- Mobile でなければ設定できないアプリ
- Wearable , Mobile どちらからも設定できるアプリ
- Wearable だけで完結しているアプリ、など
- その他
明確な Host/Client の区別がないので、お互いの関係や使われ方はアプリケーションによってさまざまです。 反面、UI や使い方にも統一性がないといえるかもしれません。
SDK
SDK 及び開発環境は通常の Android と共通です。 ただしサンプルプログラムは Android Studio が用いられており、Eclipse + ADT でのプロジェクト作成も失敗するため 現状では Android Studio が必要となります。
APK
- 基本的には Mobile 側のアプリと Wearable 側のアプリの両方が必要です。(単純な通知だけで済むアプリを除く)
Google Play にも Mobile アプリの形で掲載されるため、 Wearable だけで完結するアプリケーションでも何らかの Mobile 側のアプリケーションが必要となります。
Android Studio
debug
- USB 接続
- Bluetooth 経由
- Wi-Fi 経由 (すぐに切断されるので実用的でない)
Android Wear 端末の開発者向けオプションから ADB デバッグを有効にします。
- 設定を開く
- 端末情報の中のビルド番号を連続タップする。設定の中に「開発者向けオプション」が追加される
- 開発者向けオプションから「ADBデバッグ」を有効にします
USB 接続
充電用のクレードル経由で直接接続できます。 通常の Android 端末と同じです。
接続時に確認のダイアログが Smartphone/Tablet 側に表示されるので注意。- Android Wear 5.1.1 からは Android Wear 側に表示されます。
Bluetooth 経由
Smartphone/Tablet 経由で Bluetooth 接続します。 USB 接続できないデバイスでは必須となります。 またワイヤレス状態でデバッグできるので、腕に装着したままの動作確認、モーションセンサーを使ったアプリケーションのテスト等に便利です。
- Smartphone/Tablet を USB で PC に接続し、ADB デバッグ出来る状態にしておく
- Android Wear の開発者向けオプションから「Bluetooth 経由でデバッグ」を有効にする
- Smartphone/Tablet の Android Wear アプリから設定を開「Bluetooth経由のデバッグ」にチェックを入れる
- PC から下記の操作を行う
adb forward tcp:4444 localabstract:/adb-hub adb connect localhost:4444
Bluetooth デバッグは低速なので大きなアプリケーションの実行には時間がかかります。 Bluetooth デバッグ状態ではスリープに移行できないため、バッテリーを消費するので注意が必要です。
Wi-Fi 経由
Wi-Fi 経由での接続も一応可能ですが、Wi-Fi 接続はスリープですぐに切断されるためあまり実用的ではありません。
- 一旦 Bluetooth 経由で接続しておく
- adb -s localhost:4444 tcpip 5555
- adb connect IP-ADDRESS:5555
互換性について
Android Wear SoC
SoC | CPU core | core | GPU core |
---|---|---|---|
TI OMAP 3630 | Cortex-A8 1.0GHz | 1 | PowerVR SGX530 |
Snapdragon 400 | Cortex-A7 1.2GHz | 1-4 | Adreno 305 |
Snapdragon Wear 2100 | Cortex-A7 1.2GHz | 1-4 | Adreno 304 |
Atom | Atom 1.6GHz | 2-? | ? |
Moto 360 の互換性に注意
- 現状 Android Wear device は採用 SoC が 2種類
Moto 360 | TI OMAP 3630 |
Moto 360 以外 | Qualcomm Snapdragon 400 |
Moto 360 だけハードウエアが特殊
- SoC が違う
- CPU, GPU 共に仕様の違いあり
- 遅い、UI の反応から低速 (Moto 360 と LG G Watch を比べてみると、Moto 360 があまりに遅くて驚きます)
- タッチパネルの精度が異なる
- 画面の下部が切り取られている
Moto 360 はおそらく MotoActive の既存のハードウエア設計を流用したのではないかと思われます。
SoC が違う
- Moto 360 の CPU が遅い (Cortex-A8 Single core)
- 整数演算は同等 (ただし 1 core しかない)
- FPU の速度が激遅、浮動小数点演算が遅い
- ただし NEON だけは速い
device | CPU core | FPU (VFP) 浮動小数点演算 | SIMD (NEON) |
---|---|---|---|
Moto 360 | Cortex-A8 | 激遅 Cortex-A7 の 1/5~1/10 | 高速 (Cortex-A7 の 2倍) |
Moto 360 以外 | Cortex-A7 | 一般的な速度 | 遅い。FPU と変わらず SIMD の利点なし |
- Moto 360 の GPU は仕様が古くて遅い
- OpenGL ES 2.0 のみ
device | GPU core | API | |
---|---|---|---|
Moto 360 | PowerVR SGX 530 | OpenGL ES 2.0 | iPhone 3GS 世代の下位 GPU |
Moto 360 以外 | Adreno 305 | OpenGL ES 3.0 | ShaderCore (sp) 数は少ないが新しい GPU core |
タッチパネルの精度が異なる
- Moto 360 のタッチパネルは精度 (解像度?) が低い
- アクションゲームでスムーズな動きにならない場合があります。
画面下部が切り取られている
- Moto 360 の画面サイズは 320×290 の横長で正方形ではない
- 横長なので Moto 360 だけ Landscape 扱い、Moto 360 以外は Portrait
- API 上は仮想的に 320×320 のスクリーンに見せかけている
- OpenGL 上は Viewport (0,-30,320,320) を設定
- 詳しくは 「 Android Wear 5.0 Watch Face API 対応と互換性 」を参照
Display size
Display サイズを取得する場合も注意が必要。下記の方法だと 320×290 が返る。
Display disp= getWindowManager().getDefaultDisplay(); int width= disp.getWidth(); int height= disp.getHeight();
下記だと 320×320
View view= getWindow().getDecorView(); int width= view.getWidth(); int height= view.getHeight();
Android Wear Devices
Device (Rectangle) | SoC | CPU core | ISA | FPU | GPU | OpenGL | RAM | Screen | Round | Orientation | GL Viewport | USB debug | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LG G Watch LG-W100 | Snapdragon 400 MSM8226 | ARM Cortex-A7 0.8GHz | 1/4 | ARMv7A | VFPv4+NEON | Adreno 305 | ES 3.0 | 512MB | 280×280 | Portrait | (0,0,280,280) | Y | |
Samsung Galaxy Gear Live | Snapdragon 400 | ARM Cortex-A7 1.2GHz? | ?/4 | ARMv7A | VFPv4+NEON | Adreno 305 | ES 3.0 | 512MB | 320×320 | Portrait | (0,0,320,320) | ||
Sony SmartWatch 3 SWR50 | Snapdragon 400? | ARM Cortex-A7 1.2GHz? | 2/4 | ARMv7A | VFPv4+NEON | Adreno 305? | ES 3.0? | 512MB | 320×320 | Portrait | (0,0,320,320) | Y | |
ASUS ZenWatch WI500Q | Snapdragon 400 | ARM Cortex-A7 | ?/4 | ARMv7A | VFPv4+NEON | Adreno 305 | ES 3.0 | 512MB | 320×320 | Portrait | (0,0,320,320) | ||
Device (Round Style) | SoC | CPU core | ISA | FPU | GPU | OpenGL | RAM | Screen | Round | Orientation | GL Viewport | USB debug | |
Motorola Moto 360 | TI OMAP 3630 | ARM Cortex-A8 1.0GHz | 1/1 | ARMv7A | VFPv3+NEON | PowerVR SGX530 | ES 2.0 | 512MB | 320×290 | Y | Landscape | (0,-30,320,320) | N |
LG G Watch R LG-W110 | Snapdragon 400 | ARM Cortex-A7 1.2GHz? | ?/4 | ARMv7A | VFPv4+NEON | Adreno 305 | ES 3.0 | 512MB | 320×320 | Y | Portrait | (0,0,320,320) | |
LG G Watch Urbano | Snapdragon 400 | ARM Cortex-A7 1.2GHz? | ?/4 | ARMv7A | VFPv4+NEON | Adreno 305 | ES 3.0 | 512MB | 320×320 | Y | Portrait | (0,0,320,320) | |
Huawei Watch | Snapdragon 400 APQ8026 | ARM Cortex-A7 1.2GHz | ?/4 | ARMv7A | VFPv4+NEON | Adreno 305 | ES 3.0 | 512MB | 400×400 | Y | Portrait | (0,0,400,400) |