2009年2月23日月曜日



f:id:bs-android:20090215001008p:image


2009/2/27(金)に東京恵比寿で開催するAndroidのセミナーが本日締め切り日です。


申し込みフォーム


詳細は以下の通りです。



日程


 ・2009/2/27(金)


  ・開催時間


   19:00~20:50


  ・受付時間


   18:30~19:00


場所


 恵比寿スバルビル会議室407号室


 http://www.ebis303.com/ebisconference/index.html


 ・地図


  http://www.ebis303.com/ebisconference/access.html


  
大きな地図で見る





講演者(敬称略)


 ・日本Androidの会 事務局長


  SIPropプロジェクト 代表


  今村謙之


 ・日本Androidの会 関西支部長


  株式会社ブリリアントサービス代表取締役


  杉本礼彦


 ・日本Androidの会 組み込みWGリーダー


  株式会社ブリリアントサービス 技術部研究開発課Android担当リーダ


  近藤昭雄


内容


 ※敬称略


 ・「Androidと日本の携帯のこれから」 杉本礼彦


 ・「Androidによる世界戦略」 今村謙之


 ・「Androidをカスタマイズする方法」 近藤昭雄


  参加特典DVDの環境を使ってAndroidをカスタマイズしてコンパイルし


  Android Dev Phone 1にバイナリを焼くまでを実演します。


定員


 30名


参加費用


 15000円


 ※銀行振り込みになります。


  参加のご連絡後に振込先の口座を折り返し連絡させていただきます。


  領収書の発行も可能です。


参加特典


 ・オリジナルDVDをプレゼント


  以下の内容を収録する予定です。


  ・開発手順


  ・Android Dev Phone 1


   ・購入手順


   ・アクティベーションの方法


  ・開発環境


  ・当日のセミナー資料


 ※内容に多少の変更がある可能性があります。


主催


 株式会社ブリリアントサービス



定員30名を超えてしまった場合は抽選とさせていただきます。


申込みの締め切りは2009/2/23までです。


※銀行振り込みが2009/2/26までに完了するようにお願いいたします。


セミナー終了後に懇親会を予定しています。


申し込みフォームに参加可否をご記入ください。





第一回Androidセミナー本日締め切り



f:id:bs-android:20090215001008p:image


2009/2/27(金)に東京恵比寿で開催するAndroidのセミナーが本日締め切り日です。


申し込みフォーム


詳細は以下の通りです。



日程


 ・2009/2/27(金)


  ・開催時間


   19:00~20:50


  ・受付時間


   18:30~19:00


場所


 恵比寿スバルビル会議室407号室


 http://www.ebis303.com/ebisconference/index.html


 ・地図


  http://www.ebis303.com/ebisconference/access.html


  
大きな地図で見る





講演者(敬称略)


 ・日本Androidの会 事務局長


  SIPropプロジェクト 代表


  今村謙之


 ・日本Androidの会 関西支部長


  株式会社ブリリアントサービス代表取締役


  杉本礼彦


 ・日本Androidの会 組み込みWGリーダー


  株式会社ブリリアントサービス 技術部研究開発課Android担当リーダ


  近藤昭雄


内容


 ※敬称略


 ・「Androidと日本の携帯のこれから」 杉本礼彦


 ・「Androidによる世界戦略」 今村謙之


 ・「Androidをカスタマイズする方法」 近藤昭雄


  参加特典DVDの環境を使ってAndroidをカスタマイズしてコンパイルし


  Android Dev Phone 1にバイナリを焼くまでを実演します。


定員


 30名


参加費用


 15000円


 ※銀行振り込みになります。


  参加のご連絡後に振込先の口座を折り返し連絡させていただきます。


  領収書の発行も可能です。


参加特典


 ・オリジナルDVDをプレゼント


  以下の内容を収録する予定です。


  ・開発手順


  ・Android Dev Phone 1


   ・購入手順


   ・アクティベーションの方法


  ・開発環境


  ・当日のセミナー資料


 ※内容に多少の変更がある可能性があります。


主催


 株式会社ブリリアントサービス



定員30名を超えてしまった場合は抽選とさせていただきます。


申込みの締め切りは2009/2/23までです。


※銀行振り込みが2009/2/26までに完了するようにお願いいたします。


セミナー終了後に懇親会を予定しています。


申し込みフォームに参加可否をご記入ください。





2009年2月20日金曜日



こちらでアナウンスされているように、3/19(木)、3/20(金)に東京のGoogleオフィスでAndroid Hackathonが開催されます。


3/10(火)、3/11(水)に事前ミーティングでアイディアを出しまくるIdeathon(アイディアソン)も行われます。※こちらは参加必須ではありません。


弊社からは今回のHackathonに運営のサポーターとして参加させていただきます。


30名x2枠ありますが、すぐに埋まってしまうと思いますので、申込みはお早めに。


申込みフォーム





2009/3/19,3/20 Android Hackathon



こちらでアナウンスされているように、3/19(木)、3/20(金)に東京のGoogleオフィスでAndroid Hackathonが開催されます。


3/10(火)、3/11(水)に事前ミーティングでアイディアを出しまくるIdeathon(アイディアソン)も行われます。※こちらは参加必須ではありません。


弊社からは今回のHackathonに運営のサポーターとして参加させていただきます。


30名x2枠ありますが、すぐに埋まってしまうと思いますので、申込みはお早めに。


申込みフォーム





2009年2月19日木曜日



Software Designの3月号が2009/2/18に発売されました。


Androidだけで49ページも確保した充実した特集記事が掲載されています。


内容



1章:今までのプラットフォームとはここが違う~Androidでできること


 嶋是一/中村秀樹


2章:~これだけは押さえておきたい~Androidアプリ開発のための基礎知識


 江川崇


3章:~よくあるトラブルで迷わない~Androidアプリ開発環境構築ガイド


 杉本礼彦


4章:Androidアプリを作ってみよう!~サンプルゲーム/マッシュアップ/拡張現実感~


 安生真/内嶋教人/今村謙之/山崎淳


コラム:Android Marketへの自作アプリ登録手順


 木南英夫


5章:~組込みフレームワークとしてのAndroid~ハードウェア移植のツボ


 安藤恐竜



日本Androidの会の幹事メンバーによる執筆陣となっています。


Androidの概要、開発環境構築、ゲーム作成、マッシュアップ、3Dに加え、


Androidの移植の勘所も掲載されている、とっても贅沢な内容です。


ぜひご覧ください。



Software Design (ソフトウエア デザイン) 2009年 03月号 [雑誌]

Software Design (ソフトウエア デザイン) 2009年 03月号 [雑誌]










Software Design 2009年3月号のAndroid特集



Software Designの3月号が2009/2/18に発売されました。


Androidだけで49ページも確保した充実した特集記事が掲載されています。


内容



1章:今までのプラットフォームとはここが違う~Androidでできること


 嶋是一/中村秀樹


2章:~これだけは押さえておきたい~Androidアプリ開発のための基礎知識


 江川崇


3章:~よくあるトラブルで迷わない~Androidアプリ開発環境構築ガイド


 杉本礼彦


4章:Androidアプリを作ってみよう!~サンプルゲーム/マッシュアップ/拡張現実感~


 安生真/内嶋教人/今村謙之/山崎淳


コラム:Android Marketへの自作アプリ登録手順


 木南英夫


5章:~組込みフレームワークとしてのAndroid~ハードウェア移植のツボ


 安藤恐竜



日本Androidの会の幹事メンバーによる執筆陣となっています。


Androidの概要、開発環境構築、ゲーム作成、マッシュアップ、3Dに加え、


Androidの移植の勘所も掲載されている、とっても贅沢な内容です。


ぜひご覧ください。



Software Design (ソフトウエア デザイン) 2009年 03月号 [雑誌]

Software Design (ソフトウエア デザイン) 2009年 03月号 [雑誌]












Implementing a User Interface」の一部を翻訳しました。


pdf版はこちら



ユーザーインターフェースの実装


 このセクションではAndroidの画面のユーザインタフェースを実装する基本的な方法を記載します。


画面を作る為の基本とXMLで画面を定義してコードからロードする方法、その他ユーザーインタフェースを取り扱う為に必要な色々なタスクについて解説します。





画面構成要素の階層

 Androidアプリケーションの基本的な機能単位としてandroid.app.Activityクラスのオブジェクトがあります。


アクティビティで様々なことをすることができますが、それ自体では画面上に何も表示しません。


アクティビティを画面上に存在させ、UIを設計するには、ViewやViewグループを使います。





