Tweet Yahoo!ブックマークに登録 しよう!
  1. 1.開発環境の構築
  2. 2.HelloWorld
  3. 3.Androidアプリの特徴
  4. 4.アクセス許可
  5. 5.インターフェイス
  6. 6.高級ウイジェット (未完成)
  7. 7.イベント伝達機能 (作成中断)
  8. 8.マルチメディア機能 (作成中断)
  9. 9.スレッドとハンドラー(作成中断)
  10. 10.Androidの基本 (作成中断)
  11. 11.SQLite (作成中断)
  12. 12.コンテンツプロバイダー (作成中断)
  13. 13.位置情報サービス (作成中断)
  14. 14.ネットワークAPIの活用 (作成中断)
  15. 15.サービス機能(作成中断)
  16. 16.Android のIPC(作成中断)
  17. 17.ウイジェットエンジンとウエブビュー(作成中断)
  18. 18.アプリケーションのリソースと地域化 (作成中断)
  19. 19.グラフィックとアニメーション (作成中断)
  20. 20.Twitterクライアントをつくる (作成中断)
  21. 21.アプリケーションの設定とバックアップ(作成中断)
  22. 22.画面回転の自動化 (作成中断)

3.Androidアプリの特徴

E_LogCat ( DDMS )

 あるアプリケーションのActivityのライフサイクル「状態還移(アクティブ状態の移動)」を直接確認する為には「LogCat ツール:DDMS」が欠かせない。
「LogCat:DDMS」は「Androidデバーキング・ツールキット」と「Eclipse」で使用できるが、ここでは「Eclipse」付属の「LogCat:DDMS」を用いてみよう。

 

「Eclipse」の上部メニューの「Window」→「Show」→「Other」を選択する。
ddms_01.png

 

すると下画像「Show View」ウインドーがでるので「Android」→「LogCat」を選択すると
ddms_02.png

 

「LogCat」画面(下図赤枠部分)が追加され、この場所に起動した「エミュレータ」上で動作しているアプリケーションのログ情報が表示される。
しかし、「エミュレータ」が立上がり、アプリケーションが動作しても、起動中の「エミュレータ」をクリックし指定しなければ、ここに「
ログ情報」は表示されない。ddms_03.png

 
自動的に「エミュレータ」を選択してくれないので、手動で選択する必要がある。
 

手動で選択する為に下画像のような操作をする。赤枠部分をクリックして「DDMS」をクリックする。

ddms_04.png

 

 もし、「DDMS」がなければ、下画像の「Other」をクリック。そしたら、その下の画像(Open Perspective)が表示される。

ddms_05.png

 

そして、下画像「DDMS」をクリックし、OKを押せば、 

ddms_06.png

 

下画像の画面が表れる。
①は「Java」と「DDMS」を切り替える所。
②に「emulator-5554」という「エミュレータ名」が表れるのでそれを選択する。
③の「Log Cat」ウインドーに、動作中のアプリケーションのログ情報などが表示される。

ddms_07.png

 上画像③の空白部分に表示される内容は、左から、
「Time」 : には、ログ 出力時の時間が表示。 
「pid」 : には、プロセスID。
「tag」 :  には、タグ(該当するログの所属や特徴を分類する文字列など)が表示され、
「Message」 : には、ログ内容が表示される。

ログ情報」を探す、第1の方法理論編」
 下画像は、上画像の③の部分を拡大したもので、アプリケーションが動作している状態だ。 
そして下画像は、黒丸部分の「Log」がクリックされた状態で、ログ情報が猛スピードで表示されていく。この状態で目的のログ情報を見つけ出すことは容易なことではない。
ddms_08a.png

 そこで、そのログ情報を「フィルター」機能を利用して優先順位別に表示するようにすれば、目的のログ情報は見つけ易くなる。
