2010-08-14
■[AppInventor] Canvas座標で使われる値
端末画面のドット数は端末機種によって様々だが、AppInventorのアプリがCanvas座標で使う値は、画面の横幅はどんな端末でも320で、高さはそれに合わせて縮小した値が使われる。HT-O3Aなど画面の横幅が320ドットの端末では、Canvasで指定する値は実際の画面のドット位置と一致するが、Desireなど解像度の高い端末では描画されるときはそれなりに変換された値になる。これよって、どんな機種の画面でも同じアブリでは、だいたい同じように描画される。
GDDフォン(HT-03A) の Canvas.Width, Canvas.Height を表示してみた図。画面全体の大きさは幅320高さ480だが、Canvasの高さはタイトルバーの50ドットを除いた430ドットとなっている。幅が320なので、実際の値とApp Invendor のアプリから見た値は同じものとなる。
こちらは同じアプリでDesire上で描画されたもの。Desireの画面は幅480高さ800、タイトルバーの高さが76ドットなのでCanvasの有効高さは残り724ドットとなる。実際の幅480ドットが320に縮小するので、この比率で724を縮小した値483が、App Invendor のアプリから見たCanvasの高さとなる。
ImageSpriteに貼り付けられたTシャツ型のこの画像は、実際には横80ドットである。このまま描画するとDesireでは見かけが半分くらいになってしまうはずだが、座標の変換ルールは画像の大きさにも適用されるので、両方の端末で同じような見かけの大きさで描画されている。
DesireとHT-03Aで縦横比率が違うが、Canvasのバックグラウンド画像は目いっぱい引き伸ばされて描画されるので、アスペクト比が微妙に違ってくる。
2009-08-04
■[Android] Torect Lite
部品をドラッグして移動し、並べ替えて長方形にするゲーム。部品は回転したり裏返したりできない。簡単そうだが、第一面からちょっと考え込んでしまうくらいの手ごたえがある。Lite版ということだが、100面もあるので十分じゃないかな。
各部品は重ならないようになっていて、ドラッグして別の部品に当たるとそのままいっしょに押し込むことができる。現実のパズルに近い動きだが、大きな部品を右から左に配置換えしようとすると、まわりの部品をどかさないといけなかったりして面倒なことがある。
つり革につかまり端末を片手でにぎり、親指ですりすりドラッグしながらゲームするにはいい感じ。
2009-07-11
■[Android] シンプルな2chビューワー 「anちゃん」
シンプルな2chビューワー。動作は軽快で余分な機能はないので、使い方に迷うこともない。お勧め。
・カテゴリ一覧⇒板一覧⇒スレ一覧⇒スレ表示と選んでいけば画面が切り替わる。
・スレ表示に貼られているリンクをクリックすれば、ブラウザが立ち上がって画像や YouTube が見れるし、前スレへのリンクだったらそのままビューワーで見れる。
・よく見る板はブックマークに置いておける。
・スレ検索などの機能もある
色使いとかフォントの大きさに文句がないわけではないが、ごちゃごちゃしたUIメニューがつくよりは、このままシンプルでいて欲しい。ただ、アイコンは線が細くて分かりにくい。もうちょっとなんとかならんか。
Android Marcket にて "2ch" で検索するとインストールできる。
板一覧でチェックを入れるとブックマークされる
AAはズレることが多い。ま、いいけど。
アイコンは全然目立たない。
2009-06-28
■[Android] HTC Magic 使い心地メモ
常用していた携帯 X01T (WindowsMobile機) のバッテリーがヘタってきていたので、Android を貰ったのはちょうどいいタイミングだった。もはや戻る気はなし。
もらってから数週間使ってみての感想。iPhone は知らないので、X01T と比べる感じ。
電話、3Gパケット
SoftBank の SIM を挿して使っている。電話は使えた。3Gネットワークのユーザーパスワードをググって設定したら、接続することができた。パケット使い放題になってると思う。携帯に届いたメール(@softbank.ne.jp)が読めないのが困ったところ。
GMail / Google Calender 連携は素晴らしい
GMail に新着が来ると着信音がなる。いままでは GMail に届いたメールを携帯に転送してたけど、その必要なし。未読・既読の状態も瞬時で伝わる。カレンダーもリアルタイムで同期。Google メニューに依存してる人はめちゃくちゃ便利。
スクリーン
画面の指紋が気になる、ドラッグしようとすると指の油でネトついてうまく滑らない、などの問題があったが、液晶保護シートを貼ったら解消した。専用のシートがないので、ノートパソコン用のでっかいシートを切りぬいて使っている。かなり割安だが、切り口の加工がヘタくそなので不細工。
電源スイッチ
電源OFFすると画面ロック状態になるのは使いやすい。X01T は別々にセットしなきゃならなかった。
動画
X01T では、YouTube からダウンロードした flv データを TCPMP で直接見ることができた。その他の avi ファイルも、見れるものがたくさんあって重宝してた。HTC Magic では見れる動画フォーマットが限られているのが残念。
ただし、flv は見れないけど、YouTube で fmt=18 の MP4 フォーマットでダウンロードしたものならOK。WMV も見れるやつがあるので、それほど深刻には困らない。WiFi 環境ではストリーム視聴ができるので、そっちの方が使い出があるかもしれない。
カメラ
X01T のカメラはしょぼしょぼだったので、HTC Magic の圧勝。不満点はシャッター音を消したいくらい。そのうちなんとかしよう。
PC連携
AndroidMarket がちょっと使いにくい。端末側で操作完結するのはいいのだが、欲しいアプリを探すところは PC とかで行いたいと思う。いまのところ、PCのブラウザでよさげなアプリを見つけても、端末の AndroidMarket メニューで再検索しないとインストールできない。検索などの操作はすべてPC側で行い、ボタン一発でケーブル接続した端末にインストールしたいところ。
SDカードをPC側本体側同時にマウントできないのも不便。Android に挿した SD カードは、ケーブルで繋がった PC からはリムーバルディスクに見える。Android側 でマウントする操作を行うと、PC からみえるようになるが、Android 側からはアクセスできなくなる。PC に妙なソフトをインストールしなければならない Windows Mobile の ActiveSync よりはマシだが。
2009-06-27
■[Android]Android Bazaar and Conference 2009 Spring
日本アンドロイドの会主催の Android Bazaar and Conference 2009 Spring に行ってきた。午前中の docomo や Google の講演は申し込み時にすでに満員で入れなかった。無料とはいえ、平日の昼間に数百の人間が集まるんだから、Android への関心の高さが分かる。デザインのセッションでこないだのGoogleが配ったAndroid携帯を持っている人と言ったら、2、3割の人が手を挙げたから、あっちから雪崩れ込んできた参加者も相当いたみたい。
駅からイベント会場に向かう道や会場前の広場でワイシャツにスラックスという夏のビジネスマンの格好をした人をたくさん見かけたので、さすがdocomo 関連は客層が違うなぁと関心してたら、別のセミナーの参加者だった。国立オリンピック記念青少年総合センターは大きくて、いろんな団体が会合をやってるのでした。
Androidのオープンソースアプリ戦略 佐々木 陽 株式会社GClue 代表取締役
Google側の戦略の話ではなくて、Android に群がるハードソフトメーカー側の話。というか、GClue自身や関連する China Moblie の製品紹介が主でした。大手はオープンソースで標準化を狙い、弱小企業はクローズドソースで差別化を狙う、というまぁ当たり前の結論ながら、これまで弱小では手が出せなかったミドルウェアやフレームワークの開発も、オープンソースの上に乗っかればなんとかなりそうという話もあり。
China Mobile が開発している Android ベースのスマートフォン OPhone は、Linuxカーネルを最適化し、TV やら WAP ブラウザやら既存のJavaVMやら(AndroidはGoogle製のJVM) をなんだかんだぶっこんで1年で開発したそーな。
アプリデザイン、色使いで差を付けろ! 矢野 りん デザイナー/ライタ
いいアプリを作っても、アイコンがダメだと Android Market で目立たないと選んでもらえない。逆にアイコンがよければ、CDのジャケ買いのようにアイコンデザインのみでユーザーに選んでもらえるかもしれない。なるほど。
・Android Market の背景は黒。これでは原色でも目立たない。白っぼい色(パステル調)がよい。
・寒色(青系)は引っ込んで見えるの。
・アイコンの中身と同系色で暗い色の外枠をつけると立体感が出る。
・光が当たる位置を明るく塗った3Dデザインの方がかっこいい。
・同じメーカーが出すアプリの色を統一してブランド化するという手もあり。
・文字は小さいとつぶれるのでよくない。
・目立つ色のキャラものがいい。
・色を設定するときは、RGBよりも色相と明度で調節した方がいい。
セカイカメラのつくりかた 近藤 純司 頓智ドット株式会社
セカイカメラとは、モバイル機の位置情報をキーにしてサーバーに写真やテキストなどを格納しておき、現地で取り出して実際の景色にそれらの情報を重ねて表示するもの。
開発における具体的な手法の話が多くて面白かった。
センサ
・加速度やコンパスの現データは値が細かく変動して安定していない。ソフト的なローパスフィルタを入れて使っている。
・位置測定には GPS 以外に PlaceEngine (koozyt) を使っている。PlaceEngine は無線LANの電波から位置を判定するもので、室内でも有効。
・GPS の読み出しは無線LANからの位置測定の10倍の電力を使う。
カメラ
・android.hardware.Camera の autoFocus() で設定するコールバックから呼び出される onPreviewFrame で指定したフォーマットでデータが読み出せない。
性能チューニング
・起動時間は logcat の出力で測定。 フレームレート onDraw() の呼び出し間隔で見る。
・セカイカメラは Activity はひとつだけで、View をとっかえて表示している。背後のカメラキャプチャ映像を絶やさないため。起動時に全ての View を必要としないので、起動時に展開しないView を ViewStub で指定。 起動時間が 4.59s -> 4.15s に短縮。
・Hierarchy Viewer で View の構造を調査して、不要な View を探す。
・NoBackground style で @null を指定して不要な背景を描画しないようにしたら、フレームレートが向上。 21.2fps -> 30fps
・GC! DDMS の Allocation Tracker でメモリ消費量を調査。実行中のメモリ割付をやらないようにする。
・XmlPullParser がメモリを食うので、JSON とかに置き換えることを検討。
Androidで3Dグラフィクスを極める道 Vol.2 高橋 憲一 日本Androidの会 幹事
3D に興味はあるが、OpernGL とかやってないので半分以上ちんぷんかんぷん。
圧縮テクスチャ
・メモリ使用効率向上
・ハードウェアで伸張。ATITC方式とPVRTC方式がある。
・HTC 製 Android では ATITC が使えるが、定数が未定義なので裏技っぽい。
0x8c92 - ATITC_RGB 0x8c93 - ATITC_RGBA
Matrix Palette
・間接で繋がっているモデルにおいて、間接の先の部品の位置を自動的に計算してくれるもの。現在未サポート。
Vertex Buffer Object (VBO)
・頂点データをGPU側メモリに置くことでデータ転送のオーバーヘッドを節約。形状の変化しない背景データの描画などに有効。
・プログラムでの具体的な使い方の例が紹介されたが、よく分からず。
GLSurfaceView
・onPause onResume で使えるという話は先日Googleでも聞いた。
NDK
・native-code サポートキットが出た。次回はこの話?
2009-06-18
2009-06-15
■[Android]HTC Magic のブラウザからの YouTube 再生
Android のブラウザは Flush に対応してないので、DohhhUp だの ニコニコ動画(ββ) だのの動画サイトが見られないのだが、YouTube だけは専用アプリを立ち上げて見られるようになっている。以下はその様子。
1. ブラウザから YouTube へのリンクをクリックして開く
2. そのままブラウザで見るか YouTube 専用アプリで見るか選択
3. 専用アプリならそのまますぐに全画面で再生開始 (ブラウザでは 動画は見れない。)
ケータイの小さい画面だと、YouTube 再生ページにある動画へのコメントだの関連動画へのリンクだのは見づらいので、いきなり全画面再生をする方がありがたい。しかも設定によっては、途中の選択画面もスキップできる。
WindowsMobile だと TCPMP というあらゆる動画フォーマットをサポートしたプレーヤーがあって、溜め込んだムービーを見るという使い方だったが、Android ではオンライン環境の中で YouTube を見ることになるんだろなぁ。これはどっちの使い方にも一長一短あって、電車の中でムービーを見るには蓄積したデータの方がよくて、家で寝る前に寝床で動画をあれこれ見るにはオンラインの方がよい。Android にもオールラウンドな動画プレーヤーが登場するのを期待。
YouTube アプリの直接起動は、Android 開発環境のエミュレータのブラウザにはない機能だが、HTC のオブションなのか、この先標準で提供されるのかは不明。
YouTube へのリンクのあるブラウザ画面
ブラウザで見るか専用アプリで見るか選択
YouTube アプリ起動中
再生スタート
2009-06-11
■Google Developer Day 2009 Japan
とりあえず Tシャツでも貰えたらいいなと思って参加したら、全員に Android 携帯がオミヤゲとして配られた。Android は iPhone より1年遅れているので、開発者を増やそうと必死なわけだ。その他にも基調講演には google の人、mixi の人、docomo の人が現れて、全体として、おまいらオレたちのためにアプリ書けゃゴラァ、いや、書いてくださいお願いします、というのが趣旨のお祭りであった。まぁ Developer Day ということだから当然か。有象無象の開発者でも五万と集まると強いということね。
■基調講演
HTML5 の紹介
先日発表があったもの。フラッシュ要らなくなるね。
GoogleWave の紹介
同じく。面白いがやりすぎかなぁ。どこで誰に何が見えてるか把握するのが大変で、秘密のメールと思ってたら、ブログで全世界が見てたとかならないかなぁ。API も用意したし、数週間後におまいらにID配るからアプリ頑張ってくれ。
Android の紹介
今から全員に端末配るから、おまいらアプリ頑張ってくれ。
docomo
Android の普及に docomo は1台3万円の販促費をつけて販売面からサポートする。おまいらはアプリ作成頑張ってくれ。
mixi
OpenSocial 対応アプリについて。PC版のβは出した。モバイルのベータは6月に出す。アプリページの広告料の0.02%を作者に渡す、有料課金がしたいなら仕組みを作る、金がないなら少々貸してやってもいい。だからおまいらアプリ頑張れ。
■ブレイクセッション
実はブレイクセッションでやってることについて、どれもほとんど予備知識がない状態で参加した。ごめん。なので面白い公演を聞き逃してるかもしれないが、聞いたセッションそのものは、なんかパッとしない感じだった。Android もらったんで、早く家に帰って遊びたい気持ちが強すぎたのかも。
複雑でスケールするアプリを Google App Engine で構築するには
Google App Engineの予備知識が全然ない上に、Android をもらうのに並んでたんで公演途中から入ったので、ちんぷんかんぷん。
Google App Engine は複数のコンビュータにデータベースが配置してあって、データはそれぞれバラバラに入っている。クエリー時にコマンドを数千台に投げて帰ってきた答えをマージするみたいな話。
O3D サイトに3Dコンテンツを加えよう
HTML5 にあった、Javascript で3D描画を行うときの記述についての話。オブジェクト側のプロパティに色とか形とかいろいろ情報を持たせて、イベントやループ内ではパラメータ変更するくらいのことしか書かずにすむとかなんとか。
Android のデータ共有
スレッド間のデータの受け渡しには、intent から HTML コールまで4段階あって、それぞれ利点欠点があるので用途によって選びましょう。
Android でリアルタイムゲームの開発方法
具体的で面白かったので、このセッションだけたくさんメモした。
・プログラム構造は、経過時間をパラメータにして、ゲームのロジック部と描画部は別スレッドにするといい。つまりタイマーイベントをかけて、そのときの時間によって画面内容を計算して描画コマンドをリストアップし、それを別スレッドで描画する。
・ゲームは作って操作してみて、いろいろ手直ししながら作成していくので、パフォーマンスのみならず拡張性も大事。
TIPS
・ゲーム中にメモリの確保、開放をやらない。GC が起きて何もかも止まってしまうから。開始前にすべて確保しておく。DDMS を使ってメモリ使用状況を確認。
・関数は呼ばない。なるべく static 関数を使う。
・インターフェース経由の呼び出しは遅い。
・JNI処理は速いが呼び出しにオーバーヘッドがかかる。
・なるべくローカル変数を使う。
・floatは遅いけど、まあ気にならない。
・SDK にプロファイルツールがあるから活用を。
描画コマンド
Canvas
・使うのが簡単。描画オブジェクトが少なければそれほど遅くない。10スプラインで10ms
OpenGLES
・Canvas より速いが呼び出しにオーバーヘッドあり。
・Android は OpenGLES 1.0 だが、端末メーカーによってそれ以上サポートしていることも。
glGetString( GL10.GL_EXTENSIONS ) で確認。
・背景描画でタイルの合成をするのに、glTexParameter() が遅い。
・VBOで複数タイルを同時描画するのが速い。(Vertex Buffer Object?)
TIPS
・タッチスクリーンを触ると UI スレッドに物凄い数のイベントがくるので、 onTouchEvent() に sleep() を入れる。16ms から始めて要調整。
・pause, resume はややこしいが、標準コマンド GL_SurfaceView() を使うといい。
・Android 1.0-1.5 で indirect buffer で VBO を使おうとするとちゃんと動かずエラーも投げない。動くときもあるが GC がメモリを動かすと変な動き。direct buffer を使う。
その他
・アプリケーションは小さく作る。でかいと端末で邪魔になって消される。2-3MBがベスト。
・どんな機種でも動くようハードウェアキーやトラックボールに依存しないで作るといい。