Views

 Viewはandroid.view.Viewクラスのオブジェクトです。画面上の特定の矩形領域に対するレイアウトとコンテンツのプロパティを持ちます。


 Viewオブジェクトは画面領域の為に画面サイズ、レイアウト、描画、フォーカス変更、スクロール、キー/ジェスチャーを扱っています。





 Viewクラスはwidgets(インタラクティブに画面要素を描画するサブクラスを実装した集合)用の基本クラスを供給します。


 Widgetsは測定と描画を処理するので、より早くUIを構築することができます。


 利用できるインターフェースには、Text、EditText、InputMethod、MovementMethod、Button、RadioButton、Checkbox、ScrollViewがなどがあります。





Viewgroups

 Viewgroupsはandroid.view.Viewgroupクラスのオブジェクトです。


その名前が示すようにViewgroupsはViewとViewgroup配下のセットを含み、管理するための機能を機能を持つ特別なViewオブジェクトです。


 ViewgroupsはストラクチャをUIに追加し、一つの実体と呼ぶことのできる複雑な画面要素を構成します。


 Viewgroupクラスはレイアウト(一般的な画面レイアウトを提供するサブクラスのセット)の基本クラスを供給し、Viewのセットを構築する方法を提供します。





UIのツリー構造

 Androidプラットホームでは、下記の図で示すようにViewとViewgroupノードのツリーを使っているアクティビティのUIを定義します。ツリーは単純にも複雑にも好きなように作成することができ、あらかじめ定義されたwidgetsとレイアウト、自分でカスタマイズしたviewタイプを使って構成することができます。


f:id:bs-android:20090218163101p:image


 画面にレンダリングしてツリーに関連付けるには、アクティビティで、setContentView()メソッドを呼び、


ルートノードオブジェクトへの参照を渡します。


 一旦Androidシステムがルートノードオブジェクトへの参照を持てば、Androidシステムはノードをダイレクトに操作し、画面の消去、測定、描画を行うことができます。


 アクティビティがアクティブになり、フォーカスを受け取った時、システムはアクティビティに通知し、ルートノードにツリーを測定、描画するように要求を出します。ルートノードは子ノードの描画を要求します。(描画要求を受け取った時、ツリーの各viewgroupのノードは自分の直下の子ノードに対して描画要求する義務があります。)





 上記のように各viewgroupは、利用できるスペースを測定する責任を持ち、子ノードを配置し、各子ノードにレンダリングさせるためににDraw()を呼びます。


 子ノードは親ノードのサイズと位置を要求するかもしれませんが、親オブジェクトが、各子ノードのサイズと位置を最終決定します





子ノードの位置とサイズの指定方法

 すべてのViewgroupクラスは、ViewGroup.LayoutParamsを拡張した入れ子になったクラスを使用します。このサブクラスは子ノードのサイズと位置を定義するプロパティを含んでおり、Viewgroupクラスのプロパティに割り当てられます。


f:id:bs-android:20090218163349p:image





 LayoutParamsサブクラスには値を設定する為に各々の文法があるので注意が必要です。各子要素は、親ノードにふさわしいLayoutParamsを定義しなければなりません。


 しかし、子ノードに異なるLayoutParamsを定義することもできます。





 サイズを合わせるのに頻繁に使うのは、コンテンツのサイズから計算するか、親オブジェクトのサイズまでオブジェクトのサイズを大きくすることを許可する方法です。(訳注:パラメータ指定で親オブジェクトのサイズに合わせることが出来る。)





一般的なレイアウトオブジェクト

 以下は、アプリケーションで使う最も一般的なViewgroupsです。


各タイプについての基本的な情報を解説しています。


(詳細については各項目のリンクされたページを参照してください。)





FrameLayout

 FrameLayoutは、最も簡単なレイアウトオブジェクトです。


FrameLayoutは、空白の、予約された空間としてスクリーン上に用意され、画像などの一つのオブジェクトを入れることができます。


 すべての子要素はスクリーンの左上に配置されます。FrameLayoutでは子要素の位置を指定することはできません。


 子要素は、以前のオブジェクトの上に上書きし、(新しいオブジェクトが透明でなければ)以前のオブジェクトを部分的に、あるいは全体的に覆い隠すことになります。





LinearLayout

 LinearLayoutは、一つの方向にすべての子要素を配置します。


その方向は-垂直または水平があり、LinearLayoutに設定したプロパティによって決まります。


全ての子要素は次々にスタックされ、垂直のリストはどれだけ横幅が広くても、行ごとに一つだけ子要素を持つことになり、水平のリストは高さ(子要素の中で最も長い縦幅+パディング)をもつ一つだけの行を持ちます。


 LinearLayoutは子要素の間のマージンや、重力(子要素のright、center、leftの属性)も考慮します。





 子要素はweight値を指定し、残りのスペースは宣言されたweightの割合で子要素に割り当てられます。


 デフォルトのweightはゼロです。


 例えば3つのテキストボックスがあって、そのうち2つはweightを"1"で宣言している場合、"1"で宣言したテキストボックスは余白のスペースをいっぱいにするために等しく拡張されますが、残りのテキストボックスは拡張されません。





 下図の2つのフォームは、一組の要素(ボタン、ラベル、テキストボックス)をもつLinearLayoutを表しています。


 うまくパディングを調節するために両方ともパディング値を持っています。これらのテキストボックスの幅はFILL_PARENTに設定されています。(その他の要素はWRAP_CONTENTに設定)


重力(gravity)はデフォルトの左に設定されています。


左側のフォームはweight値が設定されていません(デフォルトの0)。


 一方、右側のフォームはCommentsのテキストボックスのweightに"1"が設定されています。


Nameのテキストボックスにも"1"が設定されたら、NameとCommentsのテキストボックスは同じ高さになります。


f:id:bs-android:20090218163847p:image





ヒント:バランスのとれたレイアウトの画面を作るには、fill_parent属性のコンテナオブジェクトを作成し、子要素にゼロの高さ、または幅を割り当て、各要素が取るべき画面の割合に従った相対的なweight値を各子要素に割り当てます。





 水平のLinearLayoutでは、アイテムはテキストのベースライン{最初のリスト要素の最初のライン(一番上、一番左を基準の線とみなす)}の位置に整列されます。


 これはフォーム要素を目で追う時に隣のテキストを読むために視線が上がったり下がったりしないですむようにするためです。XMLのレイアウトで android:baselineAligned="false" を設定することによって取り消すこともできます。





TableLayout

 TableLayoutは行と列に子要素を配置します。TableLayoutはいくつかのTableRowオブジェクトから成りたっています。


 各々が列(以下に説明されるように他の子要素を持つこともできます)を定義します。


 TableLayoutコンテナは、行、列、セルの境界線は表示しません。各列はゼロ以上のセルを持ちます。


(各セルは一つのViewオブジェクトを持つことができます。)


 テーブルは最も多くのセルを持つ行と同じだけの列を持ち、空のままのセルを持つことができます。


セルはHTMLでできるように列全体に広げるようなことはできません。(訳注:tableタグのcolspan属性のようなことはできない。)


 以下のイメージは、点線で表示されている目に見えないセルの境界線としてテーブルレイアウトを示しています。


f:id:bs-android:20090218164232p:image





 列を隠すこともでき、その列が残り画面スペースを埋めるように指定することができます。


また、テーブルが画面に合うように強制的にその行を縮めるように指定することもできます。


詳細は、このクラスについてのドキュメントを参照してください。





AbsoluteLayout

 AbsoluteLayoutでは、子要素を画面に表示する正確なx/y座標を指定することができます。(0,0)は左上で、右あるいは下に動くことで値が増加します。


 マージンはサポートされておらず、要素が重なることは(お勧めできないが)許容されます。


 融通が利かず、異なるデバイスの画面表示でうまく機能しない為、正当な理由がない限り、通常AbsoluteLayoutを使うことはお勧めできません。





RelativeLayout

 RelativeLayoutでは、子要素にお互い(IDによる指定)の、あるいは親要素との相対的な位置を指定します。


 右端に2つの要素を並べたり、要素の下に要素を置いたり、画面の中央に配置することができます。


 要素は与えられた順序で描画されるので、最初の要素が画面の中央にあるなら、その要素に対して並べられている他の要素は画面の中央と相対的に並べられることになります。


 このレイアウトを指定する為にXMLを使う場合、参照される(基準となる)要素は、それが参照される前にリストされていなければなりません。





 以下の図は目に見える要素と見えない要素を相対的に配置している例を解説しています。


 ルートの画面のレイアウトオブジェクトはRelativeLayoutオブジェクトを使用しています。