上画像①の「V ~ E」がその「フィルター」であり、それぞれ以下の通りの役目をする。
V」は、Verbose(訳:言葉数の多い、多弁の、冗長な)の頭文字「V」で
、「V」(詳細情報)を優先的に出力しつつ、「D, I, W, E」の情報も出力する。
D」は、Debug(デバッグ)の頭文字「D」で、「D」(デバッギング情報)を優先的に出力しつつ、「I, W, E」の情報も出力する。
I」は、Information の頭文字「I」で、危険性やエラーではない、「I」(単純な情報)を優先的に出力しつつ、「W, E」も出力する。
W」は、Warningの頭文字「W」で、「W」(警告情報)を優先に出力しつつ、「 E」情報も出力する。
E」は、Errorの頭文字「E」で、アプリケーションの動作上深刻な「E」(
エラー情報)を出力する。これは、それ以下が無いので「E」(エラー情報)のみ表示。
例えば、「デバッグ情報」を優先してを見たければ「D」をクリック、「エラー」を見たければ「E」を押す、という使い方をする。
 ( ここでは合計5個のオプションがあるが、コンソールからの命令で更に多くのオプションを利用できるが、ここでは説明しない。)

 しかし、ここで知っておくべき重要事項!がある。
 上記の「V~E」を選択したからと言って、Androidプラットホームが自動的に優先順位を判断し分類してくれるのではない各優先順位は前もって開発段階で設定しておく必要があるからだ。開発者がモジュールやアプリケーション作成時にLog出力コードを追加する時に、このコードがどの程度の危険性を持っているかを判断しそれに見合ったレベルのLog出力メソッドを使用する事によって決定される。そのように開発段階で予めコードに「V ~ E」等の情報を設定し、後で「V ~ E」の優先順位別に情報を引き出すワケだ。

ログ情報」を探す、第2の方法理論編」

 「ログ情報」を見る、第2の方法として「ログ・フィルター(Log Filter)」を利用する。「ログ・フィルター」は、上のようにどの情報を優先的に出力するかいう方法は変わらないが、条件を絞って「ログ情報」を出力するやり方に特徴がある。この出力方法を使うと、条件に合う「ログ情報」だけを瞬時に表示できるので、開発の効率を上げることが出来る。

ddms_08b.png

 ログ・フィルターを「追加」するには、上図③の緑色の「+」マークをクリックすればいい。
④はログ・フィルターの「修正」、
⑤がログ・フィルターの「削除」。
⑥の「赤x」マークは表示されたログ情報を初期化(非表示)する。

 さあそれでは緑色の「+」をクリックしてみよう。すると下図の画面が表示される。

ddms_09b.png

図 Log Filter

Filter Name : には、新たに生成するfilterの名前を自由に決めて入力。「(例)ActivityCifeCycle」
by Log Tag : ここには、ソースコードであらかじめ決めたTAG名を入力する。「(例)ActivityCifeCycle」、なお未入力ならTAGの全てを選択候補とする。
by pid : これは、特定
プロセスが出力するLogだけを見たい時その「プロセスID」(pid)を指定。「(例) 119 , 77」などを入力。
by Log level : ここでプルダウンメニューから「log level ( V ~ E )」を選び、優先順位を指定する。少し前に説明した「V~E」の優先順位と同じ機能を発揮する
 以上の入力を終えて「OK」をクリックすると、下図⑦の「ActivityLifeCycle」という名前の「ログ・フィルター」が追加され、それをクリック指定すれば、上図で指定した条件にあったログ情報だけが表示される。上図では実際①と②のみ指定した。②のTAG名が「ActivityLifeCycle」となっている情報をすべて表示しなさい!という意味だ。「ActivityLifeCycle」というTAG名は実際3つしかないので、下図のように2つの情報が出力された。
 整理すると、以前に説明したように、下図①の「Log」の膨大なログ情報の中から「V~E」の優先順位の機能を用いて情報を探す方法と、「ログ・フィルター」で条件指定して、その条件にあったログ情報だけを表示させるという、2つの表示方法がある事を覚えておこう。

ddms_08b.png

 

実際に「ログ情報」を見るために、「プロジェクト」をつくる
 それでは、LogCatが実際にどのような動作をするのか?確認のために実際にプロジェクトを生成して出力されるLOGを見てみよう。
下画像のようにEclipseのメニューから「File」→「New」→「Android Project」を選択すると「New Android Project」が表示される。

ddms_11.png


次に下画像のように① ~ ⑦を入力し「Finish」ボタンを押す。
ddms_12.png


「Logクラス」を利用して出力用ログを設定する。
 すると、下画像のような「基本プロジェクト」が生成されるので、下画像(右)のJavaソースコードに下画像(右下)のように「import」と「Log.i( )」部分を追加した後、
下画像の青枠部分の①の「保存」と②の「ビルド」を行う。アプリケーションは②「ビルド」を実行することによって完了する事は前に学んだ。
ddms_13.png


