SSブログ

Androidプログラミングの基礎[2] 明示インテント [Android]

今回のテーマは「明示インテント」です。

第2回: 明示インテント

インテントを使った画面の遷移の方法とAndroidシステムがどのように画面遷移を実現しているかについて。

1.インテントとは

アクティビティなどのコンポーネントを起動するための情報をひとつにまとめたもの。

⇒ 明示インテント

起動したいオブジェクトをその名前で「明示」したインテント。

⇒ 暗黙インテント

起動したいコンポーネント名を指定しないで、起動したい機能だけを指定し、Androidシステムによって起動する機能を暗黙的に判断させるインテント。

① インテントが保持する情報

Intentクラス(android.contemnt.Intent)

インテントには次のような情報を含めることができる。

⇒ コンポーネント名

インテントで起動する対象の名前。

⇒ アクション

暗黙インテントで利用される「○○を実行したい」という動作に関する情報。

⇒ カテゴリー

アクションの負荷的な情報を文字列で指定する。

⇒ データ

アクションの対象となるデータの場所をURI形式で指定する。

⇒ タイプ

URIによるデータの指定に加え、データのタイプ(MIMEタイプ)を指定する。

⇒ エクストラ(追加情報)

インテントの宛先に渡したい追加情報。

⇒ フラグ

アクティビティの起動方法や、起動後の動作などの指示を出す。

 

2.明示インテントによる単純な画面遷移

① プロジェクトの作成

画面Aから画面Bへ画面遷移して、また画面Aへ戻る動作する。

・新規Androidアプリケーション

アプリケーション名 IntentSample1
プロジェクト名 IntentSample1
パッケージ名 jp.andsys.android.intentsample1
最小必須 SDK API 8: Android 2.2 (Froyo)
ターゲット SDK API 18
次でコンパイル API 10: Android 2.3.3 (Gingerbread)
テーマ None

・プロジェクトの構成

ディフォルトのまま

・アイコンの属性

ディフォルトのまま

・アクティビティーの作成

Blank Activity

・Blank Activity

アクティビティ名 ActivityA
レイアウト名 main
ナビゲーション・タイプ None

プロジェクトの生成

image

② アクティビティ(画面B)の追加

アクティビティの追加手順

  • レイアウトXMLファイルの作成
  • アクティビティクラスの作成
  • AndroidManifest.xmlへの記載

⇒ レイアウトXMLファイルの作成

Eclipseのツールバー「新規AndroidXMLファイル」ボタンをクリックする。

image

「新規 Android XML ファイル」ダイアログが現れたら、以下の設定とし「完了」ボタンを押す。

 image

”IntentsSample1/res/layout/activity_b.xml”に生成された”activity_b.xml”ファイルを編集します。”activity_b.xml”タブをクリックします。ボタンを追加するコードを追加します。

image

⇒ アクティビティクラスの作成

Eclipseのメニューから「ファイル」、「新規」、「クラス」を選択し、「新規Javaクラス」ダイアログを開き、以下の内容に編集し「追加」ボタンを押す。

image

「実装されたインターフェースの選択」ダイアログが現れたら、「インターフェースを選択してください」テキストボックスに”android.view.view.OnClickListener”を入力し「OK」ボタンを押す。

image

「新規Javaクラス」ダイアログに戻ったら「完了」ボタンを押す。

”IntenttSample1/src/jp.andsys.android.intentsample1/ActivityB.java”に作成された”ActivityB.java”ファイルを編集します。

image

⇒ マニフェストファイルの修正

”IntenttSample1/res/AndroidManifest.xml”の “AndroidManifest.xml”にActivityBの情報を追記します。

image

③ 画面A側の処理

main.xml の編集

”IntenttSample1/res/layout/main.xml”

image

ActivityA.java の編集

”IntenttSample1/src/jp.andsys.android.intentsample1/ActivityA.java”

image

⇒ アクティビティのスタック

プログラムを実行すると画面Aが現れます。

image

ここで「画面Bを起動」ボタンを押すと、「画面A」の上に「画面B」が現れます。

image

「このActivityを閉じる」ボタンを押すと、「画面B」が消え、再び「画面A」が現れる。

image

 

3.入力結果を次の画面に表示する

画面Aから画面Bに値を渡すようにする。画面Aにリストボックスを追加し、選択された値を画面Bで表示する。

① リストボックスの追加

strings.xml の編集

”IntenttSample1/res/values/strings.xml”

image

main.xml の編集