f:id:bs-android:20090218164419p:image





 この図は画面構成要素のクラス名とそれぞれのプロパティのリストを表しています。


 これらのプロパティのいくつかは要素によって直接サポートされ、いくつかはLayoutParamsメンバーによってサポートされます(画面のすべての要素のためのRelativeLayoutサブクラスです。なぜなら全ての要素はRelativeLayout親オブジェクトの子要素だからです。)。


 RelativeLayoutパラメータにはwidth、height、below、alignTop、toLeft、padding、marginLeftがあります。 これらのパラメータのいくつかは他の子要素に対する相対的な値をサポートしていることに注意してください。toLeft、alignTop、belowプロパティは、それぞれ、左(toLeft)、上(alignTop)、下(below)にあるオブジェクトを示します。





重要なViewグループのサマリー

 これらのオブジェクトはすべて子UI要素を持ちます。


 いくつかは目に見えるUIを提供しますが、いくつかは子レイアウトを処理するだけです。




















Class説明
AbsoluteLayout正確な目盛(例えばピクセル)において親オブジェクトに対する相対的な子オブジェクトの位置を指定することができます。
FrameLayout一つのオブジェクトを表示するViewフレームとして振舞うレイアウトです。
Galleryリストからイメージを水平スクロール表示させます。
GridViewm行とn列のスクロールするグリッドを示します。
LinearLayout水平あるいは垂直の列に子要素を配置するレイアウトです。ウインドウの長さがスクリーンの長さを上回る場合は、スクロールバーを生成します。
ListViewスクロールする1列のリストを表示します。
RelativeLayoutお互いの要素の相対的な指定(子Bの左へ子等ど)、親要素との相対的な指定(親のトップに整列する等)を用いて、子オブジェクトの位置を指定することができます。
ScrollView要素を垂直スクロールさせる列です。
Spinner1行のテキストボックスに、リストから一度に一つのアイテムを表示します。水平、または、垂直にスクロールすることができる1列のリストボックスのようなものです。
SurfaceView描画専用のsurfaceへの直接アクセスを提供します。surfaceの上のレイヤーになる子Viewを持つことができますが、widgetsを使うよりも、ピクセルで描画する必要があるアプリケーションで使用される事を目的としています。
TabHostタブのクリックを監視して、アプリケーションが画面を変更するのを可能にするタブ選択リストを提供します。
TableLayout任意の数の行と列を持つ表のレイアウトです。各セルは任意のwidgetを持つ事が出来ます。横列は最大の縦列に合わせてリサイズされます。セルの境界線はありません。
ViewFlipper1列のテキストボックスに1つのアイテムを表示するリストです。スライドショーのように、時間間隔を設定してアイテム表示を入れ替えることが出来ます。
ViewSwitcherViewFlipperと同様のものです。





「Implementing a User Interface」の一部翻訳



Implementing a User Interface」の一部を翻訳しました。


pdf版はこちら



ユーザーインターフェースの実装


 このセクションではAndroidの画面のユーザインタフェースを実装する基本的な方法を記載します。


画面を作る為の基本とXMLで画面を定義してコードからロードする方法、その他ユーザーインタフェースを取り扱う為に必要な色々なタスクについて解説します。





画面構成要素の階層

 Androidアプリケーションの基本的な機能単位としてandroid.app.Activityクラスのオブジェクトがあります。


アクティビティで様々なことをすることができますが、それ自体では画面上に何も表示しません。


アクティビティを画面上に存在させ、UIを設計するには、ViewやViewグループを使います。





Views

 Viewはandroid.view.Viewクラスのオブジェクトです。画面上の特定の矩形領域に対するレイアウトとコンテンツのプロパティを持ちます。


 Viewオブジェクトは画面領域の為に画面サイズ、レイアウト、描画、フォーカス変更、スクロール、キー/ジェスチャーを扱っています。





 Viewクラスはwidgets(インタラクティブに画面要素を描画するサブクラスを実装した集合)用の基本クラスを供給します。


 Widgetsは測定と描画を処理するので、より早くUIを構築することができます。


 利用できるインターフェースには、Text、EditText、InputMethod、MovementMethod、Button、RadioButton、Checkbox、ScrollViewがなどがあります。





Viewgroups

 Viewgroupsはandroid.view.Viewgroupクラスのオブジェクトです。


その名前が示すようにViewgroupsはViewとViewgroup配下のセットを含み、管理するための機能を機能を持つ特別なViewオブジェクトです。


 ViewgroupsはストラクチャをUIに追加し、一つの実体と呼ぶことのできる複雑な画面要素を構成します。


 Viewgroupクラスはレイアウト(一般的な画面レイアウトを提供するサブクラスのセット)の基本クラスを供給し、Viewのセットを構築する方法を提供します。





UIのツリー構造

 Androidプラットホームでは、下記の図で示すようにViewとViewgroupノードのツリーを使っているアクティビティのUIを定義します。ツリーは単純にも複雑にも好きなように作成することができ、あらかじめ定義されたwidgetsとレイアウト、自分でカスタマイズしたviewタイプを使って構成することができます。


f:id:bs-android:20090218163101p:image


 画面にレンダリングしてツリーに関連付けるには、アクティビティで、setContentView()メソッドを呼び、


ルートノードオブジェクトへの参照を渡します。


 一旦Androidシステムがルートノードオブジェクトへの参照を持てば、Androidシステムはノードをダイレクトに操作し、画面の消去、測定、描画を行うことができます。


 アクティビティがアクティブになり、フォーカスを受け取った時、システムはアクティビティに通知し、ルートノードにツリーを測定、描画するように要求を出します。ルートノードは子ノードの描画を要求します。(描画要求を受け取った時、ツリーの各viewgroupのノードは自分の直下の子ノードに対して描画要求する義務があります。)





 上記のように各viewgroupは、利用できるスペースを測定する責任を持ち、子ノードを配置し、各子ノードにレンダリングさせるためににDraw()を呼びます。


 子ノードは親ノードのサイズと位置を要求するかもしれませんが、親オブジェクトが、各子ノードのサイズと位置を最終決定します





子ノードの位置とサイズの指定方法

 すべてのViewgroupクラスは、ViewGroup.LayoutParamsを拡張した入れ子になったクラスを使用します。このサブクラスは子ノードのサイズと位置を定義するプロパティを含んでおり、Viewgroupクラスのプロパティに割り当てられます。


f:id:bs-android:20090218163349p:image





 LayoutParamsサブクラスには値を設定する為に各々の文法があるので注意が必要です。各子要素は、親ノードにふさわしいLayoutParamsを定義しなければなりません。


 しかし、子ノードに異なるLayoutParamsを定義することもできます。





 サイズを合わせるのに頻繁に使うのは、コンテンツのサイズから計算するか、親オブジェクトのサイズまでオブジェクトのサイズを大きくすることを許可する方法です。(訳注:パラメータ指定で親オブジェクトのサイズに合わせることが出来る。)





一般的なレイアウトオブジェクト

 以下は、アプリケーションで使う最も一般的なViewgroupsです。


各タイプについての基本的な情報を解説しています。


(詳細については各項目のリンクされたページを参照してください。)





FrameLayout

 FrameLayoutは、最も簡単なレイアウトオブジェクトです。


FrameLayoutは、空白の、予約された空間としてスクリーン上に用意され、画像などの一つのオブジェクトを入れることができます。


 すべての子要素はスクリーンの左上に配置されます。FrameLayoutでは子要素の位置を指定することはできません。


 子要素は、以前のオブジェクトの上に上書きし、(新しいオブジェクトが透明でなければ)以前のオブジェクトを部分的に、あるいは全体的に覆い隠すことになります。





LinearLayout

 LinearLayoutは、一つの方向にすべての子要素を配置します。


その方向は-垂直または水平があり、LinearLayoutに設定したプロパティによって決まります。


全ての子要素は次々にスタックされ、垂直のリストはどれだけ横幅が広くても、行ごとに一つだけ子要素を持つことになり、水平のリストは高さ(子要素の中で最も長い縦幅+パディング)をもつ一つだけの行を持ちます。


 LinearLayoutは子要素の間のマージンや、重力(子要素のright、center、leftの属性)も考慮します。





 子要素はweight値を指定し、残りのスペースは宣言されたweightの割合で子要素に割り当てられます。


 デフォルトのweightはゼロです。


 例えば3つのテキストボックスがあって、そのうち2つはweightを"1"で宣言している場合、"1"で宣言したテキストボックスは余白のスペースをいっぱいにするために等しく拡張されますが、残りのテキストボックスは拡張されません。





 下図の2つのフォームは、一組の要素(ボタン、ラベル、テキストボックス)をもつLinearLayoutを表しています。


 うまくパディングを調節するために両方ともパディング値を持っています。これらのテキストボックスの幅はFILL_PARENTに設定されています。(その他の要素はWRAP_CONTENTに設定)


重力(gravity)はデフォルトの左に設定されています。


左側のフォームはweight値が設定されていません(デフォルトの0)。


 一方、右側のフォームはCommentsのテキストボックスのweightに"1"が設定されています。


