Archives

March 2010 の記事

久しぶりに TouchDiamond S21HT に Android を入れてみました。
タッチパネルやボタンの違いもあり操作に慣れる必要があります。
メモリ容量のせいか待たされることも多いけど、このままデフォルトにしても
良いんじゃないかと錯覚するくらい機能的な完成度が上がっていました。

android_s21ht_01.jpg

参考にさせていただいたページはこちら。
すべて最新のファイルを入れてみました。

いいかも おぼえがき Android S21HT
PCで立体視してみるぶろぐ S21HT:Androidが楽しすぎる件について


●前知識

TouchDiamond S21HT は HTC 製の WindowsMobile 携帯です。
HTC の WindowsMobile 端末は別の OS を走らせることができるようです。
上の紹介ページの手順に従うと Android 携帯相当として動作するようになります。
Ubuntu が動く端末もあるようです。

重要な点は、Android を走らせても中に入っている WindowsMobile (WindowsCE)
には影響が無く消さなくても良いということ。
好きなときに Android を boot できるし内蔵フラッシュに共存しています。
インストールも WindowsMobile のアプリケーションと全く同じ感覚で入れられます。

もちろん保証された動作ではないので自己責任で使う必要があります。
中に入った重要なデータは事前にバックアップを取っておくなど、徹底した自己防衛が
必須でしょう。あまり使わなくなった予備機を実験に使うくらいの気持ちで。

SIM 無しで使っているので 3G 回線接続は試していません。


●インストール先

TouchDiamond S21HT は SD カードスロットが無い代わりに、内蔵のフラッシュメモリが
強化されています。

・デバイスメモリ 256MB (ユーザーエリア 90MB くらい)
・内部ストレージ 4GB

デバイスメモリは WindowsMobile が使う本来の領域で OS もこちらに入っています。
内部ストレージは SD カードの代わり。Android は内部ストレージ側に入れます。
特にパーティションを切ったり難しい手順はなく、必要なファイルを置くだけです。


●インストール方法補足

こちらを参考にしています。

1. XDANDROID.* が本体で、展開したファイルをすべて内部ストレージにコピーします。
2. STARTUP.TXT を置き換えます。S21HT (TouchDiamond) の場合
  \内部ストレージ\STARTUP CONFIG\DIAMOND\STARTUP.TXT
  \内部ストレージ の直下にコピー。
3. コピーして置き換えた STARTUP.TXT を修正します。
  zImage と initrd が存在しないファイル名になっているので、正しいファイル名に
  書き換えます。

カーネル(zImage)、rootfs.img、initrd.gz はそれぞれ新しいバージョンに差し替え
られるようです。リネームして元のファイルを置き換えるか STARTUP.TXT を修正します。


●起動と終了方法

\内部ストレージ\haret.exe を実行します。

かなり時間がかかるので気長に待ちます。
消費電力も大きいので電源(mini USB)は接続状態にしておくことをお勧めします。

初回起動時は Linux のブート画面でタッチパネル補正がありました。
田の字型の白い箱が出るので順番にタッチしていきます。

終了は終話ボタンの長押しで、表示されるメニューから電源切断を選びます。
ただし TouchDiamond (S21HT) はボタンの上下が逆になっていて、右下の [←]キー
が終話ボタンです。(後述)

電源切断を選ぶと再び WindowsMobile が起動します。


●ボタン操作の注意点

ボタンの配置が異なっています。海外版 Diamond の写真を見ると S21HT はボタンの
上段と下段が逆になっているようです。

   [HOME]         [ ← ]
         カーソル
   [発話]         [終話]

ボタンに軽く触れると反応しているボタンの LED が点灯するので、慣れるまで注意して
見た方が良いかもしれません。

画面のタッチパネルと違い、ボタンエリアは静電容量式のセンサーが併用されています。
一見物理ボタンに見えますが、識別するには押し込むときに指が触れていなければ
なりません。

タッチパネルは感圧式(抵抗膜式)なので、スタイラスや軽く爪を立てる感じで操作した方が
操作しやすくなっています。ところがボタン側は逆。スタイラスや長い爪で押しても反応
しないので要注意です。同時に複数の場所に手が当たっている場合もうまく反応しません。

 ・画面のタッチパネルは軽く爪を立てる感じで
 ・ボタンは指で触れたまま押し込む (2箇所以上同時に触れない)


●使い方その他

・メニューを開くには左上の [HOME] ボタン (S21HT だと発話の受話器マーク)
・前の画面に戻るには右上の [←] ボタン (S21HT だと終話の受話器マーク)

UI の反応はワンテンポ以上遅れることが多いので、iPhone/iPod touch のつもりで
操作すると戸惑います。とりあえず Setting でいろいろ設定することができます。
無線LAN も問題なく繋がりました。

Android Market にもアクセス可能で無料アプリケーションのダウンロードができます。
Google のアカウントの同期もできました。

初期状態ではアプリケーションがほとんど入っていないので、Android Market から
ダウンロードすることになります。ダウンロード中はインストールが完了するまで
他の操作をしない方が良いでしょう。
固まったように反応しなくなることがありますが遅いだけなので、何もせずに待って
いると始まります。

たまに「エラー: ~は応答していません。」とダイアログが出ることがあります。
これも遅いだけなので [強制終了] ではなく [待機] を選んだ方が良いようです。
スリープからの復帰後にもよくでます。