”IntenttSample1/res/layout/main.xml”

image

activity_b.xml の編集

”IntenttSample1/res/layout/activity_b.xml”

image

② アクティビティクラスの修正

ActivityA.java の編集

”IntenttSample1/src/jp.andsys.android.intentsample1/ActivityA.java”

image

ActivityB.java の編集

”IntenttSample1/src/jp.andsys.android.intentsample1/ActivityB.java”

image

実行

リストボックスで画面Bに渡す文字を選択し「画面Bを起動」ボタンを押します。

image

「画面B」に文字が渡りました。

image

⇒ putExtraメソッドとget~Extraメソッド

putExtraメソッドには、String型以外にもbyte, short, int, long, float, double, char, boolean を格納するものが用意されている。

またget~Extraについても他の型の情報を取得するメソッドが用意されている。

③ 遷移元に戻るときに値を渡す

さらに画面Bから画面Aに値を渡すように変更する。

main.xml の編集

”IntenttSample1/res/layout/main.xml”

image

activity_b.xml の編集

”IntenttSample1/res/layout/activity_b.xml”

image

ActivityA.java の編集

”IntenttSample1/src/jp.andsys.android.intentsample1/ActivityA.java”

image

ActivityB.java の編集

”IntenttSample1/src/jp.andsys.android.intentsample1/ActivityB.java”

image

⇒ 実行する

「画面A」のリストで文字列を選択し、「画面Bを起動」ボタンを押すと文字列が渡ります。そして新たにテキスト入力が追加されました。ここで適当な文字列を入力します。

image

「このActivityを閉じる」ボタンを押すと、「画面A」に入力した文字が渡りました。

以上で「明示インテント」を終了します。

 

本記事は以下の参考書を元にしています。


Androidプログラミングの基礎 [Android]

Androidアプリケーションを開発するうえで必要な要素を調査する。ただしUI(ユーザーインターフェース)に関しては必要に応じて記述する。主な内容としては以下の項目について調査し記事にしていく予定。

またそれぞれの説明は概略のみ記述していきます。

 

第1回: アクティビティ

第2回: 明示インテント

第3回: 暗黙インテント

第4回: サービスによる常駐アプリケーション

第5回: 共有プリファレンスと設定画面

第6回: ストレージへのファイル入出力

第7回: ダイアログ 前編 後編

第8回: メニューとノーティフィケーション

第9回: アニメーションの基礎

第10回: 複雑なアニメーション

第11回: スライドショー

第12回: TwitterAPI

第13回: リストビュー

第14回: カメラ撮影

第15回: カメラの利用

 

本記事は以下の参考書を元にしています。


Androidプログラミングの基礎[1] アクティビティ [Android]

第一回目のテーマは「アクティビティ」です。

第1回: アクティビティ

アクティビティはAndroidアプリケーションの基本となるものです。アクティビティ(Activity)とはAndroidの動作を決定し、ユーザーインターフェイスを提供し、イベント処理などユーザーの操作に対する振る舞いを提供するもの。

1.サンプル作成

① プロジェクトの作成

ウィザードから作成します。最初なので各ダイアログ画面を載せますが、第2回以降の記事では設定のみ記述します。

・新規Androidアプリケーション

image

・プロジェクトの構成

image

・アイコン・セットの属性

image

・アクティビティーの作成

image

・Blank ACTIVITY

image

プロジェクトの完成

image

② 文字列定数を用意

下記文字列設定用ファイルをダブルクリックするとリソースエディターが起動する。

DogAgeCalculator/res/values/string.xml

image

「strings.xml」タブをクリックすると、直接編集できるので以下の4行を追加します。

image

③ レイアウトXMLファイルを用意

レイアウト設定用ファイルも”strings.xml”と同様に開きます。

DogAgeCalculator/res/layout/activity_main.xml

image

「activity_main.xml」タブをクリックし下記のように編集します。

image

グラフィカル・インターフェースが以下に変わりました。

image

④ アクティビティを作成

すでに雛形が作成されているので開いてみます。ここでは編集しないので中を見るだけです。

DogAgeCalculator/src/jp.andsys.android.dogagecalculator/MainActivity.java

image

⑤ 実行

対象プロジェクトを選択し、Eclipseのメニューから「実行」、「実行」を押すと「次を実行」ダイアログが現れるので「Androidアプリケーション」を選択し「OK」ボタンを押します。

エミュレータが起動後、DogAgeCalculatorアプリケーションが起動します。

image