Nameのテキストボックスにも"1"が設定されたら、NameとCommentsのテキストボックスは同じ高さになります。


f:id:bs-android:20090218163847p:image





ヒント:バランスのとれたレイアウトの画面を作るには、fill_parent属性のコンテナオブジェクトを作成し、子要素にゼロの高さ、または幅を割り当て、各要素が取るべき画面の割合に従った相対的なweight値を各子要素に割り当てます。





 水平のLinearLayoutでは、アイテムはテキストのベースライン{最初のリスト要素の最初のライン(一番上、一番左を基準の線とみなす)}の位置に整列されます。


 これはフォーム要素を目で追う時に隣のテキストを読むために視線が上がったり下がったりしないですむようにするためです。XMLのレイアウトで android:baselineAligned="false" を設定することによって取り消すこともできます。





TableLayout

 TableLayoutは行と列に子要素を配置します。TableLayoutはいくつかのTableRowオブジェクトから成りたっています。


 各々が列(以下に説明されるように他の子要素を持つこともできます)を定義します。


 TableLayoutコンテナは、行、列、セルの境界線は表示しません。各列はゼロ以上のセルを持ちます。


(各セルは一つのViewオブジェクトを持つことができます。)


 テーブルは最も多くのセルを持つ行と同じだけの列を持ち、空のままのセルを持つことができます。


セルはHTMLでできるように列全体に広げるようなことはできません。(訳注:tableタグのcolspan属性のようなことはできない。)


 以下のイメージは、点線で表示されている目に見えないセルの境界線としてテーブルレイアウトを示しています。


f:id:bs-android:20090218164232p:image





 列を隠すこともでき、その列が残り画面スペースを埋めるように指定することができます。


また、テーブルが画面に合うように強制的にその行を縮めるように指定することもできます。


詳細は、このクラスについてのドキュメントを参照してください。





AbsoluteLayout

 AbsoluteLayoutでは、子要素を画面に表示する正確なx/y座標を指定することができます。(0,0)は左上で、右あるいは下に動くことで値が増加します。


 マージンはサポートされておらず、要素が重なることは(お勧めできないが)許容されます。


 融通が利かず、異なるデバイスの画面表示でうまく機能しない為、正当な理由がない限り、通常AbsoluteLayoutを使うことはお勧めできません。





RelativeLayout

 RelativeLayoutでは、子要素にお互い(IDによる指定)の、あるいは親要素との相対的な位置を指定します。


 右端に2つの要素を並べたり、要素の下に要素を置いたり、画面の中央に配置することができます。


 要素は与えられた順序で描画されるので、最初の要素が画面の中央にあるなら、その要素に対して並べられている他の要素は画面の中央と相対的に並べられることになります。


 このレイアウトを指定する為にXMLを使う場合、参照される(基準となる)要素は、それが参照される前にリストされていなければなりません。





 以下の図は目に見える要素と見えない要素を相対的に配置している例を解説しています。


 ルートの画面のレイアウトオブジェクトはRelativeLayoutオブジェクトを使用しています。


f:id:bs-android:20090218164419p:image





 この図は画面構成要素のクラス名とそれぞれのプロパティのリストを表しています。


 これらのプロパティのいくつかは要素によって直接サポートされ、いくつかはLayoutParamsメンバーによってサポートされます(画面のすべての要素のためのRelativeLayoutサブクラスです。なぜなら全ての要素はRelativeLayout親オブジェクトの子要素だからです。)。


 RelativeLayoutパラメータにはwidth、height、below、alignTop、toLeft、padding、marginLeftがあります。 これらのパラメータのいくつかは他の子要素に対する相対的な値をサポートしていることに注意してください。toLeft、alignTop、belowプロパティは、それぞれ、左(toLeft)、上(alignTop)、下(below)にあるオブジェクトを示します。





重要なViewグループのサマリー

 これらのオブジェクトはすべて子UI要素を持ちます。


 いくつかは目に見えるUIを提供しますが、いくつかは子レイアウトを処理するだけです。




















Class説明
AbsoluteLayout正確な目盛(例えばピクセル)において親オブジェクトに対する相対的な子オブジェクトの位置を指定することができます。
FrameLayout一つのオブジェクトを表示するViewフレームとして振舞うレイアウトです。
Galleryリストからイメージを水平スクロール表示させます。
GridViewm行とn列のスクロールするグリッドを示します。
LinearLayout水平あるいは垂直の列に子要素を配置するレイアウトです。ウインドウの長さがスクリーンの長さを上回る場合は、スクロールバーを生成します。
ListViewスクロールする1列のリストを表示します。
RelativeLayoutお互いの要素の相対的な指定(子Bの左へ子等ど)、親要素との相対的な指定(親のトップに整列する等)を用いて、子オブジェクトの位置を指定することができます。
ScrollView要素を垂直スクロールさせる列です。
Spinner1行のテキストボックスに、リストから一度に一つのアイテムを表示します。水平、または、垂直にスクロールすることができる1列のリストボックスのようなものです。
SurfaceView描画専用のsurfaceへの直接アクセスを提供します。surfaceの上のレイヤーになる子Viewを持つことができますが、widgetsを使うよりも、ピクセルで描画する必要があるアプリケーションで使用される事を目的としています。
TabHostタブのクリックを監視して、アプリケーションが画面を変更するのを可能にするタブ選択リストを提供します。
TableLayout任意の数の行と列を持つ表のレイアウトです。各セルは任意のwidgetを持つ事が出来ます。横列は最大の縦列に合わせてリサイズされます。セルの境界線はありません。
ViewFlipper1列のテキストボックスに1つのアイテムを表示するリストです。スライドショーのように、時間間隔を設定してアイテム表示を入れ替えることが出来ます。
ViewSwitcherViewFlipperと同様のものです。





2009年2月14日土曜日



f:id:bs-android:20090215001008p:image


タイトルの通り、東京恵比寿でAndroidのセミナーを開催いたします。


申し込みフォーム


詳細は以下の通りです。



・日程
 ・2009/2/27(金)
  ・開催時間
   19:00~20:50
  ・受付時間
   18:30~19:00

・場所
 恵比寿スバルビル会議室407号室
 http://www.ebis303.com/ebisconference/index.html
 ・地図
  http://www.ebis303.com/ebisconference/access.html

・講演者(敬称略)
 ・日本Androidの会 事務局長
  SIPropプロジェクト 代表
  今村謙之

 ・日本Androidの会 関西支部長
  株式会社ブリリアントサービス代表取締役
  杉本礼彦

 ・日本Androidの会 組み込みWGリーダー
  株式会社ブリリアントサービス 技術部研究開発課Android担当リーダ
  近藤昭雄

・内容
 ※敬称略
 ・「Androidと日本の携帯のこれから」 杉本礼彦
 ・「Androidによる世界戦略」 今村謙之
 ・「Androidをカスタマイズする方法」 近藤昭雄
  参加特典DVDの環境を使ってAndroidをカスタマイズしてコンパイルし
  Android Dev Phone 1にバイナリを焼くまでを実演します。

・定員
 30名

・参加費用
 15000円
 ※銀行振り込みになります。
  参加のご連絡後に振込先の口座を折り返し連絡させていただきます。
  領収書の発行も可能です。

・参加特典
 ・オリジナルDVDをプレゼント
  以下の内容を収録する予定です。
  ・開発手順
  ・Android Dev Phone 1
   ・購入手順
   ・アクティベーションの方法
  ・開発環境
  ・当日のセミナー資料
 ※内容に多少の変更がある可能性があります。

・主催
 株式会社ブリリアントサービス

定員30名を超えてしまった場合は抽選とさせていただきます。


申込みの締め切りは2009/2/23までです。


※銀行振り込みが2009/2/26までに完了するようにお願いいたします。


セミナー終了後に懇親会を予定しています。


申し込みフォームに参加可否をご記入ください。





2009/2/27(金)にAndroidセミナーを開催します



f:id:bs-android:20090215001008p:image


タイトルの通り、東京恵比寿でAndroidのセミナーを開催いたします。


申し込みフォーム


詳細は以下の通りです。



・日程
 ・2009/2/27(金)
  ・開催時間
   19:00~20:50
  ・受付時間
   18:30~19:00

・場所
 恵比寿スバルビル会議室407号室
 http://www.ebis303.com/ebisconference/index.html
 ・地図
  http://www.ebis303.com/ebisconference/access.html

・講演者(敬称略)
 ・日本Androidの会 事務局長
  SIPropプロジェクト 代表
  今村謙之

 ・日本Androidの会 関西支部長
  株式会社ブリリアントサービス代表取締役
  杉本礼彦

 ・日本Androidの会 組み込みWGリーダー
  株式会社ブリリアントサービス 技術部研究開発課Android担当リーダ
  近藤昭雄