使っているうちに動作が重くなってくることがあります。
一度起動したアプリケーションは裏で動作しているので、起動中のタスクをすべて
終了すると元に戻ります。Adnvanced Task Killer でたまに全削除しています。

電力の消費がかなり大きいようで、特に何もしてなくても本体が温かくなります。
CPU も常にフル稼働しているようです。
USB ケーブルで電源供給してもバッテリー残量が全く増えないので、供給と消費が
拮抗しているのでしょう。電源なしの一晩放置だと確実にバッテリーが空でした。
(もしくは電源切断されて WindowsMobile に戻っています)

android_s21ht_00.jpg

●使ってみて

以前試した時とは比べ物にならず、かなりよく動いています。
3D を使ったゲームアプリを走らせてみても意外なほどスムーズに動いていました。
ここまで 3D が動くとは思いませんでした。

ただ UI 操作は引っ掛かりが多くてよく待たされます。いろいろ考えられる原因はあります。
例えば TouchDiamond S21HT は実質 RAM 128MB(104MB) であること。swap が
作られているらしく、起動アプリケーションが多いと遅くなる原因となっているようです。
画面解像度も 640x480 VGA 相当で、同じチップを使っている HT-03A よりも負担に
なっているのかもしれません。

このあたりの操作感に慣れれば、Android Market には豊富なアプリケーションが並んでいるし
Android の雰囲気を十分味わうことが出来そうです。
でもやっぱりなめらかに動く Android 端末も欲しくなります。


関連エントリ
携帯電話 Android


新しい OpenGL 仕様が発表されました。

OpenGL Overview

OpenGL 4.0 は一言で言えば Direct3D 11 (DirectX11)。

シェーダーステージも増えテセレータが追加されています。
OpenGL 3.2 がほぼ Direct3D 10 相当でしたが、これで Direct3D との機能差が
一気に無くなりました。

Direct3D11/DirectX11  OpenGL 4.0
-----------------------------------------------------------------------------
Vertex Shader         Vertex Shader                  (GL_VERTEX_SHADER)
Hull Shader           Tessellation Control Shader    (GL_TESS_CONTROL_SHADER)
Domain Shader         Tessellation Evaluation Shader (GL_TESS_EVALUATION_SHADER)
Geometry Shader       Geometry Shader                (GL_GEOMETRY_SHADER)
Pixel Shader          Fragment Shader                (GL_FRAGMENT_SHADER)
Compute Shader        OpenCL

整数演算や倍精度浮動小数演算(double)も D3D11 同様に追加されています。


OpenGL 3.3 は OpenGL 3.2 の拡張版です。まだ機能差を詳しく確認していませんが
Direct3D 10 に対する 10.1 の位置づけでしょうか。

OpenGL 4.0/3.3 共に OpenGL のバージョンとシェーダー言語のバージョン番号が
統一されました。

OpenGL 2.0   GLSL 1.1    vsh, fsh
OpenGL 2.1   GLSL 1.2    vsh, fsh
OpenGL 3.0   GLSL 1.3    vsh, fsh
OpenGL 3.1   GLSL 1.4    vsh, fsh
OpenGL 3.2   GLSL 1.5    vsh, fsh, gsh
OpenGL 3.3   GLSL 3.3    vsh, fsh, gsh
OpenGL 4.0   GLSL 4.0    vsh, fsh, gsh, tcsh, tesh

tcsh= Tessellation Control Shader
tesh= Tessellation Evaluation Shader

使う側から見れば D3D11 のスレッド対応や豊富な圧縮テクスチャが使えることは
非常に大きな優位点です。

しかしながら OpenGL 4.0 でもテセレーションなどほぼ同等のことができるように
なっています。モバイル向け OpenGL ES と互換性を取りやすい点を考えると OpenGL は
かなり魅力的な環境になったといえるでしょう。


関連エントリ
OpenGL GLSL のバージョン


Android もついに OpenGL ES 2.0 対応となりました。

Download the Android NDK

嬉しいのは NDK による正式対応という点。他のプラットフォームで開発していた
C/C++ のコードを移植できます。OpenGL ES 2.0 を使ったゲームエンジンなどを
そのまま共有できるようになったわけです。

モバイル系の 3D API はほぼ OpenGL ES 2.0 へ集中していますが、アプリケーション
の記述言語はプラットフォーム毎に異なっていました。

Platform           OS            アプリ記述言語    C/C++対応  3D API
-------------------------------------------------------------------------------
iPhone/iPod touch  iPhoneOS      Objective-C/C++   C/C++      OpenGL ES 1.1/2.0
Android            Android       Java(dalvik)      NDK C/C++  OpenGL ES 1.1/2.0
Palm Pre           WebOS         JavaScript        PDK C/C++  OpenGL ES 1.1/2.0
Windows Phone 7    WindowsCE6    C#                ?          ?

Palm Pre でも同様に PDK による C/C++ と OpenGL ES 1.1/2.0 対応が発表されている
ようです。

Plug-in Development

OpenGL ES と同じように、C/C++ が共通で使える言語となっています。
Windows Phone 7 はどうなるでしょうか。


関連エントリ
OpenGL を Direct3D 互換で使う