この時点では、年齢を入力し「計算実行」を押しても何も起きません。

 

2.処理の実装

① 処理の追加

「計算実行」ボタンを押すと発生するイベントを追加します。赤で囲った部分が追加、編集した部分となります。

image

② ボタンを取得

ボタンのインスタンスを取得するために”findViewByld”メソッドを使います。本サンプルではButtonクラスにキャストして使用しています。

findViewByld メソッド

機能: android: id属性により識別されるビューのインスタンスを返します

書式: View findViewByld ( int id)

引数: id : R.javaに定義された該当するリソースID

③ リスナーの設定

ボタンが押されたイベントに応答するイベントリスナーを設定します。

setOnClickListner メソッド

機能: このビューがタップされたときいonClickコールバックjメソッドを呼び出すように設定する。

書式: void setOnClickListner ( View.OnClickListner l )

引数: l : View.OnClickListner インターフェースを実装したクラス

 

④ テキストボックスの値を取得

ボタンを押されたときの処理は、onClick メソッドに記述します。

⑤ トースト

トースト( Toast ) はウィンドウの前面に一定時間メッセージを表示する機能の事です。トーストの表示には android.widget.Toast クラスを使用します。

android.widget.Toast.Maketext メソッド

機能: ウィンドウの前面に一定時間メッセージを表示する。

書式: Toast makeText ( Context context, CharSequence text, int duration )

引数:

context : アクティビティ

text : トーストで表示したい文字列

duration : トーストで表示する時間。(LENGTH_SHORT/LENGTH_LONG)

 

3.アクティビティのライフサイクル

① ライフサイクル

インスタンスが生成されてから破棄されるまで「作成」、「停止」、「再開」、「破棄」とシステムによりその状態が変化する。このじょうたうい変化をアクティビティのライフサイクルと呼ぶ。

アクティビティの状態には以下の3つの状態がある。

実行中(再開) ユーザーの目に見えている状態
一時停止 別のアクティビティが最前面にあるが、そのアクティビティが部分的または全体的に透明で、完全には覆っていない状態。
停止中 別のアクティビティにより完全に隠れている状態。

② ライフサイクルの表示

コールバックメソッドの呼び出しをログに表示する処理を追加する。

image

image

③ 実行

・LogCat ビューを開く

Eclipseのメニューから「ウィンドウ」、「ビューの表示」、「その他」を選択する。

image

「ビューの表示」ダイアログから「Android」、「LogCat」を選択し「OK」ボタンを押す。

image

LogCatビューが開いたら、[+]ボタンを押して、目的のログのみを表示するようにフィルターを設定する。

image

「Logcat Message Filter Settings」ダイアログが現れたら、「Filter Name」と「by Log Tag」欄に”life cycle”と入力して「OK」ボタンを押します。

image

「保管済みフィルター」に”life cycle”が追加されるので選択しておきます。

image

Eclipseメニューから「実行」、「実行」を選択する。

アプリケーションが起動するとログが変化します。

image

ホームボタンを押してアプリケーションが隠れると、”onPause()”、”onStop()”が呼ばれました。

image

ホームボタンの長押しで、最近使ったアプリケーションを表示させ、”DogAgeCulculator”を押します。すると”onRestart()”、”onStart()”、”onResume()”が呼ばれました。

image

アプリケーションも犬の「年齢」を入力し「計算実行」ボタンを押すと、「人の年齢換算した年齢」が表示されます。

image

以上でアクティビティ編を終了します。

 

本記事は以下の参考書を元にしています。


Androidアプリを実機で動作させる方法 [Android]

開発したAndroidアプリケーションを実際のAndroid端末上で動作させる方法について説明する。開発環境の構築およびアプリケーション開発を終了しエミュレータによる動作確認済みの状態とする。

 

1.デバイスドライバー

前述のAndroid開発環境構築が完了している場合、ドライバーはインストール済みです。SDK Managerを起動し、Extrasの「Google USB Driver」がインストールされているか確認します。インストールされていない場合は、「Google USB Driver」にチェックを入れインストールします。

image

 

2.Android端末の設定(Android2.3の場合)

Android端末で独自のアプリケーションを動作させるには下記2つの設定が必要となります。

  • 「USBデバッグ」有効 (「設定」、「アプリケーション」、「開発」の中)
  • 「提供元不明のアプリのインストール」許可 (「設定」、「アプリケーション」の中)

 

3.デバイスドライバーの設定

VenderID(VID)とProductID(PID)確認