・内容
 ※敬称略
 ・「Androidと日本の携帯のこれから」 杉本礼彦
 ・「Androidによる世界戦略」 今村謙之
 ・「Androidをカスタマイズする方法」 近藤昭雄
  参加特典DVDの環境を使ってAndroidをカスタマイズしてコンパイルし
  Android Dev Phone 1にバイナリを焼くまでを実演します。

・定員
 30名

・参加費用
 15000円
 ※銀行振り込みになります。
  参加のご連絡後に振込先の口座を折り返し連絡させていただきます。
  領収書の発行も可能です。

・参加特典
 ・オリジナルDVDをプレゼント
  以下の内容を収録する予定です。
  ・開発手順
  ・Android Dev Phone 1
   ・購入手順
   ・アクティベーションの方法
  ・開発環境
  ・当日のセミナー資料
 ※内容に多少の変更がある可能性があります。

・主催
 株式会社ブリリアントサービス

定員30名を超えてしまった場合は抽選とさせていただきます。


申込みの締め切りは2009/2/23までです。


※銀行振り込みが2009/2/26までに完了するようにお願いいたします。


セミナー終了後に懇親会を予定しています。


申し込みフォームに参加可否をご記入ください。





2009年2月4日水曜日



f:id:bs-android:20090122021549g:image


2月21日の大阪の日本Androidの会のハンズオンセミナーの参加者受付フォームが準備できましたのでご連絡いたします。


お申込みはこちらまで


受付時間

14:00~14:30


開催時間

14:30~18:00


申込み期限

2月18日(水)


参加費

無料


講演内容

まだ調整中ですが、随時更新されていく予定です。





定員30名までですので、早期に締め切る場合があります。


参加をご希望の方はお早めにお申込みくださいませ。


追記

1/21のエントリで、会場提供していただく企業様を株式会社パソナユース様と記述しておりましたが、株式会社パソナテック様の間違いです。


関係者の方々にはご迷惑をおかけして申し訳ありませんでした。





大阪の日本Androidの会のハンズオンセミナー受付開始



f:id:bs-android:20090122021549g:image


2月21日の大阪の日本Androidの会のハンズオンセミナーの参加者受付フォームが準備できましたのでご連絡いたします。


お申込みはこちらまで


受付時間

14:00~14:30


開催時間

14:30~18:00


申込み期限

2月18日(水)


参加費

無料


講演内容

まだ調整中ですが、随時更新されていく予定です。





定員30名までですので、早期に締め切る場合があります。


参加をご希望の方はお早めにお申込みくださいませ。


追記

1/21のエントリで、会場提供していただく企業様を株式会社パソナユース様と記述しておりましたが、株式会社パソナテック様の間違いです。


関係者の方々にはご迷惑をおかけして申し訳ありませんでした。





2009年2月3日火曜日



f:id:bs-android:20090204001327p:image


タイトルの通り2009/2/3時点のDDMSの使用方法のドキュメントを邦訳しました。


忠実に翻訳するよりもわかりやすさを優先しています。


デバッグする時に活躍すると思いますので、是非ご活用ください。


翻訳が間違っている部分がある可能性もありますが、その際はご指摘いただけたら幸いです。


PDF版も用意しています。



DDMSツールの使用について


 Androidが搭載するデバッギングツールであるDalvik Debug Monitor Service(DDMS)は、ポート-フォワーディングサービス、スクリーンキャプチャー、デバイス上のスレッドとヒープ情報、logcat、プロセス、そして無線状態の情報、疑似音声着信と疑似SMS、疑似位置情報データなどを提供します。


このページは、DDMS機能に関する概要を提供します。ただしすべての仕様とスペックを完全に記載するわけではありません。





 DDMSは、SDKのtools/ ディレクトリに入っています。コマンドプロンプトからsdkのtoolsディレクトリに入り、"ddms"(⇒Mac/Linuxでは"./ddms")と入力します。DDMSはエミュレーターとデバイスの両方で動作します。両方とも同時に実行、接続されている場合はエミュレーターをデフォルトで選択します。


DDMSはどのように動作するのか


 DDMSはデバイス上で動作するアプリケーションとIDE間の接続の仲介を行います。


Android上のあらゆるアプリケーションは各自のプロセスで動作し、各自のバーチャルマシン(VM)のホストをつとめます。そして、各プロセスは異なるポートでデバッガーを監視をします。





 DDMSは開始時にadbに接続し、デバイス・モニタリング・サービス(デバイス監視サービス)を起動します。


デバイス・モニタリング・サービスはデバイスがいつ接続、切断されたのかをDDMSに通知します。


デバイスが接続されるとき、VMモニタリングサービス(VM監視サービス)がadbとDDMSの間で作成生成され、デバイス上のVMがいつ開始、終了したのかをDDMSに通知します。


 VMが走りだすと、DDMSはadbを経由してVMのプロセスID(pid)を取得し、デバイスのadbデーモン(adbd)を通して、VMのデバッガーへのコネクションをオープンし、カスタムのワイヤープロトコルを使って、VMと通信することができます。





 デバイスのVM毎に、DDMSはデバッガーを監視するポートをオープンします。


DDMSは最初のVMをポート8600に、次のVMを8601に、その次に・・という具合に、デバッガーを監視します。


 デバッガーがこれらのポートの一つと接続した時、すべてのトラフィックがデバッガーと、関連付けられたVMに転送されます。どのようなリモートデバッグセッションでも同様にデバッグをすることが可能です。





 DDMSは別のローカルポート、すなわち、DDMS「ベースポート」(デフォルトで、8700)、もオープンします。


「ベースポート」は、デバッガーの監視も行います。デバッガーがこのベースポートに接続すると、すべてのトラフィックがDDMSで現在選択されているVMへ転送されます。このポートはあなたのデバッガが接続する主なポートです。





 DDMSのポート-フォワーディングの詳細については、Configuring your IDE to attach to port 8700 for debuggingを参照してください。





ヒント: "File > Preferences"で、DDMSの設定を行うことができます。


     設定は、「$HOME/.ddmsrc」に保存されます。


Dalvikに関する既知のデバッグ問題


他のVMと同じように、Dalvik VMでアプリケーションをデバッグできなければなりませんが、同期実行しているソースコードを一度ステップアウトすると、現在行が一気に関数の最後の行へジャンプしてしまうかもしれません。


左ペイン


f:id:bs-android:20090204001326p:image


デバッグモニタの左側には、現在見つかっている各エミュレータ/デバイスがVMのリストとともに表示されます。VMは、自身がホストしているアプリケーションのパッケージ名によって識別されます。





 デバッグしたいアクティビティを走らせているVMへアタッチする為にこのリストを使用します。


リスト表示されているのVMの隣(一番右のカラム)に、「デバッガーパス-スルー」ポートがあります。


デバッガーがリストアップされたポートに接続されている場合、デバイスに対応するVMに接続されます。


しかし、DDMSを使うとき、DDMSは現在選択されたVMにポート8700にある全てのトラフィックを転送するので、ポート8700に接続しさえすればよいです。(注意:リストから選択したVMはポート8700を含みます)


このように、VMを切り替えるたびに、デバッガーのポートを再設定する必要はありません。





 デバイスでアプリケーションが実行され、waitForDebugger()が呼ばれると(または、開発者オプションでこのオプションを選んでいる時)、デバッガーがVMへアタッチするのを待つ間、赤いアイコンがクライアント名の横に表示されます。デバッガーが接続されると緑のアイコンになります。





 消し線の引かれたバグアイコンが表示されたら、VMのローカルポートをオープンすることができずに


デバッガーとVMを関連付けられなかったこと意味します。


デバイス上の全てのVMに対してバグアイコンが表示されたら、それは恐らく別のDDMSのインスタンス(Eclipse pluginを含む)を走らせているからだと思われます。





 アプリケーションパッケージの代わりに疑問符が表示されたら、DDMSがadbからアプリケーションpidを受け取ることができたが、VMプロセスで接続が失敗したことを意味します。もしそうなったらDDMSを再起動してみてください。





右ペイン


ウィンドウの右側のデバッグモニタは、便利な情報とクールなツール群のタブを提供します。


Infoタブ

f:id:bs-android:20090204001328p:image


このタブは、選択中のVMのプロセスID、パッケージ名、VMバージョンなどの一般的な情報がいくつか表示します。


Threadsタブ

f:id:bs-android:20090204001329p:image


スレッドビューではターゲットとなるVMプロセス上で動作しているスレッドのリストを持っています。


ワイヤー上に送られるデータの量を減らすために、ツールバーの「スレッド」ボタンをトグルすることで、スレッド情報を常に更新するかどうかを切り替えることが出来ます。このトグル設定は、VMごとに保持されます。


このタブは以下の情報を含んでいます。


