2009年07月03日

「Google Androidプログラミング入門」

 以前、Android SDKのベータ版(m3)が公開されてから約3か月後に、「Google Android完全解説」というムックを書きました。まだAndroidがほとんど知られてなかった頃でした。色々な人にAndroidを知ってほしかったので、当時僕らで出来る限りのことを調べて書きました。とても頑張って書いたのですが、やがてAndroidのバージョンアップによりAPIが大きく変わってしまい、掲載されているサンプルの多くがそのままでは動かなくなってしまいました。よくあることだと思いますが、うまく動かずに困っているといった話を耳にするたびに、最新バージョンに対応したものを早く出したいと思っていました。

 今回は、その贖罪のつもり、ではないですが、個人的にはその気持ちが強いです。前のムックでは出来なかった機能などについて、これもいれたい、あれもいれたい、と僕らで出来る限りの内容を載せているうちに、650ページにもなってしまいました。

Google Androidプログラミング入門Google Androidプログラミング入門
江川 崇, 藤井 大助, 麻野 耕一, 藤田 泰介, 山田 暁通, 山岡 敏夫, 佐野 徹郎, 竹端 進

Amazonで詳しく見る

 本書は、Android SDKを使ってAndroidプラットフォーム上で動作するアプリケーションを開発するための基礎知識を解説するものです。648ページと少し分厚いですが、その割に3,800円(税別)という意外とお得な価格になっています。

 どこにも目次が載っていないようなので、以下に貼り付けます。個人的なお勧めは、「ユーザーインターフェイス」です。実に100ページ以上費やして詳細に説明しています。標準のウィジェットをすべて載せた「ウィジェットカタログ」というサンプルも用意しています。「アプリケーションモデル」も濃いですが、楽しいと思います。「テスティングフレームワーク」も、今までここを紹介した本はないと思いますのでお勧めです。もしよろしければ、ご覧になってみて下さいませ。

目次

【第1部 基礎知識】
 ・Android SDKの概要
 ・Android開発環境
 ・開発ツール
【第2部 開発の基本】
 ・Androidアプリケーションの4大要素
 ・アクティビティ
 ・インテント
 ・サービス
 ・データ入出力と永続化
【第3部 画面要素】
 ・ユーザーインターフェイス
 ・グラフィックス
【第4部 実践開発】
 ・アプリケーションモデル
 ・セキュリティ
 ・リソースと国際化
 ・センサーAPI
 ・地図表示とロケーション
 ・テスティングフレームワーク
【第5部 応用開発】
 ・Input Method Framework
 ・ConnectivityManager
 ・カメラ
 ・メディア
 ・JNI(Java Native Interface)
 ・アプリケーションの実行結果を解析する
 ・ソースコードの探訪
 ・Androidの開発用端末
 ・アプリケーションの配布
【付録A】
 ・ウィジェットカタログ

2009年06月29日

Android SDK WG 第5回 セッションの申込を開始しました

個人的に忙しくて、しばらくお休みをしていたAndroid SDK WGのオフライン勉強会を開催します。

