
キーの数を減らして長押しに割り当ててみました。
これなら押せます。(右側の文字は長押し)

メニューも出ます。

ヒストリやメモリー保存もあり。
・ちょっと電卓 ZW (Google Play) (2013/12/01追加)
関連エントリ
・Android SmartWatch SmartQ ZWatch (2)
・Android 4.1 SmartWatch SmartQ Z Watch

キーの数を減らして長押しに割り当ててみました。
これなら押せます。(右側の文字は長押し)

メニューも出ます。

ヒストリやメモリー保存もあり。
・ちょっと電卓 ZW (Google Play) (2013/12/01追加)
関連エントリ
・Android SmartWatch SmartQ ZWatch (2)
・Android 4.1 SmartWatch SmartQ Z Watch
大きさ (下:Z Watch、上:iPod nano 6G)

画面サイズ、解像度は同じです。1.54inch 240×240 (220dpi)
当時 iPod nano (6G) で動くアプリを作りたいと思っていました。
LiveView はレスポンスに難がありましたが、単独でアプリを走らせられる
SmartWatch ならいろいろ出来そうです。
SmartWatch は 2種類あります。
(1) サブモニタ型
・一般の Smartphone や Tablet のサブモニタとして利用する
・単体ではアプリケーションが動作せず Dumb Terminal に近い
・キー入力をサーバーに送り、画面出力だけ Bluetooth で受け取る
・もっと単純なものは特定の通知だけを受け取ることができる
(2) 単独動作可能
・一般の Smartphone や Tablet を小さくして腕時計形状にしたもの
・Android 等の OS がそのまま乗っておりアプリを走らせられる
・アプリを使って (1) のような使い方もできるが、データはローカルに蓄積される
(1画面ごとに通信するわけではない)
Sony の LiveView/MN2 系は (1) で、ZWatch は (2) に相当します。
Z Watch は右側面に電源ボタンと Back ボタンがあります。
Back ボタンは長押しで Home 相当。
左側はヘットホン端子のみで、USB&充電を兼ねています。
時計画面は Home の Widget に相当するようです。
デザインは切り替え可能。
普段はバックライトが消えていて時刻を確認できませんが、
腕のアクションで一時的に画面を点灯させることができます。
水平状態から手前に傾けるイメージ。
知らないうちに点灯してる場合結構あります。
角度をつけて机に置いた状態でも反応してしまうのが難点。
Home には他にも画面単位で Widget を追加できます。
アプリの追加や削除には PC が必要。(adb 接続方法はこちら)
Mac OS X でも adb でつながります。
adb shell では su 可能。
Android 4.1 + 1GHz single core CPU + RAM 512MB + ROM 4GB なので、
安価な Android 端末としては十分な性能。
ただし画面が小さいので、通常アプリは表示や操作に制限があります。
UI は専用に作らないと厳しいでしょう。
ソフトキーボードは入っていません。
マニュアルを読む限り、同期用に Android 端末を登録すれば
リモートキーボードとして使えるようです。
・AKIBA PC Hotline: SmartDevices(智器) Z Watch
・AKIBA PC Hotline: 中華な腕時計型デバイスがまた登場、Android 4.3ベースで1万5千円
設定の言語選択に日本語はありませんが、上記ページを見ると
日本語も表示されていることが確認できます。
公式サイトや上のページでは Android 4.3 と書かれていますが、
API Level は 16 を返します。つまり Android 4.1 相当。
ZWatch の JZ4775 は Paladin の JZ4770 と違い 3D GPU が搭載されていません。
OpenGL ES 2.0 を使ったアプリケーションは起動できませんでした。
↓レイアウトを調整してみました。使ってみるとこれでもまだボタンが小さく感じます。

SmartQ Z Watch を買ってみました。Android の SmartWatch です。
Bluetooth 経由の RemoteDisplay だった LiveView と違い、
単体で Android 4.1 が動作しています。

スペックによると中身は Ingenic JZ4775。
CPU は Xburst 1.0GHz で ainol Novo 7 Paladin と同じ mips です。
RAM も同じく 512MB。下記は ZWatch 実機より cpuinfo。
system type : s2122b processor : 0 cpu model : Ingenic Xburst V4.15 FPU V0.0 BogoMIPS : 812.64 wait instruction : yes microsecond timers : no tlb_entries : 32 extra interrupt vector : yes hardware watchpoint : yes, count: 1, address/irw mask: [0x0fff] microMIPS : no ASEs implemented : mxu shadow register sets : 1 kscratch registers : 0 core : 0 VCED exceptions : not available VCEI exceptions : not available Hardware : s2122b
基本的には他の SmartWatch と同じように、母艦となる Android Smartphone
と Bluetooth 同期する使い方が想定されているようです。
そのため内蔵のアプリケーションは最小限で設定項目もごくわずか。
アプリケーション管理も無いので、単独で Z Watch 側のアプリの
追加や削除を行う方法が見当たりませんでした。
USB 接続で MTP ストレージとして認識するのでアクセスは容易です。
内部ストレージに update.zip を転送して、
Settings から Firmware Upgrade を選ぶだけでファームウエアの更新が可能。
Firmware 1.9 に更新したところ FileManager が追加されており、
Z Watch 単独で内部のファイルを閲覧できるようになりました。
FileManager で apk を開くと一度ブロックされますが、
ここから提供元不明アプリのインストールを許可することが可能です。
(設定からは出来なかった)
また偶然 Settings → About の Model number を連打していたら
Usb debug を Enable に切り替えられることがわかりました。
再び連打すると Disable になります。
Driver は inf 書き換えで google のものを利用できます。
USB 接続で adb が使えるようになったので、任意アプリの
install / uninstall 方法が確保できたことになります。
画面が狭いだけで普通の Android Device と変わらないようです。
内部ストレージ (/sdcard) は 2GB、System ストレージ (/data) が
およそ 1GB (900MB free) となっています。
install したアプリアイコンもメニューに追加されており実行できます。
Eclipse から直接デバッグも可能。
下記画像は ADT (DDMS) からキャプチャ。