・ID


 DalvikVMに割り当てられたユニークなスレッドID。3からはじまる奇数になっています。


・Tid


 プロセスのメインスレッドのためのLinuxのスレッドID。これはプロセスIDにマッチしています。


・Status


 以下はスレッドのステータスの種類です。(デーモンスレッドは、アスタリスク(*)で示されます。)


 ・running:アプリケーション実行中


 ・sleeping:Thread.sleep()をコールしてスリープ中


 ・monitor:モニターロック待ち


 ・wait:Object.wait()をコールしてオブジェクト待ち


 ・native:ネイティブコード実行中


 ・vmwait:VMリソース待ち


 ・zombie:死にゆくスレッド


 ・init:スレッド初期化中(参照すべきでない)


 ・starting:スレッドスタート処理中(参照すべきでない)


・utime


 このスレッドがユーザコードを実行した累積時間。これはLinux直下のプロセスのみ利用可能です。


・stime


 このスレッドがシステムコードを実行した累積時間。これはLinux直下のプロセスのみ利用可能です。


・Name


 スレッドの名前





スレッド開始時に「ID」と「名前」が設定されます。残りのフィールドは、定期的に更新されます。(デフォルトは4秒毎)


VM Heapタブ


f:id:bs-android:20090204001330p:image


ガーベージコレクションの間に更新されたヒープの統計データを表示します。


VMを選択した時にVM Heap表示がヒープの更新ができない場合は、「Show heap updates」ボタン(左上のツールバーにあります)を押してみてください。VM Heap表示のCause GCボタンを押してガーベージコレクションを実行するとヒープのステータスを更新できます。


Allocation Trackerタブ


f:id:bs-android:20090204001331p:image


このビューでは各々のバーチャルマシンのメモリアロケーションを追跡することができます。


Emulator Controlタブ


f:id:bs-android:20090204001332p:image


これらのコントロールで特別なデバイスの状態とアクティビティをシミュレートすることができます。


以下の機能を含んでいます:


・Telephony Status(電話通信ステータス)


電話のVoiceとDataプラン(ホーム、ローミング、サーチング、その他)の状態を変更できます。そして、異なる種類のネットワークのスピードと待ち時間(GPRS、EDGE、UTMS、その他)をシミュレーションすることができます。


・Telephony Actions


 エミュレーターに電話発信とSMSメッセージを送信することができます。


・Location Controls


GPSマッピングのような場所認識操作を活用することができるように、偽のロケーションデータをエミュレーターに送信することが出来ます。


ロケーションコントロールを使うにはAndroidエミュレーターでアプリケーションを起動してDDMSを起動します。エミュレーターのControlsタブをクリックし、Location Controlsが表示されるまで下にスクロールしてください。


ここから、以下の操作を行うことができます:


・経度/緯度座標のデバイスへの手動送信


f:id:bs-android:20090204003319p:image


 Manualタブを選択後、座標フォーマットを選択し、フィールドを記入して「Send」を押して座標情報を送信します。





・プレイバック用ルートが記述されているGPXファイルの使用


f:id:bs-android:20090204003317p:image


 GPXタブを選択後、"Load GPX"ボタンを押してをGPXファイルをロードします。


 ロードが完了したら、Playボタンを押すとルートのプレイバック情報がロケーション認識のあるアプリケーションに送られます。


 GPXからプレイバックを実行する時、DDMSのパネルからPauseとSkipボタンを使ってプレイバックのスピードを調節することができます。MSは"waypoints"(<wpt>:最初のテーブル)と"tracks"(<trk>:2番目のテーブルにある複数のセグメントをサポートしたもの、<trkseg>:単純に連結されている)の両方を解析します。tracksのみ再生することが可能です。


 再生させようとしているtrackを選択している間、リストの最初にある"waypoint"をクリックすると、デバイスへその座標が送信されます。





・連続プレイバックにKMLファイルを使用する


f:id:bs-android:20090204003318p:image


 KMLタブをクリックして、ファイルをロードさせます。


 ロードが完了したら、Playボタンを押すとロケーション認識のあるアプリケーションに座標が送信されます。


 KMLファイルを使用する際に、<coordinates>エレメントとして解析されます。


 経度、緯度、高度の値が一つのセットになっている必要があります。


 例:



 <coordinates>-122.084143,37.421972,4</coordinates>

 ファイルには複数の<Placemark>要素や<coordinates>要素が含まれるかもしれません。


そのような場合はplacemarksのコレクションはトラックとして加えられます。


DDMSは1秒につき1つのplacemarkをデバイスに送信します。


 適当なKMLファイルを生成するにはGoogle Earthを使う方法があります。


 Google Earthで適当な地点を右クリックすると、左にKmlに設定する保存フォーマットと"Save place as..."が表示されます。



注:DDMSは、以下のメソッドで作成されるルートをサポートしていません。


  <MultiGeometry><LineString>lat1、long1、lat2、long2、...</LineString></MultiGeometry>


  <Placemark>中の<TimeStamp>ノードのサポートはしていません。


  将来のリリースでは一つの座標要素内での時間とメソッドをサポートするかもしれません。



 擬似座標データのその他のメソッドは、


Location-based Service APIsを参照してください。


File Explorer


f:id:bs-android:20090204001333p:image


File Explorerを用いれば、デバイスのファイルシステムを見ることができ、ファイルを置いたり取り出したりする基本的な管理を行うことができます。





これによって、adbのpushやpullコマンドをの使用しないでGUIによる操作が可能です。


ディレクトリをデバイスにドラッグ&ドロップすることはできますが、ディレクトリをドラッグアウトすることはできません。


ファイルをデバイスからコピーするには、ファイルを選んで、ツールバーのDeviceボタンからPull Fileをクリックしてください。


ファイルを削除するには、ツールバーでDeleteボタンを使ってください。





エミュレーターでSDカードイメージを使うにはイメージを作成するためにmksdcardコマンドを使う必要があります。そして、エミュレーターをブートする時にイメージをマウントさせます。


例えば、以下のようにして/toolsディレクトリから実行します。



$ mksdcard 1024M ./img
$ emulator -sdcard ./img


エミュレーターが動作している間、DDMS File Explorerでsdcardディレクトリに読込み及び書込みを行うことができます。しかし、追加したファイルが、自動的には表示されないかもしれません。


例えば、MP3ファイルをsdcardに追加した時、エミュレーターを再起動するまではメディアプレーヤーはそれらを認識しません。 (コマンドラインからエミュレーターを再起動させる際、必ずもう一度sdcardをマウントさせるようにしてください。)





SDカードイメージの作成方法の詳細については、


Other Toolsを参照してください。


Screen Capture


f:id:bs-android:20090204001334p:image


メニューバーにある Device > Screen capture...を選択する、あるいは、CTRL-Sを押すことによって、デバイスまたはエミュレーターのスクリーン画像をキャプチャーすることができます。


Exploring Processes


f:id:bs-android:20090204001335p:image


メニューバーにある Device > Show process status...を選択すると、選択したVMの"ps -x"出力を見ることができます。


Cause a GC to Occur


f:id:bs-android:20090204001336p:image


ツールバーのゴミ箱ボタンを押すと、ガーベージコレクションを発生させることができます。


Running Dumpsys and Dumpstate on the Device (logcat)


f:id:bs-android:20090204001337p:image


・Dalvikからdumpsys(logcat)を実行させるには、メニューバーから Device > Run logcat...を選択してください。


・Dalvikからdumpstateを実行させるには、メニューバーで Device > Dump device state...を選択してください。


Examine Radio State(無線状態の検査)


デフォルトで、無線状態は標準のlogcatでは出力されません(多くの情報が出る為)。


無線情報を見るには、Device > Dump radio state...をクリックするか、Logging Radio Informationで記述されているように、logcatを実行してください。


Stop a Virtual Machine


Actions > Halt VM を選ぶと、バーチャルマシンを停止することができます。


このボタンを押すと、VMにSystem.exit(1) をコールするさせることになります。


Known issues with DDMS(DDMSの既知の問題)


DDMSには、以下の既知の制限があります:


デバッガーをつないで切断すると、ddmsはクライアントを落として再接続します。


するとVMはデバッガが消えてしまったと認識してしまいます。これは、そのうちFIXされるでしょう。



PDF版はこちらです。





AndroidのDDMSの使用方法のドキュメントを翻訳しました



f:id:bs-android:20090204001327p:image


タイトルの通り2009/2/3時点のDDMSの使用方法のドキュメントを邦訳しました。


忠実に翻訳するよりもわかりやすさを優先しています。


デバッグする時に活躍すると思いますので、是非ご活用ください。


翻訳が間違っている部分がある可能性もありますが、その際はご指摘いただけたら幸いです。


PDF版も用意しています。