・Android SDK WG とは、日本Androidの会( http://www.android-group.jp/)のワーキンググループのうちのひとつで、Android SDKの理解を深めながら、開発者同士仲良くなろうぜ!を目的としたフランクな集いです。定期的に週末の午後を使って「セッション」と言う名の{勉強会|交流会}を開催しています。
・講演者や受講生という構図はありません。特にテーマは設けず、話したい人が自由に話すだけです。それをネタにして色々と意見交換ができたら面白いと思っています。(元々は私がAndroid開発者の仲間を増やしたいなあと思ってはじめたイベントです)

申込みはこちらからどうぞ
http://atnd.org/events/947

2009年06月16日

WakeLock

AndroidのPowerManager(電源マネージャ)にはWakeLockという仕組みがあります。PCでも一定時間放置しているとスクリーンセーバーになったり、スリープしたりしますよね。WakeLockは、簡単に言うと一定時間経過後に勝手に画面がOFFになってしまったり端末がスリープしたりすることを防ぎたいときに使うものです。以下のような種類があります。

フラグCPU画面キーボード
PARTIAL_WAKE_LOCKOnOffOff
SCREEN_DIM_WAKE_LOCKOnDim(薄暗い)Off
SCREEN_BRIGHT_WAKE_LOCKOnBright(明るい)Off
FULL_WAKE_LOCKOnBrightBright(明るい)

例えば、SCREEN_BRIGHT_WAKE_LOCKを設定すると、その間は、画面のライトはつきっぱなし、CPUもアクティブのままになります。ただしユーザーが明示的に端末の電源ボタンを押したときは、スリープします。PARTIAL_WAKE_LOCKだけが少し特殊で、ユーザーが電源ボタンを押して端末をスリープさせても、CPUは動き続けます。ユーザーのポケットの中に端末がある間も、センサーの値を取得したりGPSの値を取得したりしたいときに使います。(1.5からPARTIAL_WAKE_LOCKのときにセンサーの値が取得できるようになっているようです。)

コードとしてはすごく簡単です。

WakeLock wakelock = ((PowerManager)getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "[タグ名となる適当な文字列]");
・・・
// wakelockを取得
wakelock.acquire();
・・・
(処理)
・・・
// wakelockを解放
wakelock.release();

releaseは忘れないように、finallyなどでやった方がいいと思います。あと、容易に想像できますが、かなり電池食います。

2009年06月11日

GDDフォンでのデバッグ

Android Dev Phone 1では、特に意識せずにステップ実行やインスペクションなどのデバッグが可能でしたが、GDDフォンではAndroidManifest.xmlに明示的に指定しないと、出来ないようになっています。ブレークポイントを置いても止まりません。おそらく今後はそうなるんでしょう。

AndroidManifest.xmlのapplication要素に、

android:debuggable="true"
を記述すればOKです。

2009年06月09日

GDDフォン

Google Developer Day 2009では、事前登録し、かつ当日実際に来た参加者に対して、サプライズプレゼントとしてGDDフォンが配られました。無料で一人一台ずつです。すごいですね。

GDDフォンは、ヨーロッパのVodafoneなどから提供されているHTCのMagicという端末です。Magicは、日本でもDoCoMoさんから、HT-03Aという型番で発売されることが公式に発表されています。

ただ、GDDフォンは開発者用端末なので、SIMフリーであることや、プラットフォームを載せ替えられること、といった開発者には嬉しい自由度が備わっています。

そして、さらに嬉しいことに、GDDフォンは、TELECTELEC(テレコムエンジニアリングセンター)の適合証明を受けています。G1やAndroid Dev Phone 1は、FCCFCC(米国連邦通信委員会)の認可は受けていましたが、TELEC の証明は受けていませんでした。日本で無線機として使うことにお墨付きはなかったのです。
つまりGDDフォンは、日本で正々堂々と使える初めてのAndroid機となるわけです。開発者にとって、正々堂々と開発できる端末があること、これはとても大事なことだと思います。GDDフォンの配布は、とても感激しました。

2009年06月08日

復帰しました

3週間ほど仕事の都合でネットから隔絶されていました。復帰してみると情報に自分が追い付けていないことを実感します。人間が日々得ている情報量はすごいんですね。それらを溜めてから後日に得ようと思うとかなり大変です。

6/5(金)に、西日本の組込技術展である「ET West 2009」に参加してきました。かなり大きなイベントで、4500人を超える来場者があります。私は日本Androidの会の顔で一本、会社の顔で一本(非Android)の計二本のセッションを担当しました。かなり大忙しでしたが、盛況に終了してよかったです。ESECでもETでもそうですが、Androidプラットフォームの展示はかなりの数に上ります。会場のどこに立っていたとしても、360度見渡せばどこかに必ずAndroidを見つけることができるでしょう。これはすごいことです。皆さんAndroidに取り組まれています。組込でAndroidが来そうです、というかもう来ています。

明日のGoogle Developer Day 2009に参加します。Office Hoursに立っていますので、もし見つけたら声をかけてください。

また、明後日にAndroidのHackathonがあります。参加されるご予定の方はよろしくお願いします。私も参加します。

3週間ほどAndroidともお別れしていたので、これからしばらくAndroidクンと再会を喜びあいます。

2009年05月01日

Eclipseから参照するソースディレクトリの位置の変更

もともとは$SDK_HOME/sourcesでしたが、変更になりました。ターゲットが1.5系の場合は

$SDK_HOME/platforms/android-1.5/sources
になります。
ターゲットが1.1の場合は
$SDK_HOME/platforms/android-1.1/sources
になります。

センサーを用いたアプリがエミュレータで動作しない件

1.5r1では、Windowsでこの現象が起きます。Macで開発していれば発生しません。やがて対処されると思います。

Android Dev Phone 1のディスク空き容量が無くなる場合の対処方法

nAndroid Dev Phone 1を使い続けていると、不要なアプリやファイルを消しても空き容量が回復しないことがあります。こうなってしまうと、単なる黒電話になり、ネット関係はほぼ何もできないに等しいので非常に使いにくいです。ファイルシステム(yaffs2)でリークがあり、削除したはずの領域を解放しないことが原因のようです。かなり乱暴なのですが、対処方法を示します。

1. いったん端末の電源を落とす
2. 端末背面の蓋をあけておく
3. ブート中に電池を引き抜く
4. 電池をはめて通常通りブートする


この操作を行うと、解放されていなかった空き領域を認識するようになります。
なお、自己責任でお願いします。

Android Marketにアプリが登録できない場合

以下のようなエラーが発生して、アプリがAndroid Marketに登録できないことがあります。

Market requires the minSdkVersion to be set in AndroidManifest.xml. The server could not process your apk. Try again.

原因は、uses-sdkタグの位置にあるようです。uses-sdkタグはmanifestタグの子要素です。本来であれば記述する順序はどこでもよいはずですが、一番最初に書かなければなりません。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.package"
android:versionCode="1"
android:versionName="1.0.0">
<uses-sdk android:minSdkVersion="2" />
・・・
</manifest>

などのようにすれば大丈夫です。ちなみに、こうなったのはつい最近です。本件はMarketのパーサーのバグなので、やがて改修されると報告されています。