検索
連載

ブラウザや地図、ストリートビューの基、Intentとは?Androidで動く携帯Javaアプリ作成入門(3)(3/3 ページ)

本連載で、SDKとEclipseを使ってAndroidの携帯端末で動くJavaアプリを作成し、Android Market配布を目指しましょう

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

Editor Activityの実装

 起動される側のEditor Activityのソースコードです。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 13行目からonCreate()を実装しています。起動される側の特徴としては、19行目にあるgetIntent()で渡されたIntentを取得し、IntentからgetExtras()ですべての追加情報をBundleとして取り出しています。Bundleがnullではなかったら、EditTextに受け取った追加情報を設定しています。

 ボタンが押されたときの処理もクローズアップして詳しく見てみましょう。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 29行目でIntentを作成しています。今回は戻り先が決まっているので、デフォルトコンストラクタを使用しています。

 33行目で結果コードと付加情報を持つIntentを呼び出し元に返しています。

 34行目のfinish()は、現在のActivityを終了させるために呼び出します。これは前回のActivityのライフサイクルで触れたメソッドですね。

「Android Manifest Editor」でApplication NodesにActivityを追加

 2つのActivityを使うには、Application Nodesに設定する必要があります。AndroidManifest.xmlをEclipse上でダブルクリックすると、ADTの機能の1つ「Android Manifest Editor」で内容を編集できます。[Application]タブを選択して、[Application Nodes]に2つ目のActivityを追加します。

図6 ほかのActivityを実行した際の状態遷移
図6 Application NodesにActivityを追加したところ

 Activityの名前の先頭に「.」が付いています。このドットはカレントパッケージを表していて、あってもなくても構いません。

 なお、今回のアプリはパッケージが「com.example.android.dual」で、Activityはcom.example.android.dual.Mainクラスなので、指定はMainでも.Mainでも構いません。しかし、Activityがcom.example.android.dual.foo.Mainなら、指定は「com.example.android.dual.foo.Main」か「.foo.Main」でなければならず、「foo.Main」ではエラーになります(サブパッケージ指定ではなくfooパッケージのMainを指定していることになるため)。

Intentを使ってWebブラウザや地図、ストリートビュー

 Dual Activityを動作させてみて、コードを併せ読むことで、画面遷移と情報の受け渡しの方法が理解できたのではないかと思います。次に、Intentの異なる使い方を見てみます。

 以下のアプリをダウンロードしてEclipseにインポートしてください。

編集部注:最新の環境では、サンプルコードをEclipseにインポートすると、コンパイルエラーが発生することがあります。対処法は連載第2回の『2011年9月23日追記「Androidのバージョン違いによるサンプルの動作について補足」』をご参照ください

 画面はこんな感じです。

図7 Activityを再開した際の状態遷移
図7 Intent Casterの画面イメージ

 このアプリは入力したUriと選択したアクションで、起動するActivityをシステムに判断させます。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 大事なのは35行目と36行目です。

 35行目で、EditTextに入力されたUri(URIを表すクラス)とSpinner(コンボボックスのクラス)で選択されたアクションをIntentに設定しています。Uriとアクションの所定の組み合わせでIntentを作成すると、そのIntentを使用してあらかじめAndroidが持っているActivityを起動できます。

 組み合わせと起動するActivityは、以下の表3のとおりです。

Uri アクション Activityと説明
http://web_address
https://web_address
android.intent.action.VIEW Webブラウザを起動
空白文字
http://web_address
https://web_address
android.intent.action.WEB_SEARCH Webブラウザでデバイスの場所のファイルを開く(
tel:phone_number android.intent.action.CALL 電話を発信
tel:phone_number
voicemail:
android.intent.action.DIAL 電話番号入力画面を起動
geo:latitude,longitude
geo:latitude,longitude?z=zoom
geo:0,0?q=my+streeet+address
geo:0,0?q=business+near+city
android.intent.action.VIEW 地図アプリケーションを起動
google.streetview:cbll=lat,lng
&cbp=1,yaw,,pitch,zoom
&mz=mapZoom
android.intent.action.VIEW ストリートビューを起動
表3 Uriとアクションの組み合わせと起動するActivity
※記事公開時点(2009年2月5日)の最新環境「Android SDK 1.0 Release 2」では、WEB_SEARCHは正常に機能しない。レポートされているので、いずれ改修されるであろう

 地図アプリケーションは地名や住所で検索してくれるので手入力も可能ですが、緯度や軽度、ヨーやピッチは手入力するのはかなり至難の業です。

 自分のアプリと地図アプリやストリートビューとの連動は、Intentに設定するUriの作成がキモになります。興味のある読者が多いようなら、この辺りを丁寧に説明しようかなと思います。

次回は、レイアウトやウィジェットについて

 さてIntentについては、これでほぼ半分ぐらい説明したかな、という感じです。次回は画面の構成(レイアウトやウィジェット)について説明する予定です。


「Androidで動く携帯Javaアプリ作成入門」バックナンバー

Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る