DDMSツールの使用について


 Androidが搭載するデバッギングツールであるDalvik Debug Monitor Service(DDMS)は、ポート-フォワーディングサービス、スクリーンキャプチャー、デバイス上のスレッドとヒープ情報、logcat、プロセス、そして無線状態の情報、疑似音声着信と疑似SMS、疑似位置情報データなどを提供します。


このページは、DDMS機能に関する概要を提供します。ただしすべての仕様とスペックを完全に記載するわけではありません。





 DDMSは、SDKのtools/ ディレクトリに入っています。コマンドプロンプトからsdkのtoolsディレクトリに入り、"ddms"(⇒Mac/Linuxでは"./ddms")と入力します。DDMSはエミュレーターとデバイスの両方で動作します。両方とも同時に実行、接続されている場合はエミュレーターをデフォルトで選択します。


DDMSはどのように動作するのか


 DDMSはデバイス上で動作するアプリケーションとIDE間の接続の仲介を行います。


Android上のあらゆるアプリケーションは各自のプロセスで動作し、各自のバーチャルマシン(VM)のホストをつとめます。そして、各プロセスは異なるポートでデバッガーを監視をします。





 DDMSは開始時にadbに接続し、デバイス・モニタリング・サービス(デバイス監視サービス)を起動します。


デバイス・モニタリング・サービスはデバイスがいつ接続、切断されたのかをDDMSに通知します。


デバイスが接続されるとき、VMモニタリングサービス(VM監視サービス)がadbとDDMSの間で作成生成され、デバイス上のVMがいつ開始、終了したのかをDDMSに通知します。


 VMが走りだすと、DDMSはadbを経由してVMのプロセスID(pid)を取得し、デバイスのadbデーモン(adbd)を通して、VMのデバッガーへのコネクションをオープンし、カスタムのワイヤープロトコルを使って、VMと通信することができます。





 デバイスのVM毎に、DDMSはデバッガーを監視するポートをオープンします。


DDMSは最初のVMをポート8600に、次のVMを8601に、その次に・・という具合に、デバッガーを監視します。


 デバッガーがこれらのポートの一つと接続した時、すべてのトラフィックがデバッガーと、関連付けられたVMに転送されます。どのようなリモートデバッグセッションでも同様にデバッグをすることが可能です。





 DDMSは別のローカルポート、すなわち、DDMS「ベースポート」(デフォルトで、8700)、もオープンします。


「ベースポート」は、デバッガーの監視も行います。デバッガーがこのベースポートに接続すると、すべてのトラフィックがDDMSで現在選択されているVMへ転送されます。このポートはあなたのデバッガが接続する主なポートです。





 DDMSのポート-フォワーディングの詳細については、Configuring your IDE to attach to port 8700 for debuggingを参照してください。





ヒント: "File > Preferences"で、DDMSの設定を行うことができます。


     設定は、「$HOME/.ddmsrc」に保存されます。


Dalvikに関する既知のデバッグ問題


他のVMと同じように、Dalvik VMでアプリケーションをデバッグできなければなりませんが、同期実行しているソースコードを一度ステップアウトすると、現在行が一気に関数の最後の行へジャンプしてしまうかもしれません。


左ペイン


f:id:bs-android:20090204001326p:image


デバッグモニタの左側には、現在見つかっている各エミュレータ/デバイスがVMのリストとともに表示されます。VMは、自身がホストしているアプリケーションのパッケージ名によって識別されます。





 デバッグしたいアクティビティを走らせているVMへアタッチする為にこのリストを使用します。


リスト表示されているのVMの隣(一番右のカラム)に、「デバッガーパス-スルー」ポートがあります。


デバッガーがリストアップされたポートに接続されている場合、デバイスに対応するVMに接続されます。


しかし、DDMSを使うとき、DDMSは現在選択されたVMにポート8700にある全てのトラフィックを転送するので、ポート8700に接続しさえすればよいです。(注意:リストから選択したVMはポート8700を含みます)


このように、VMを切り替えるたびに、デバッガーのポートを再設定する必要はありません。





 デバイスでアプリケーションが実行され、waitForDebugger()が呼ばれると(または、開発者オプションでこのオプションを選んでいる時)、デバッガーがVMへアタッチするのを待つ間、赤いアイコンがクライアント名の横に表示されます。デバッガーが接続されると緑のアイコンになります。





 消し線の引かれたバグアイコンが表示されたら、VMのローカルポートをオープンすることができずに


デバッガーとVMを関連付けられなかったこと意味します。


デバイス上の全てのVMに対してバグアイコンが表示されたら、それは恐らく別のDDMSのインスタンス(Eclipse pluginを含む)を走らせているからだと思われます。





 アプリケーションパッケージの代わりに疑問符が表示されたら、DDMSがadbからアプリケーションpidを受け取ることができたが、VMプロセスで接続が失敗したことを意味します。もしそうなったらDDMSを再起動してみてください。





右ペイン


ウィンドウの右側のデバッグモニタは、便利な情報とクールなツール群のタブを提供します。


Infoタブ

f:id:bs-android:20090204001328p:image


このタブは、選択中のVMのプロセスID、パッケージ名、VMバージョンなどの一般的な情報がいくつか表示します。


Threadsタブ

f:id:bs-android:20090204001329p:image


スレッドビューではターゲットとなるVMプロセス上で動作しているスレッドのリストを持っています。


ワイヤー上に送られるデータの量を減らすために、ツールバーの「スレッド」ボタンをトグルすることで、スレッド情報を常に更新するかどうかを切り替えることが出来ます。このトグル設定は、VMごとに保持されます。


このタブは以下の情報を含んでいます。


・ID


 DalvikVMに割り当てられたユニークなスレッドID。3からはじまる奇数になっています。


・Tid


 プロセスのメインスレッドのためのLinuxのスレッドID。これはプロセスIDにマッチしています。


・Status


 以下はスレッドのステータスの種類です。(デーモンスレッドは、アスタリスク(*)で示されます。)


 ・running:アプリケーション実行中


 ・sleeping:Thread.sleep()をコールしてスリープ中


 ・monitor:モニターロック待ち


 ・wait:Object.wait()をコールしてオブジェクト待ち


 ・native:ネイティブコード実行中


 ・vmwait:VMリソース待ち


 ・zombie:死にゆくスレッド


 ・init:スレッド初期化中(参照すべきでない)


 ・starting:スレッドスタート処理中(参照すべきでない)


・utime


 このスレッドがユーザコードを実行した累積時間。これはLinux直下のプロセスのみ利用可能です。


・stime


 このスレッドがシステムコードを実行した累積時間。これはLinux直下のプロセスのみ利用可能です。


・Name


 スレッドの名前





スレッド開始時に「ID」と「名前」が設定されます。残りのフィールドは、定期的に更新されます。(デフォルトは4秒毎)


VM Heapタブ


f:id:bs-android:20090204001330p:image


ガーベージコレクションの間に更新されたヒープの統計データを表示します。


VMを選択した時にVM Heap表示がヒープの更新ができない場合は、「Show heap updates」ボタン(左上のツールバーにあります)を押してみてください。VM Heap表示のCause GCボタンを押してガーベージコレクションを実行するとヒープのステータスを更新できます。


Allocation Trackerタブ


f:id:bs-android:20090204001331p:image


このビューでは各々のバーチャルマシンのメモリアロケーションを追跡することができます。


Emulator Controlタブ


f:id:bs-android:20090204001332p:image


これらのコントロールで特別なデバイスの状態とアクティビティをシミュレートすることができます。


以下の機能を含んでいます:


・Telephony Status(電話通信ステータス)


電話のVoiceとDataプラン(ホーム、ローミング、サーチング、その他)の状態を変更できます。そして、異なる種類のネットワークのスピードと待ち時間(GPRS、EDGE、UTMS、その他)をシミュレーションすることができます。


・Telephony Actions


 エミュレーターに電話発信とSMSメッセージを送信することができます。


・Location Controls


GPSマッピングのような場所認識操作を活用することができるように、偽のロケーションデータをエミュレーターに送信することが出来ます。


ロケーションコントロールを使うにはAndroidエミュレーターでアプリケーションを起動してDDMSを起動します。エミュレーターのControlsタブをクリックし、Location Controlsが表示されるまで下にスクロールしてください。


ここから、以下の操作を行うことができます:


・経度/緯度座標のデバイスへの手動送信


f:id:bs-android:20090204003319p:image


 Manualタブを選択後、座標フォーマットを選択し、フィールドを記入して「Send」を押して座標情報を送信します。





・プレイバック用ルートが記述されているGPXファイルの使用


