少々時間が空いてしまいましたが、手持ち端末のアップデート状況などをまとめてみます。

● Android Wear と Version 一覧

Android Wear は何度か UI の大きな変更が行われています。当初は Android 自体のバージョンと連動していましたが、5.0 以降は Android Wear のみのバージョンが併記されるようになりました。下記はわかっている範囲でのこれまでの Android Wear のバージョン一覧です。

Version API 新機能(一部)
Android Wear 4.4W 20
Android Wear 4.4W.2 20 Offline Music Player
Android 5.0 + Android Wear 1.0 21 Custom Watch Face
Android 5.1 + Android Wear 1.1 22 AppMenu, Wi-Fi
Android 5.1 + Android Wear 1.3 22 Interactive Watch face, iOS

2015年11月段階での最新版は Android 5.1 + Adnroid Wear 1.3 になります。Interactive Watch Face に対応したため再び Home Menu の UI が変更されています。Watch Face のタッチだけではメニュー画面にならず、画面の右端からスワイプで呼び出すようになっています。


● 複数デバイス対応とデバッグ

どのバージョンで対応したのか不明ですが、一つの端末に複数の Android Wear Device をペアリングできるようになりました。

例えば同じ Nexus 5 に LG G Watch と Moto 360 の 2台の Android Wear 端末をぶら下げることが可能。通知は両方に届きますし、片方を Wi-Fi 接続に設定しておけば Nexus 5 本体の近くになくても通知を受け取ることができます。便利かどうかはわかりませんが、持ち歩くのは腕に1台、デスクサイドに固定で 1台といった使い分けもできるかもしれません。

Android Wear の通信(同期)は基本的に 2つの仕組みが用いられています。

・メッセージの送受信
・アプリごとの共有ストレージの同期

初期のマニュアルに従った作りでは列挙されたデバイスを区別していないので、すべての端末に同じように同期が行われます。たとえば 3D imclock の場合、スマートフォン側のコンパニオンアプリによる設定が両方の端末に同時に反映されることが確認できます。

複数のデイバスに対応したことでアプリ開発中の動作確認が少々楽になりました。以前はペアリングするために Android Wear 端末と同じ数だけスマートフォンやタブレットが必要でした。なお複数台接続した場合、Bluetooth 経由のデバッグは同時には行えずどちらか片方だけ選ぶ形になるようです。


● 3番目のアーキテクチャ

Android Wear デバイスに新しい SoC 搭載機種が登場しています。これまで Moto 360 (初代) 以外の Android Wear 端末はすべて Snapdragon 400 が用いられていました。CPU Clock や有効な CPU core の個数に違いはあるものの中身は同一です。

Moto 360 (初代) だけは Motorola MOTOACTV の流れを汲む設計となっており TI OMAP3630 が使われています。OMAP3 は世代が古いため性能上の問題が生じる場合があり、アプリケーションの互換性のためにこれまで何度か苦労させられてきました。

最近発表された TAG Heuer Connected は Intel のプロセッサが内蔵されているとのこと。詳細は不明ですが、OMAP3, Snapdragon 400 に続く Android Wear デバイス 3番目のアーキテクチャになります。ARMv7A でも動作しますが、バッテリー効率を考えると NDK を使う場合できるだけ x86 にも対応しておくことが望ましいと思われます。


関連ページ
Smart Watch Spec 一覧
Android Wear OS 一覧

関連エントリ
Android Wear 5.1.1 3D-imclock の更新と Moto 360
Android Wear 5.1.1 は Wi-Fi による同期に対応、Apple Watch との違い
Android Wear 5.0 Watch Face API 対応と互換性


Moto 360 を 5.1.1 に更新すると描画位置がずれるらしいので 3D-imclock を修正しました。
あまりきちんと調べていませんが、画面の仕様が変わっているようです。

3D imclock for Android Wear
Google Play: 3D imclock for Android Wear

Moto 360 では、以前は 320x290 のスクリーンに対して OpenGL の Viewport Y に -30 の offset が入っていました。
Android Wear 5.1.1 からは 320x320 のバッファ扱いとなっており、Viewport の offset が無くなっているものと思われます。(この問題について書いた以前の記事は こちら )

Moto360                     Viewport
-------------------------------------------
Android 5.0      320x290    (0,-30,320,320)
Android 5.1.1    320x320    (0,0,320,320)


関連エントリ
Android Wear 5.0 Watch Face API 対応と互換性
Android Wear 3D のアナログ時計 (Watch Face)
Android Wear にゲームを移植


Android Wear 5.1.1 は Wi-Fi 接続に対応しました。
利用できるのは Wi-Fi 機能を搭載したデバイスのみに限られますが、インターネットを経由した同期を行うことが可能です。

                        Bluetooth   Wi-Fi
-------------------------------------------------------------
Android Wear 4.4W~5.0  直接同期    --
Android Wear 5.1.1      直接同期    Internet 接続、Cloud 同期
Apple Watch             直接同期    LAN 経由同期 (P2P)

Apple Watch も Wi-Fi 接続を併用していますが Wi-Fi の使い方が異なります。


● Apple Watch の場合

Bluetooth の補佐として用いられているようです。
接続は自動化されており iPhone 側の設定を引き継ぎます。
そのため Watch 側には特に Wi-Fi の設定はありません。

iPhone と同じ Wi-Fi ルータを利用して LAN 内で直接転送が行われます。
あくまで iPhone と Watch 間の通信に用いられており、Apple Watch が直接インターネットに接続することは無いようです。

Apple: Apple Watch の Bluetooth と Wi-Fi について


● Android Wear の場合