USBデバイスドライバーをインストールするには、VIDとPIDが必要なので、その確認方法について説明します。

① Android端末とPCをUSBケーブルで接続する。

② PCのデバイスマネージャーを開く

Androidスマートフォンは「ほかのデバイス」として認識されています。

image

③ プロパティ

認識された”SEMC HSUSB Device”をダブルクリックします。現れたプロパティダイアログの「詳細」タブを選択し、プロパティを「ハードウェア ID」とします。すると「値」に”VID_0FCE”、”PID_514F”と表示されます。これでVIDとPIDが確認できます。

image

④ android_winusb.inf 設定ファイルの編集

先に調べたVIDとPIDを”android_winusb.inf”設定ファイルに記述します。

今回の環境では以下のフォルダーに”android_winusb.inf”ファイルは有ります。

C:\Users\kazu\AppData\Local\Android\android-sdk\extras\google\usb_driver

32bit、64bitの両方に対応するため、以下の記述を2か所に追記します。

%SingleAdbInterface% =  USB_Install, USB\VID_0FCE&PID_514F
%CompositeAdbInterface% =  USB_Install, USB\VID_0FCE&PID_514F&MI_01

image

 

4.ドライバーのインストール

先ほどのデバイスマネージャーのプロパティに戻り、「全般」タブ、「ドライバーの更新」ボタンを押す。

image

「コンピューターを参照してドライバーソフトウェアを検索します」を選択します。

image

android_winusb.inf の場所を「参照」に指定する。

image

警告は無視してインストールします。

image

インストール成功が成功しデバイスマネージャーにADBデバイスとして登録されました。

image

 

5.ADB(Android Debug Bridge)の確認

コマンドプロンプトを起動し、platform-tools ディレクトリに移動し adb devices コマンドを打ち込み List of devices attached の次に Device が表示されれば正常に動作しています。

image

 

6.アプリケーションの転送

Eclipseメニューから「実行」、「実行」と選択します。

image

Android端末にアプリケーションが転送され実行されました。またアイコンも登録されています。

image image

 

参考サイト


Androidアプリ開発方法 [Android]

もっとも簡単なアプリ「Hello World !」を造ることで、Androidアプリの開発手法をまなぶ。

 

1.プロジェクトの作成

① Eclipseを起動しメニューから「ファイル」、「新規」、「その他」を選択します。

image

② ウィザードを選択

「新規」ウィザードが立ち上るので、「Android」、「Android アプリケーション・プロジェクト」を選択し「次へ」ボタンを押します。

image

③ 新規Androidアプリケーション

アプリケーション名、パッケージ名、ターゲットAPI等を設定し「次へ」進みます。

image

④ プロジェクトの構成

デフォルトのまま進みます。

image

⑤ アイコン・セットの属性

ここもデフォルトのまま進みます。

image

⑥ アクティビティーの作成

”Blank Activity”を選択します。他のアクティビティーは選択してもエラーとなる。

image

⑦ Blank Activity

”完了”ボタンを押すとプロジェクトが作成されます。

image

image

 

2.AVD(Android Virtual Device)の作成

① Android 仮想デバイス・マネージャーを起動する。

image

② Device Definition の新規作成

「Device Definition」タブを選択後、「New Device...」または仕様の近いデバイスを選択し「クローン」ボタンを押す。

image

対象となるスマートフォンのデバイス情報を登録し「Clone Device」ボタンを押す。

image

③ Android Virtual Device の新規作成

登録したデバイスを選択し、「AVDの作成...」ボタンを押す。

image

デバイス情報を入力し「OK」ボタンを押す。

image

登録完了

image

 

3.実行する

① デバッグを開始する。

下記デバッグボタンを押す。

image

「次をDebug」ダイアログで”Android アプリケーション”を選択し”OK”ボタンを押す。

image

デバッグが開始されます。

image

しばらくするとエミュレーターが起動します。

image

スマートフォンと同じようにロックを解除すると、HelloAndroidアプリが起動します。

image

後は、右側の”Hardware Buttons”を使って操作が出来ます。

image

登録されたアイコン。

参考サイト


Android開発環境構築 [Android]

ここでは、本家のEclipseサイトからパッケージをダウンロードし、それを日本語化して開発環境を構築するまでを説明します。

1.必要なファイルのダウンロード

◆ Eclipse

Eclipseは現在の最新版である、Eclipse Kepler Standard(4.3)を使うことにします。以下のサイトからダウンロードします。また自分のPCにはすでにJava7 64bit版がインストール済みなので、同じ64-bit版を選択しました。