f:id:bs-android:20090204003317p:image


 GPXタブを選択後、"Load GPX"ボタンを押してをGPXファイルをロードします。


 ロードが完了したら、Playボタンを押すとルートのプレイバック情報がロケーション認識のあるアプリケーションに送られます。


 GPXからプレイバックを実行する時、DDMSのパネルからPauseとSkipボタンを使ってプレイバックのスピードを調節することができます。MSは"waypoints"(<wpt>:最初のテーブル)と"tracks"(<trk>:2番目のテーブルにある複数のセグメントをサポートしたもの、<trkseg>:単純に連結されている)の両方を解析します。tracksのみ再生することが可能です。


 再生させようとしているtrackを選択している間、リストの最初にある"waypoint"をクリックすると、デバイスへその座標が送信されます。





・連続プレイバックにKMLファイルを使用する


f:id:bs-android:20090204003318p:image


 KMLタブをクリックして、ファイルをロードさせます。


 ロードが完了したら、Playボタンを押すとロケーション認識のあるアプリケーションに座標が送信されます。


 KMLファイルを使用する際に、<coordinates>エレメントとして解析されます。


 経度、緯度、高度の値が一つのセットになっている必要があります。


 例:



 <coordinates>-122.084143,37.421972,4</coordinates>

 ファイルには複数の<Placemark>要素や<coordinates>要素が含まれるかもしれません。


そのような場合はplacemarksのコレクションはトラックとして加えられます。


DDMSは1秒につき1つのplacemarkをデバイスに送信します。


 適当なKMLファイルを生成するにはGoogle Earthを使う方法があります。


 Google Earthで適当な地点を右クリックすると、左にKmlに設定する保存フォーマットと"Save place as..."が表示されます。



注:DDMSは、以下のメソッドで作成されるルートをサポートしていません。


  <MultiGeometry><LineString>lat1、long1、lat2、long2、...</LineString></MultiGeometry>


  <Placemark>中の<TimeStamp>ノードのサポートはしていません。


  将来のリリースでは一つの座標要素内での時間とメソッドをサポートするかもしれません。



 擬似座標データのその他のメソッドは、


Location-based Service APIsを参照してください。


File Explorer


f:id:bs-android:20090204001333p:image


File Explorerを用いれば、デバイスのファイルシステムを見ることができ、ファイルを置いたり取り出したりする基本的な管理を行うことができます。





これによって、adbのpushやpullコマンドをの使用しないでGUIによる操作が可能です。


ディレクトリをデバイスにドラッグ&ドロップすることはできますが、ディレクトリをドラッグアウトすることはできません。


ファイルをデバイスからコピーするには、ファイルを選んで、ツールバーのDeviceボタンからPull Fileをクリックしてください。


ファイルを削除するには、ツールバーでDeleteボタンを使ってください。





エミュレーターでSDカードイメージを使うにはイメージを作成するためにmksdcardコマンドを使う必要があります。そして、エミュレーターをブートする時にイメージをマウントさせます。


例えば、以下のようにして/toolsディレクトリから実行します。



$ mksdcard 1024M ./img
$ emulator -sdcard ./img


エミュレーターが動作している間、DDMS File Explorerでsdcardディレクトリに読込み及び書込みを行うことができます。しかし、追加したファイルが、自動的には表示されないかもしれません。


例えば、MP3ファイルをsdcardに追加した時、エミュレーターを再起動するまではメディアプレーヤーはそれらを認識しません。 (コマンドラインからエミュレーターを再起動させる際、必ずもう一度sdcardをマウントさせるようにしてください。)





SDカードイメージの作成方法の詳細については、


Other Toolsを参照してください。


Screen Capture


f:id:bs-android:20090204001334p:image


メニューバーにある Device > Screen capture...を選択する、あるいは、CTRL-Sを押すことによって、デバイスまたはエミュレーターのスクリーン画像をキャプチャーすることができます。


Exploring Processes


f:id:bs-android:20090204001335p:image


メニューバーにある Device > Show process status...を選択すると、選択したVMの"ps -x"出力を見ることができます。


Cause a GC to Occur


f:id:bs-android:20090204001336p:image


ツールバーのゴミ箱ボタンを押すと、ガーベージコレクションを発生させることができます。


Running Dumpsys and Dumpstate on the Device (logcat)


f:id:bs-android:20090204001337p:image


・Dalvikからdumpsys(logcat)を実行させるには、メニューバーから Device > Run logcat...を選択してください。


・Dalvikからdumpstateを実行させるには、メニューバーで Device > Dump device state...を選択してください。


Examine Radio State(無線状態の検査)


デフォルトで、無線状態は標準のlogcatでは出力されません(多くの情報が出る為)。


無線情報を見るには、Device > Dump radio state...をクリックするか、Logging Radio Informationで記述されているように、logcatを実行してください。


Stop a Virtual Machine


Actions > Halt VM を選ぶと、バーチャルマシンを停止することができます。


このボタンを押すと、VMにSystem.exit(1) をコールするさせることになります。


Known issues with DDMS(DDMSの既知の問題)


DDMSには、以下の既知の制限があります:


デバッガーをつないで切断すると、ddmsはクライアントを落として再接続します。


するとVMはデバッガが消えてしまったと認識してしまいます。これは、そのうちFIXされるでしょう。



PDF版はこちらです。







2009/2/12(木)のデブサミ2009O-Oneディベート大会で、弊社近藤がディベータをやることになりました。


開催概要



新しいパラダイムにチャレンジしようとしているエンジニアにとって、景気が急速に悪化しつつある今は、むしろ大きなチャンス。そういった挑戦者が、業界有名人にディベートで戦いを挑み、会場拍手で勝敗を決定する「O-Oneディベート大会」特別編を開催します。今回はGoogleが提唱する新たな携帯端末開発環境「Android」をテーマに、モデレータに丸山不二夫氏を迎えて、今村謙之氏、木南英夫氏、近藤昭雄氏、林信行氏による熱い議論が繰り広げられます。皆さんもぜひご参加ください。


※本セッションは事前申込の必要はございません。どなたでも当日自由にご参加いただけます。



日時


17:40~18:30


場所


目黒雅叙園(東京・目黒)です。



View Larger Map


プログラム内容



O-One は、オブジェクト指向技術を中心としたソフトウェア工学/ソフトウェア科学に関する幅広い知識と実践力を磨くための相互研鑚の場を若手技術者に提供する、技術者参加型のイベントです。


今回は、Googleが提唱する新たな携帯端末開発環境「Android」をテーマに、モデレータに丸山不二夫氏を迎えて、業界の有名人達が真剣勝負でディベートする O-One特別編を開催します。勝敗は、参加者の皆さんの拍手により決定されます。ディベーターと観戦者が熱い議論で一緒に盛り上がる、そんな刺激的なイベントが皆さんを待っています。ぜひ奮ってご参加ください。



テーマ


「2010年にAndroidは10機種以上の家電製品で利用されている (仮テーマ)」


これをテーマにディベートします。


ご都合のよい方は是非お立ち寄りくださいませ。





Developers Summit 2009(デブサミ2009)のO-Oneディベート大会



2009/2/12(木)のデブサミ2009O-Oneディベート大会で、弊社近藤がディベータをやることになりました。


開催概要



新しいパラダイムにチャレンジしようとしているエンジニアにとって、景気が急速に悪化しつつある今は、むしろ大きなチャンス。そういった挑戦者が、業界有名人にディベートで戦いを挑み、会場拍手で勝敗を決定する「O-Oneディベート大会」特別編を開催します。今回はGoogleが提唱する新たな携帯端末開発環境「Android」をテーマに、モデレータに丸山不二夫氏を迎えて、今村謙之氏、木南英夫氏、近藤昭雄氏、林信行氏による熱い議論が繰り広げられます。皆さんもぜひご参加ください。


※本セッションは事前申込の必要はございません。どなたでも当日自由にご参加いただけます。



日時


17:40~18:30


場所


目黒雅叙園(東京・目黒)です。



View Larger Map


プログラム内容



O-One は、オブジェクト指向技術を中心としたソフトウェア工学/ソフトウェア科学に関する幅広い知識と実践力を磨くための相互研鑚の場を若手技術者に提供する、技術者参加型のイベントです。


今回は、Googleが提唱する新たな携帯端末開発環境「Android」をテーマに、モデレータに丸山不二夫氏を迎えて、業界の有名人達が真剣勝負でディベートする O-One特別編を開催します。勝敗は、参加者の皆さんの拍手により決定されます。ディベーターと観戦者が熱い議論で一緒に盛り上がる、そんな刺激的なイベントが皆さんを待っています。ぜひ奮ってご参加ください。



テーマ


「2010年にAndroidは10機種以上の家電製品で利用されている (仮テーマ)」


これをテーマにディベートします。


ご都合のよい方は是非お立ち寄りくださいませ。





Related Posts Plugin for WordPress, Blogger...