Android Wear 側に独立した Wi-Fi の設定があります。
予め Wi-Fi の設定しておけば、Android Wear デバイスが直接 Internet への接続を行うことができます。実際に Google Map アプリでは、Bluetooth 接続が切れていても地図データを読み進めることができました。

さらに「クラウド同期」を有効にしておくと、スマートフォンやタブレットとの通信(同期)もインターネット経由で行うことが可能です。

有効にする方法
 1. Smartphone/Tablet 側のコンパニオンアプリ "Android Wear" の設定を開く
 2. クラウド同期を ON にする

Android Wear の場合は Apple Watch と違って同一のネットワーク (LAN) に接続しておく必要がありません。バッテリー消費を考えなければ、ペアリングしたスマートフォンやタブレットは家に置いたままで、Android Wear とモバイルルータだけ持ち歩くこともできるわけです。

通知などのメッセージが届くのはもちろん、設定などコンパニオンアプリを伴うものでもクラウド経由できちんと設定変更が反映されます。


関連ページ
Smart Watch 一覧

関連エントリ
Apple Watch のバッテリーと Android Wear 5.1
Apple Watch を使ってみた, Android Wear との比較など
Android Wear 単体で音楽再生を行うアプリ (2)
Android Wear 3D のアナログ時計 (Watch Face)
Android Wear の 3D 描画 と NDK r10
Android Wear にゲームを移植


NexusPlayer は Chromecast と同様の使い方もできます。
PC (Chrome) やスマートフォン・タブレットからストリーム系アプリの
コントロールをしたり、画面を転送することが可能です。

Chromecast に関しての以前の記事はこちら
Chromecast で C++ アプリを走らせる。Emscripten のゲームを動かす

Chromecast と違い Android TV は Wi-Fi 設定など本体で操作可能で
IP アドレスの確認も自分でできます。
そのためか Chromecast のようなセットアップアプリは不要で、
ネットに繋がればすぐに cast 可能な状態になっているようです。

USB で直接 PC と接続できるため、Cast アプリのデバッグもしやすくなっています。
自前の Custom Receiver を走らせるための手順は下記の通り。

1. Google Cast SDK の Developer 登録を行う。
 ・Google Cast SDK Developer Console

2. Nexus Player のシリアルナンバーを Developer Console に登録
 ・設定→端末情報→シリアル番号 で確認可能
 ・登録後 15分待つ必要あり

3. Google Cast の Developer Mode を有効にする
 ・設定→Google Cast→デベロッパーサポート を「はい」に変更
 ・ここで一旦再起動する

4. Developer Console で Application ID を作成
 ・任意のアプリケーション URL を登録して Application ID と関連付ける

5. Application ID を自分の sender App に埋め込む

Android Application 同様 adb 接続で logcat の確認ができますし、
Chromecast 同様 PC の Chrome Browser で Inspect の表示ができます。

Chromcast よりもずっとプロセッサのパワーがあるため、
以前作成した ChiRaKS も十分な速度で動くようになっています。
Chromecast と互換性がなくなってしまうので仕方ないのかもしれませんが
WebGL は動きませんでした。


関連エントリ
Nexus Player を GamePad&Mouse で使う、他
Chromecast で C++ アプリを走らせる。Emscripten のゲームを動かす


Google の Android TV 端末、Nexus Player を使ってみました。
UI は一般の Android とは大きく異なり TV を意識したもの。
操作は付属のリモコンを使うので Apple TV に似ています。

Google Nexus Player

大きく異なっているのは単体でアプリが動作することで、Google Play Store からダウンロードできます。
ただし専用&対応アプリしか出てこないらしく検索してもタイトルは多くありません。
HOME に並んでるものもゲームとムービー等のコンテンツのみで実用系アプリは無し。
Chrome や GMail なども無く、検索でもこの辺りのアプリが見当たりませんでした。

micro USB 端子があるので PC につなげば adb 接続できます。
開発者メニューを有効にするには設定の端末情報から「 ビルド 」を何度も選択する必要あり。
USB 経由で install した場合は普通の Android アプリも動くようです。
ただし HOME 画面にはアイコンが表示されないため、実行には少々手間がかかります。

 1. 設定 → アプリ → ダウンロードしたアプリ
 2. 一覧から選択してから「開く」

HOME画面に表示させる場合は intent-filter の設定が必要です。

<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>

application に isGame="true" があるとアプリではなくゲーム側に分類されます。

<application android:isGame="true">

通常の Android アプリを走らせた場合タッチ操作はできませんが、
vfpbenchmark のように標準の UI を使ったものはリモコンだけで操作できました。
(vfp benchmark の結果はこちら)

また USB Host が有効なので、タッチ操作が必要なアプリでもマウスを繋げばそれなりに使用することが出来ます。
BACK や HOME ボタンはないので、マウスの場合もリモコンは必要になります。

同様に USB を使った接続では PS3 や Xbox360 (USB版) のゲームコントローラも使うことが出来ました。
この辺りも通常の Android 端末と同様です。
専用のゲームパッドがなくてもひと通りゲーム操作できます。
ただし USB 接続は adb と併用できないので、ゲーム開発にはワイヤレスのコントローラが欲しくなります。

下記追加しました

VFP Benchmark Log
CPU/GPU OpenGL ES Extension (Mobile GPU)

GPU は Intel HD Graphics ではなく Apple A7 世代と同じ PowerVR G6430 です。


関連エントリ
Android 5.0 Nexus Player x86 と対応 ABI
iOS7 対応 SteelSeries Stratus ワイヤレスゲームコントローラー
Android 用ゲームパッド BUFFALO Zeemote JS1 H
Android 3.1 と GamePad のイベントの詳細 (2)
Android 3.1 と GamePad のイベントコード


| 次のページ(日付が古い方向)>>