本日から3日間(2009年5月13日~15日)、
東京ビッグサイトで開催されている「第12回 組込みシステム開発技術展(ESEC2009)」における
Android関連の出展社・出展製品一覧。

早くも同イベントの速報記事がアップされているので、
こちら「Android ニュースリンク集 - adakoda」にアップしていくことにします。
※おそらく2009/5/13以降1週間以内の日付になると思います。

Android Marketから届いた 「[#437795881] A Message from Android Market」という件名のメールによると、
有料アプリを配布できる地域に、フランス、イタリア、スペイン、オランダが追加されたそうです。

これにより、現在、有料アプリを配布できる地域は、以下のように8ヵ国になりました。

  • United States(アメリカ合衆国)
  • United Kingdom(イギリス)
  • Germany(ドイツ)
  • Austria(オーストリア)
  • France(フランス)
  • Italy(イタリア)
  • Spain(スペイン)
  • Netherlands(オランダ)
※2009年5月13日現在
※ただし、USとUK在住の開発者に限る

日本Androidの会2009年5月(11日)のイベント、
株式会社タイトー山田俊一様の発表資料「Android Game Programing Tips」の中で興味深い内容がありました。

アーケード・コンシューマは30fps or 60fps
携帯アプリは10~30fps
傍目に見てカクカクが目立つのは8fps 以下
TVアニメは24fpsで製作
 ※同資料の3ページ目から引用

タッチパネル
・重い!激重!
 ※同資料の13ページ目から引用

fpsというのは、Frame Per Secondのことで、1秒間にどれだけのループ(フレーム描画)処理できているかという指標で、
例えば、10fpsだと、1秒間に10フレーム描画できているということで、1フレームあたり100ミリ秒で処理できていることになります。

では、いったいAndroidの実機では、どんなもんだろう?ということで、私の方でも実際に試してみました。

試してみた環境は、
「Android Dev Phone1(1.5Firmware)」
+
「Android 1.5 SDKサンプルのApiDemos - Graphics - OpenGL ES - Sprite Text」
です。

このサンプルは、OpenGL ESのサンプルであり、実行してみると、
下図のように、三角形のテクスチャとテキストが、フレーム毎に回転描画され、
加えて、1フレームあたりの処理時間もミリ秒(ms/f)で表示されます。

端末を操作しない状態では、瞬間的に17ms/fが表示されることもありましたが、
平均すると、下図キャプチャのように、23ms/f前後でした(このサンプルでの話)。

162-SpriteText.png

ms/fの算出方法としては、
最初のフレーム描画後のシステム時間と、12フレーム描画した後のシステム時間との差分を、12で割ることで算出しています。

この12というのは、適当なサンプル間隔であり、
値が小さいと、結果にばらつきが生じますし、値が大きいほど、結果は正確になりますが、収集に時間がかるため、フィードバックが遅くなる、
ということで、12は、その中間の「ほど良い値」といったところでしょうか。

また、このサンプルでは、ms/fという記事冒頭のfpsとは単位が異なるので、
ソースコードを修正して、fps表示してみました。

ms/f から fps(f/s) への変換は単純で、y[f/s] = 1000[ms/s] / x[ms/f] で算出でき、このサンプルだと、だいたい43fps前後でした。

fps.png

 
参考までに、修正したソースコードの箇所は、ApiDemos\src\com\example\android\apis\graphics\spritetext\SpriteTextRenderer.java
の、drawMsPF()でms/fを計算している箇所と、onSurfaceCreated()で"ms/f"単位表示している箇所だけです。

ちなみに、このサンプルで画面をタッチ操作してみると、システムがタッチ処理に応答してしまうためか、描画が遅くなり、
冒頭資料の描画表現でいうところの「カクカク」、「タッチパネル激重」につながります。

※この時、このサンプルのms/f(修正したfps)表示では、ms/fが小さい値(fpsは大きい値)というように、
逆にパフォーマンスが良い値となってしまうので、このあたりは修正の余地がありそうです。。。

最後になりますが、セミナーの予習として、以下のまとめ記事をアップしていましたので、参考になれば幸いです。
→「Androidゲームプログラミングの情報源は - 逆引きAndroid入門

Android1.5から新たにスライディングドローワー(SlidingDrawer)ウィジットが追加されました!

が、

ドキュメント(Dev Guide/Reference)からキャプチャを見つけられないだけでなく、
SDKのサンプルソースコードにもありませんでした(2009/5/9現在)。。。

きっとアレだろうと想像しながら、実際にソースコードを書いてみたのですが、例外が発生して上手くいかず。。。

真面目にドキュメントを見てみると、以下のような記載が。。。

<SlidingDrawer
     android:id="@+id/drawer"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:handle="@+id/handle"
     android:content="@+id/content">
     <ImageView
         android:id="@id/handle"
         android:layout_width="88dip"
         android:layout_height="44dip" />
     <GridView
         android:id="@id/content"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent" />
 </SlidingDrawer>

で、上記を張り付けて実行させてみると、例外は発生しなくなったが、
見た目は、真っ暗のままで、何も表示されていないように見える。。。

Google検索してみると、「Android Developers」で似たような症状で困っているという旨の投稿がありましたが、
まとまった解決方法を見つけられず。。。

ということで、自力で まとめる しかないと覚悟を決め、長時間格闘したあげく、使えるようになりました(まとめ記事は、以下のリンク先参照)。

スライディングドローワー(SlidingDrawer)を使用するには - 逆引きAndroid入門

160-1.png

※本文中のアレ(SlidingDrawerで正解)

昨日、「[#434741094] A Message from Android Market」という件名のメールが、Android Marketから届いていました。
内容を要約すると、以下のような感じです。

  • 無料アプリの配布先選択チェックボックスに、フランス、イタリア、スペイン、カナダ、ポルトガル、スイスを追加した(※1)
  • しかしながら、上記の国々のうち、現在、デバイスが存在するのは、フランス、イタリア、スペインだけであり、
    残りの国々も、近いうちにそうなるだろう
  • 開発者は、配布先の国を1ヵ国だけ選択してもよいし、
    配布可能なすべての国々を意味する「All Current and Future Locations」を選択してもよい

  • 数週間のちに、フランス、イタリア、スペイン、オランダのユーザーも有料アプリを入手できるだろう
  • また、ドイツ、オーストリア、オランダ、フランス、スペインの開発者が有料アプリを配布できるようにも努力している

  • あなたのアプリのタイトルや説明を、異なる言語で販売しやすくするために、ローカル言語のサポートを追加した
  • 現在、英語、ドイツ語、フランス語、イタリア語、スペイン語、オランダ語、チェック語、ポーランド語が対応済である(※2)

  • Android Marketに配布するアプリには、manifestファイルに、minimum SDKの記述が必須となった
  • 現在、Android 1.5のデバイスもあるが、多くは、1.1のため、まずは、1.1向けに配布することを推奨する

また、上記※1と※2に該当する画面を、実際にAndroid Marketにログインし、キャプチャしておきましたので、貼っておきます。

※1
publishing_option.png

※2
listing_details.png

Android Marketには、FlashLightという名前(または、それに似た名前)の懐中電灯アプリが、たくさん公開されています。

 

FlashLightとは

画面全体を白色などの塗りつぶしで表示し、携帯のバックライトを懐中電灯として使うためのアプリケーション。

以前、まいむぞう先生の「照明スイッチからベッドまでのお供に「Flashlight」 | Androidあぷぷ -Androidのオススメアプリ情報を毎日お届け-」
という記事でも紹介されていました。

flashlight.png

 

FlashLight仕様(機能)

実際に実機にインストールして仕様を調べてみたところ、以下のような機能がありました。

  • フルスクリーンで単一色(一般的には、白)の塗りつぶしを表示する
  • 任意の色に変更する
  • タッチされている間だけ色を変更する
  • 自動的に複数の色を変更させることにより、点滅表示する
  • (画面の)明るさを変更する

 

FlashLightを自作する

なるほど、こんな簡単な仕様なら、自分でも作れそうだということで、作成してみたところ、結構ハマリました。。。

 

まず、最初にハマったのが、フルスクリーン表示

フルスクリーン表示しているアプリってあったかと考え、
そういえば、デフォルトでインストールされている「Camera」アプリがそうだったと思い出し、

packages\apps\Camera\src\com\android\camera\ViewImage.java
[platform/packages/apps/Camera.git] / src / com / android / camera / ViewImage.java

に、それらしきコードがあることを発見し、解決。

※解決方法は、「フルスクリーン(Full Screen)/全画面表示をするには - 逆引きAndroid入門」へ掲載しました
※トラックバックをいただいていたサイト内の「完全にフルスクリーンにしたい - Androidで開発してみたい - android-dev」でも発見

 

そして次にハマったのが、色選択(カラーピッカー)

今更ながら、Android SDKには、標準のウィジットがないことに気付きました。。。
こちらも、どっかで見たはず、と記憶をたどり、
Android SDKに同梱されている「API Demos」サンプルアプリの「Graphics」 > 「FingerPaint」で使用されている
ColorPickerDialogクラスがあったことを思い出しました。ソースコードは、こちら、

platforms\android-1.5\samples\ApiDemos\src\com\example\android\apis\graphic\ColorPickerDialog.java

しかしながら、このクラスは、com.example.android.apis.graphicsパッケージにあったため、今回は、実装を見送りました。。。

 

そして最後の難関が、画面の明るさの変更。

こちらも、どっかで見たはず、と記憶をたどり、
デフォルトでインストールされている「Settings」アプリの「Sound & Display」 > 「Brightness」で実現されていたことに気づき、

packages\apps\Settings\src\com\android\settings\BrightnessPreference.java
[platform/packages/apps/Settings.git] / src / com / android / settings / BrightnessPreference.java

に、それらしきコードがあることを発見。
しかしながら、その実装方法は、非公開APIを使用していたため、断念し、
再度、gitからrepoで落としてきたAndroidのソースコードを、brightnessで全検索し、

development\apps\Development\src\com\android\development\PointerLocation.java
[platform/development.git] / apps / Development / src / com / android / development / PointerLocation.java

に、もっと良い方法があることを発見。

※解決方法は、「画面の明るさ(Screen brightness)を変更するには - 逆引きAndroid入門」(長文)に掲載しました
 (こんなとこにも、Android SDK 1.5 の変更があるとは。。。)

 

そして最後のオチ
色々苦労した結果、原稿を書きあげ、仕上げにGoogle検索で、原稿をチェックしていたところ、
以下にズバリの記事/コードがありました。。。

以前のセンサー記事「[Android] Redesigned Sensor Manager APIs(Android1.5) | The type SensorListener is deprecated - adakoda」にも書いたSensorEventListener.onSensorChanged()に渡されるSensorEvent.values[0~2]の値は、順にAzimuth(方位角)/Pitch(傾斜)/Roll(回転)の値であり、ヘルプには、以下のように書かれています。

values[0]: Azimuth, rotation around the Z axis (0<=azimuth<360). 0 = North, 90 = East, 180 = South, 270 = West
values[1]: Pitch, rotation around X axis (-180<=pitch<=180), with positive values when the z-axis moves toward the y-axis.
values[2]: Roll, rotation around Y axis (-90<=roll<=90), with positive values when the z-axis moves toward the x-axis.

が、わかりにくいですし、説明もしづらい。。。
と思っていたら、わかりやすい説明を見つけました。

http://www.novoda.com/blog/wp-content/uploads/2009/05/sensoreventcheatsheet_v1.pdf
※実機で確認済です

[Android] HTC Magicを予習する

| トラックバック(0) |

HTCのAndroid Phone2号機であるHTC Magicの情報は、
こちらのHTC公式ページ(http://www.htc.com/www/product/magic/overview.html)にあります。

また、Android Phone1号機であるHTC Dreamの情報も、
こちらのHTC公式ページ(http://www.htc.com/www/product/dream/overview.html)にありますので、
それらの仕様(Specification)ページを見比べることで、スペックの差異を比較できます。

さて、何故?今更?このタイトルで、この内容の記事を書くのか?

答えは、こちらのリンク先(http://xenonews.blog50.fc2.com/blog-entry-2014.html)から。

また、同ページのさらにリンク先(https://fjallfoss.fcc.gov/oetcf/eas/reports/ViewExhibitReport.cfm?mode=Exhibits&RequestTimeout=500&calledFromFrame=N&application_id=585270&fcc_id=%27NM8SPRD%27)も必見。

※あわせて読みたい(参照したい)

※Android関連のニュースは、こちら「Android ニュースリンク集 - adakoda

[Android] 初めてのAndroid

| トラックバック(0) |

日本でのAndroid本としては5冊目、はじめてのAndroid系としては3冊目となる
「初めてのAndroid」という本が、オライリー・ジャパンから発売されるみたいです。

「初めてのAndroid」は、E Burnette先生が書かれた「Hello, Android」という洋書の翻訳本とのことですが、こちらの目次を見る限り、これまで購入した本と重複しない内容が結構含まれており、なかなか良さげです。しかも手頃な価格。

監訳は、日本Androidの会の先生方ということで、同会の5/11のイベントで先行即売会があるようです(しかもTシャツつき!)。

私は、イベントには行けませんですが、ネットで注文しましたので、後日、レビュー記事を掲載したいと思います。

初めてのAndroid

Android 1.5で追加されたLive Folders(ライブフォルダ)の説明については、以下の記事が参考になります。

Android 1.5に搭載される「Live Folders」とは:モバイルチャンネル - CNET Japan
「akaiho St. » Live FolderやAppWidgetで見えてきたAndroidに込められた狙い」←安生先生

ここでは、そのLive Foldersの起動(呼び出し)方法について、紹介します。

Live Foldersの起動(呼び出し)方法

1.Home画面のショートカットアイコン以外の任意の場所を長押しする
※長押しとは、エミュレーター使用時の入力デバイスがマウスの場合は、左ボタンを長く押す、実機(デバイス)使用時の場合は、指で長く押す

2.表示された「Add to home screen」で「Folders」を選択する

add_to_home_screen.png

3.表示された「Select folder」で追加したいフォルダ(例えば、下図ではAll contacts)を選択する

select_folder.png

4.すると、Home画面にフォルダ(下図では、All Contacts)が追加されます

all_contact.png

5.フォルダ(上図では、All Contacts)を選択する

all_contact_result.png

<<前のページへ 2425262728293031323334

Android 楽しいよ!

2010年11月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

自作フリーソフトウェア