ソースコードの説明
「android.util」パッケージに含まれているLogクラスを利用する為には、「android.util」パッケージをインポートする必要がある(上画像最初の追加部分)。
 Logクラスは、優先順位別にメソッドを提供する。上画像では優先順位が「Information」である「i ( ) メソッド」( 追加部分)を使っている。それ以外にもv( ), d( ), w( ), e( ) メソッド等を使うことが出来る。
 メソッドの引数(ひきすう) の入力形式は共通していて、Log.i ("TAG値"、"文字列") のような方法で入力する。上画像では、最初の引数の「TAG値」に "AALCActivity" を使っているが、これは「AALCActivity」アクティビティが動作中だよ!という事を知らせるために同じ文字列 "ALCActivity" を使った。2番目の引数にはonCreateメソッドが呼出されたゾ! という事を伝えるために文字列 "onCreate"  を使っている。Log.i ("AALCActivity"、 "onCreate")と記述する事により、"AALCActivity" がLogCat画面の「TAG」部分に表示され、"onCreate" が「massage」部分に表示されるワケだ。

さて、今つくった(上画像)プロジェクトを実行して「ログ情報」を見てみよう。

ログ情報」を探す、第1の方法 実行編」
「Package Explorer 」から「AndroidApplicationLifeCycle」を選択し、「Ctrl + F11」か上段メニュー「Run → Run」を押すと、「ビルド」と同時にプロジェクトが「実行」され、エミュレータが起動しアプリケーションの動作を確認する(下画像)。
ddms_14.png

 LogCatのログ情報を見てみよう。
下画像①「DDMS」をクリックすると、下と同じ画面が表れる。
プロジェクトを実行し、エミュレータが起動すれば、下画像②のName下にエミュレータ名「emulator-5554」が表示されるはずだ。
ddms_07.png
 
そうすると、上画像③のlogCat画面に情報が表示される筈なのだが・・・・
ところが、下画像のように見えません。
ddms_15.png
                        ログ内容が何も表示されない!! 
表示されない理由はエミュレータ「emulator-5554」をクリックして指定しなかったからだ。

下画像のように「emulator-5554」をクリックすれば・・・・ 表示されます。
分ってみれば単純な事なんだが、初心者はここでずいぶん手間取る。
ddms_16.png
 ログ情報が物凄いスピードでかなりの量、表示された。 
上画像では赤丸部分で、フィルター「V」が選択されているので、「V」で指定されたログ情報と一緒に「D ~ E」も全て表示されている。Android OSが動作しエミュレータが立上がるまでの全ての情報が、ここに表示される。
その膨大な情報の中から、優先順位が「I」で、タグ情報が「AALCActivity」、ログメッセージが「onCreate」であるこの「1つの情報」を探す必要がある。当然、探すのに時間がかかるが、やっと見つかった。上画像の①と②の下部分にそれがあった。
 もう少し賢くさがすにはどうすればいいだろうか?優先順位を「I」にすれば、「V」は全て見えなくなり、「I」を含めた「W, E」の情報が表示されるので探し易くなる。これが、ログ情報を探し出す第一の方法だ。

ログ情報」を探す、第2の方法 実行編」
 「第1の方法」に対してこの「第2方法」は、Log Filter で設定した条件にあった「ログ情報」だけを表示させる機能をもっている。下図では「by Log Tag」一箇所だけ「タグの名前」を記述した。こらは、タグ名「AALCActivity」のある情報だけを出力しなさい!という意味だ。
ddms_17.png
このように入力して、「OK」をクリックしたら、Lof Cat 画面にログ・フィルター「AALVActivity」が追加された。これをクリックすれば、ご覧の通り目的の「ログ情報」が表示された。

ddms_18.png


 ここでひと言、上画像のラベル「Log」に表示されていた「AALCActivity」が、「Log Filter」でこの「AALActivity」を表示条件の1つに設定するやいなや、「Log」の表示画面から消えるのだ。ようするにこの「Log Filter」で表示する情報は全て「Log」には表示されないようだ。ちなみに「Log Filter」で何も条件を設定しなければ、どうなると思いますか?答えは、「Log」で表示されていた全ての情報が、この「Log Filter」に表示されるのだ!!!そして、「Log」の部分は全てが非表示となってしまった。そして、もう一度「Log Filter」の条件を"タグ"「AALCActivity」1つに戻したら、「Log」は元どうりに表示された。「全てのログ情報」=「Log」+「Log Filter」となっているようだ。これは、私の推論だが間違っていれば「twitter」に書き込んでくれ!