↑ Chot Calculator も画面が小さくキーが潰れてるが一応動作 (NDK使用)
母艦と同期するサブ画面的な用途ではなく、
単独でさまざまなアプリを入れて持ち歩ける超小型デバイスとしても
活用できるのではないかと思っています。
関連エントリ
・Android 4.0 MIPS で RenderScript, ainol Novo 7 Paladin の浮動小数点演算速度
・Android 4.0 ainol Novo 7 Paladin、MIPS CPU の NDK と Vivante GPU
・Android LiveView MN800 プラグインの作り方
・LiveView MN800 Android のマイクロディスプレイ
Android 用のゲームコントローラ Zeemote JS1 H を試してみました。
Zeemote の特徴は Bluetooth によるワイヤレス接続であることと、
通信に HID ではなく SPP を使うことです。
Bluetooth さえあれば Android 2.1 以降のほとんどの端末で使えるようです。
・BUFFALO Zeemote JS1 H (BSGPJS1)
見た目はヌンチャクのようですが非常に小さくモーションセンサーはありません。
アナログスティックx1 + デジタル 4ボタンのシンプルな構成です。
●3つのモード
Bluetooth の HID または SPP プロファイルで接続されています。
下記のように 3つの動作モードを持っています。
(A) ポインターモード HID マウスエミュレーション (B) キーボードモード HID キーボードエミュレーション (C) ジョイスティックモード SPP 専用のジョイスティックモード
電源投入時に押していたボタン (A)~(C) によってモードが決まります。
(A)/(B) は通常の Bluetooth 入力デバイスとして認識されるので、
HID に対応していれば Android に限らず使うことができます。
実際に Windows PC に接続して 3ボタンマウスの代わりに使えました。
キーボードモードではカーソルキーや Enter/ESC として利用できます。
Android の場合 HID 対応デバイスは限られているので、(A)/(B) のモードが
使えるかどうかは端末や OS のバージョン依存となります。
(C) のジョイスティックモードでつなぐには専用の SDK を利用した
Zeemote 対応アプリが必要です。
対応アプリケーションであれば (C) のモードでつながるので HID に
対応していない端末でも使用することができます。
●ペアリング
ペアリングを行う方法は二種類あります。
(1) Android の設定画面で自分でペアリングする
(2) “JS1 Quick Start Application” を使う (Android Market から入手)
基本的には Bluetooth の設定画面でペアリングできます。
固定キー 0000 を入力するだけです。
ただ試したところ、一部の端末では固定キーの入力ができないことが
あるようです。
HTC EVO 3D (ISW12HT) はペアリング時にキー入力画面になりませんでした。
このような場合 (2) の方法が使えます。
1. “JS1 Quick Start Application” を Android Market からダウンロードして
インストールする。
2. Zeemote をジョイスティックモードにする
(電源を切った状態で (C) を押しながら (D)ボタン長押しで電源を入れる)
3. “JS1 Quick Start Application” を起動する。
4.「JS1に接続する」を押す
5.「ペアリングを自動で行う」にチェックが入った状態で「接続」を押す
6. もしここでエラーが出たら Manual #3 に変更して接続する。
接続ができたらアプリを終了して構いません。
これでペアリング登録された状態になっています。
●対応アプリケーション
動作テストには上で説明した “JS1 Quick Start Application” 及び
R-TYPE Lite/R-TYPE を使いました。
色々試してみたところ、対応アプリケーション (Zeemote SDK) は
どうやら Bluetooth のペアリング情報を見て判別しているようです。
1. Bluetooth でペアリングされたデバイスを列挙する
2. “Zeemote JS1 H” が含まれていればデバイス選択画面を表示し接続を行う
また各アプリが起動後にあらためて Zeemote との再接続を行います。
例えばポインターモードで OS を操作していても、アプリ起動後の再接続を
行ったタイミングで (C) のジョイスティックモードに切り替わります。
●接続してみた端末
手持ちの端末をつないでみました。
(A)/(B) のポインター/キーボードモードが使えるかどうかは端末依存です。
(C) のジョイスティックモードはすべての機種で使うことができました。
Galaxy S2 (SC-02C) Android 2.3 EVO 3D (ISW12HT) Android 2.3 Desire (X06HT) Android 2.2 IDEOS Android 2.2 ICONIA TAB (A500) Android 3.2 Optimus Pad (L-06C) Android 3.1 LifeTouch NOTE (NA75W) Android 2.2
●Android 3.x HID と Zeemote
ICONIA TAB A500 Android 3.2 は (A) のポインターモードできちんと
つながります。
マウスカーソルが表示されてタッチの代わりに使えるだけでなく、
B ボタンがバックボタンになるので快適にリモート操作できました。
HDMI で大画面につないだ場合のリモコンとしても使えそうです。
Optimus Pad L-06C Android 3.1 は、マウスカーソルが出るものの
B ボタンがバックとして機能しませんでした。
端末依存なのか OS バージョンによる違いなのかはわかりません。
●ゲームで使った Zeemote
アナログスティックなので 3D 系のゲームに向いているかもしれません。
R-TYPE 等の 2D ゲームでデジタル方向キーの代わりに使った場合は
ストロークの深さが若干気になります。
完全に倒しこまなくても反応するため、ボタンを離したつもりでも
ニュートラルに戻すまでの間よけいに動いてしまうからです。
使っているうちに慣れてきて両手で操作したら微調整しやすくなりました。
外装はすべらないラバー状になっていますがゴミを吸いやすく
剥がれやすいのが気になりました。
●開発者から見た Zeemote
Android 3.1 以降の端末は USB のゲームコントローラに対応しています。
USB Host があれば Xbox360 や PS3 のコントローラをつなぐことが出来ました。
ただ問題もあります。
USB HOST と USB 端子兼用の端末が多く、開発時に USB ケーブルでデバッガを
繋いでいるとゲームコントローラを使うことができません。
そのため気に入っているのが ICONIA TAB A500 で、Micro USB 端子の他に
独立したフルサイズの USB HOST コネクタを備えているのでたいへん重宝しています。
Zeemote は Bluetooth 接続なのでこのような問題が起こりません。
デバッガをつないでいても使えるのは魅力的です。
関連エントリ
・Android 3.1 と GamePad のイベントの詳細 (2)
・Android 3.1 と GamePad のイベントコード
Canvas など Android の画面は CPU でレンダリングされています。
画面全体を常に書き換えているアプリは、解像度が上がるほど速度が
落ちていく可能性があります。
SurfaceView を使ったゲームアプリなど、スマートフォンではスムーズに
動いていたのに Tablet では極端に遅くなることがありました。
最近はスマートフォンの解像度も HD 化しており、Tablet と同じくらい
描画が負担になっていると考えられます。
大画面前提の Tablet 向け Android 3.x では 2.x と比べて色々と改良が
施されているようです。
その一つが 2D 描画のハードウェアアクセラレーションです。
使えるコマンドは限られますが Canvas のレンダリングも GPU による描画が
行われます。AndroidManifest.xml に android:hardwareAccelerated=”true”
を追加するだけです。
Optimus Pad L-06C (Tegra 250) Android 3.1 View(SW) 15.0fps 24x24 x 1600個 13.8Mpix/sec View(HW) 27.8fps 24x24 x 1600個 25.6Mpix/sec SurfaceView 16.3fps 24x24 x 1600個 15.0Mpix/sec GLSurfaceView 12.8fps 24x24 x 30000個 221.2Mpix/sec GLSurfaceView 20.6fps 12x12 x 50000個 148.3Mpix/sec
256×256 pixel のテクスチャ画像から 24×24 pixel を切り出して、
24×24 dot の小さい正方形として描画します。
これを 1600個、ばらばらに動かしています。
SurfaceView ではハードウエアアクセラレーションが有効とならなかったため
速度が逆転しています。HW が有効なら View + onDraw() の方が高速に
描画できています。
それでも OpenGL とは比較になりません。
GLSurfaceView は Java 上で OpenGL ES 2.0 を利用しています。
速すぎて 1600個では測定出来なかったため 30000個に増やしています。
当然かもしれませんがゲームは OpenGL を使った方がよさそうです。
以下 Android 2.3 との比較。
View(SW) View(HW) SurfaceView GLSurfaceView
OS x1600 x1600 x1600 x30000
------------------------------------------------------------------
OptimusPad A3.1 15.0fps 27.8fps 16.3fps 12.8fps
HTC EVO 3D A2.3 20.2fps -- 26.4fps 16.5fps
Galaxy S2 A2.3 31.8fps -- 44.8fps 28.1fps
今後登場する Android 4.0 (Ice Cream Sandwich) では、スマートフォンも
GPU による描画に対応します。
1280×720 など画面解像度が高い機種ほど 2.3→4.0 の差が大きいかもしれません。
Android 3.x には他にも RenderScript があります。
NDK + OpenGL ES の上位ライブラリに近く、機能が限られる代わりに
Java から容易に扱えるようになっています。
こちらも後ほど試してみたいと思っています。