http://www.eclipse.org/downloads/packages/release/kepler/r

image

 

◆ Pleiades

Eclipseの日本語化プラグインは以下のサイトから最新バージョンをダウンロードします。

http://mergedoc.sourceforge.jp/

image

 

◆ Java SE6 Development Kit (JDK)

Javaは以下のサイトからダウンロードします。Androidの開発にはJava 6が推奨されているようなので、ここからPrevious Releaseから入手します。しかし前述のようにJava 7 がインストール済みなので、ここではダウンロードしません。

http://www.oracle.com/technetwork/java/javase/downloads/index.html

image

 

◆ Android SDK

以下のサイトから、「USE AN EXISTING IDE」をクリックすると現れる「Download the SDK Tools for Windows」ボタンが現れるので、これを押し、使用許諾に同意しAndroid SDK単体のインストーラをダウンロードします。

http://developer.android.com/sdk/index.html

image

 

2.インストール

① JDKのインストール

ここでインストーラの指示にしたがいインストールします。インストール後、環境変数”JAVA_HOME”の設定を行ってください。

② Android SDKのインストール

”installer_r22.2.1-windows.exe”をダブルクリックするとウィザードが起動するので、”Choose Users”等すべてデフォルトのままインストールします。

インストールが完了すると、”SDK Manager”の起動オプションが現れるので、チェックしたまま”Finish”ボタンを押します。

Android SDK Managerが起動します。しかしほとんどのパッケージがダウンロードできていません。

image

この場合、SDK Managerのメニューから「Tools」、「Options...」を選択します。「Settings」ダイアログが現れるので、プロキシの設定を行います。

image

プロキシ設定後、SDK Managerを起動するとパッケージが正常にダウンロードされました。

image

③ SDK Managerの設定

ここで開発に必要な以下のパッケージをインストールします。

  • Android SDK Platform-tools
  • Android Support Library
  • 自分が開発したいAndroidのバージョンSDK Platform (とりあえず中身全てにチェック)
  • Google USB Driver

以下の内容にチェックを入れ「Install 10 packages...」ボタンを押します。

image

使用許諾に同意し「Install」ボタンを押します。

image

インストール中ログに”Stopping ADB server failed (code -1).”と表示されるが、この時点ではADBサーバーは起動してないので無視します。

④ Eclipseのインストール

ZIPファイルを解凍して適当な場所に移動するだけです。今回は”C:\”に移動します。

⑤ Eclipseの日本語化

Pleiadesプラグインを導入する。ダウンロードしたPleiades.zipファイルを解凍します。解凍後にできる”plugins”フォルダーをEclipseの”plugins”フォルダーに移動します。Eclipseに”plugins”フォルダーが存在しているので以下のエラーとなるが上書きする。

image

次に、”c:\eclipose\eclipse.ini”ファイルをテキストエディタで開き、最後に

”-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar”

を追記する。

image

“c:\eclipse\eclipse.exe”をダブルクリックしEclipseを起動する。すると日本語表示でEclipse Kepler が起動しました。

image

⑥ ADT Pluginのインストール

次にADT(Android Development Tools)をEclipseからインストールします。Eclipseのメニューから「ヘルプ」、「新規ソフトウエアのインストール...」を選択し、プラグインのインストール画面を表示します。ここで「追加...」ボタンを押します。

image

「リポジトリーの追加」ダイアログが現れたら、以下のように「名前:」にPluginの名前、「ロケーションに:」リポジトリーの場所を入力し「OK」ボタンを押します。

名前: ADT Plugin

ロケーション: https://dl-ssl.google.com/android/eclipse/

image

しばらくすると以下のようにPluginの候補が表示されるので「開発ツール」にチェックを入れて「次へ」ボタンを押します。

「インストール詳細」

image

「ライセンスのレビュー」で使用許諾に同意する。

image

インストールが完了したら、Eclipseを再起動します。

Eclipseの「Window」メニューにAndroid関係のメニューが追加されました。次に「設定」を選択します。

image

◆ SDKロケーションの設定

左側メニューで「Android」を選択し、SDKロケーションにAndroid SDKをインストールした場所を指定します。

image

◆ エンコードの設定

左側メニューで「一般」、「ワークスペース」と選択し、「テキスト・ファイルのエンコード」をその他: UTF-8としておくと他のOSでも利用できるようになります。

image

以上でAndroid開発環境構築が完了です。

 

参考サイト


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。