• 検索結果がありません。

プロジェクト毎に名前を指定する ( ここでは AndroidTest) 動作可能な最低バージョン メインターゲットのバージョン すべて設定してクリック チェックを外す クリック

N/A
N/A
Protected

Academic year: 2021

シェア "プロジェクト毎に名前を指定する ( ここでは AndroidTest) 動作可能な最低バージョン メインターゲットのバージョン すべて設定してクリック チェックを外す クリック"

Copied!
36
0
0

読み込み中.... (全文を見る)

全文

(1)

1. とにかく Android アプリを作ってみよう

1.1 Eclipse の起動

Android アプリの開発言語はJavaです.Java プログラムの開発では統合開発環境Eclipseが最 も良く用いられており,この実習でも Eclipse を使います.この実習で用いる Eclipse は Android アプ リの開発用の設定を終えたバージョンです.デスクトップ上の以下のアイコンをクリックして Eclipse を起動して下さい.

1.2 Android アプリケーションプロジェクトの作成

Eclipse 上では 1 つのソフトウェアは 1 つのプロジェクトとして管理されます.プロジェ クトは開発対象に応じていくつかの種類がありますが,今回は Android アプリケーション の開発なので,「Android アプリケーションプロジェクト」を作成します.

(2)

プロジェクト毎に名前

を指定する

(ここでは

AndroidTest)

動作可能な

最低バージョン

メインターゲットの

バージョン

すべて設定してクリック

クリック

チェックを外す

(3)

デフォルトのままクリック

デフォルトのままクリック

して完了

(4)
(5)

1.3 Android アプリの起動

作成したアプリは,「プロジェクトのルートを選択  Run メニュー  Run As  Android Application」でエミュレータ上に起動することができる. 以下のダイアログが出たら「Yes」を選択.

アイコンが

地味な方を

選択

(6)

エミュレータが起動して以下のようにアプリの画面が表示されたら成功.

(7)

2. アプリの画面レイアウトを変更してみよう

2.1 画面上のテキストの変更

Android アプリの画面レイアウトは簡単に変更することができます.プロジェクト内の res フォルダ の中の layout フォルダの中に画面ごとに xml ファイルが配置されています.この xml ファイルを編 集することによって画面レイアウトを変更することができます.以下の xml ファイルをダブルクリックし て開いてください. エディタ上でエラーが出ているので設定を以下のように変更します.

選択

開く

(8)

以下のようにエディタ上に画面レイアウトが表示されればOK です.

エディタ上で GUI 部品を移動・編集したり,新しい GUI 部品を配置したりすることが できます.

テキストビュー

を選択

(9)

まず,画面上に配置されている文字列(テキストビュー)を選択して,右側のProperties ビューを使ってその属性を変更してみましょう.以下のようにText 属性を変更して表示さ れている文字列を変更します. なお,一番上のId 属性はプログラム中から GUI 部品を操作するときに必要となるものです ので確認しておいて下さい.このGUI 部品の Id は,textView1 です.

Text 属性を

変更

(10)

マウスでドラッグしてテキストビューを画面中央に移動します.

左側のパレットからボタンを選んで画面上に配置してみましょう.

移動

(11)
(12)

3. ボタンを押したときの動作をプログラミングしてみよう

ここでは OK ボタンを押したときに,テキストビューに表示されている文字列を変更するプログラム を書いていきます.

3.1 プログラム中で OK ボタンを取ってくる方法

(13)

次に画面を制御するJava プログラムを開きます.Android アプリでは,Java プログラ ムはすべて src フォルダの中に格納されます.Java プログラムの拡張子は「.java」です. 画面毎にそれを制御するためのJava プログラムが 1 つ作成されます.例えば Main 画面に 対 し て , 画 面 レ イ ア ウ ト は activity_main.xml で 定 義 さ れ ま す が , 画 面 の 制 御 は MainActivity.java に記述されます.それでは,以下のように MainActivity.java をクリッ クして開いてみましょう.

Main 画面のレイアウト

Main 画面の制御プログラム

⇒ 開く

(14)

MainActivity.java には MainActivity というクラスが定義されています.クラスという のはJava プログラムを構成する基本要素で,基本的に 1 つの.java ファイルに 1 つのクラ スが定義されます.MainActivity クラスは,Main 画面を制御するクラスということにな ります.なお,Android では画面のことをアクティビティと呼ぶので覚えておいてください. MainActivity クラスの中にはさらにいくつかの処理が含まれています.上の例では,3 つの処理が含まれています.Java では,このような処理のことをメソッドと言います.例 えば,onCreate()というメソッドがありますが,これは Main 画面(アクティビティ)が作ら れたときに実行される処理です.画面(アクティビティ)を制御するクラスの中でもっとも重 要なのは,この onCreate()メソッドです.Android ではアクティビティを制御するクラス には必ずonCreate()メソッドが含まれるようになっています.

MainActivity クラス

onCreate()メソッド

(15)

OKボタンを取ってくるプログラムはこのonCreate()メソッドの中に記述します.OKボタンは以下の 1行で取ってくることができます.

Button okButton = (Button)findViewById(R.id.button1);

ここで,赤枠で囲った部分が事前に確認しておいたOK ボタンの Id になっていることに注 意してください.このId の部分を変えることで画面上の任意の GUI 部品をプログラム中で 取ってくることができます.ここで取ってきたボタンはプログラム中の「okButton」とい う変数に格納されます.onCreate()メソッドの中に OK ボタンを取ってくるプログラムを追 加した結果は以下のようになります. ここで赤の波線が 2 箇所出ていますが,これはこの部分でコンパイルエラーが発生してい ることを示しています.

GUI 部品の部品の Id

(16)

この波線をクリックすると,Eclipse がエラーの解消方法をメニューで提示してくれます. ここでは,「Import ‘Button’ …」の項目を選んでコンパイルエラーを解消します.

3.2 OK ボタンを押したときに実行されるプログラム

プログラム中で OK ボタン取ってきたのは,取ってきた OK ボタンに,ボタンを押したときの処理を 設定するためです.先ほど追加したプログラムの下に以下の赤枠で囲った部分を追加してくださ い.

Button okButton = (Button)findViewById(R.id.button1);

okButton.setOnClickListener(new OnClickListener() {

public void onClick(View v) { } }); ちょっと複雑なプログラムですね.実際このプログラムをきちんと読めるようになるため にはJava をかなり勉強しなければなりません.この時点でそこまで Java を深く理解して いる必要はありませんので,今のところはコピペで結構です.ただし,上のプログラムの 中に onClick()メソッドが含まれていることに注意して下さい.この onClick()メソッドが OK ボタンを押されたときに実行される処理に相当します.上のプログラムのままでは, onClick()メソッドの中に何の処理も書かれていないため,このままでは OK ボタンが押さ れても何も起こりません.そこで,onClick()メソッドの中に以下の 2 行の処理を付け加え ることにします.

public void onClick(View v) {

TextView textView1 = (TextView)findViewById(R.id.textView1);

textView1.setText("OK Button Clicked!!"); } この2 行のうちの 1 行目を見てください.先ほど書いた OK ボタンを取ってくる処理に似 ているのがわかるでしょうか?これは,画面上に配置されたもう一つのGUI 部品であるテ キストビューを取ってくるプログラムです.Id を指定する部分が,テキストビューの Id で ある「textView1」となっていることに注意して下さい.また,ここで取ってくる GUI 部 品はボタンではなくテキストビューなので,先ほど「Button」となっていたところが 「TextView」となっていることが分かると思います.2 行目で取ってきたテキストビュー に”OK Button Clicked!!”という文字列を設定しています.

onClick()メソッド

GUI 部品の部品の Id

(17)

最終的に onCreate()メソッド内に追加するプログラムは以下のようになります.これで, OK ボタンを押すとテキストビューの表示が”OK Button Clicked!!”に変わるというプログ ラムが書けました.

Button okButton = (Button)findViewById(R.id.button1);

okButton.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

TextView textView1 = (TextView)findViewById(R.id.textView1);

textView1.setText("OK Button Clicked!!"); } }); MainActivity.java のタブの左側に「*」の印がついていることがわかると思いますが,これ はまだこのファイルを保存していないという目印ですので保管アイコンを押してこのファ イルを保存しましょう.

クリックして保存

未保存のファイル

(18)

アプリケーションを起動し,OK ボタンを押してテキストビューの表示が変われば成功です.

クリック

変更

(19)

4. 新規画面(アクティビティ)の追加と画面遷移

4.1 新規アクティビティの追加

Android アプリのアクティビティは以下のように追加します.

Other を選択

アイコンが地味な方を選択

クリック

(20)

デフォルトのままクリック

アクティビティ名を付ける

(21)

テキストビュー

を選択

(22)

新しいアクティビティ用

に追加されたファイル

(23)

4.2 画面遷移のプログラム

画面遷移をするためのプログラムの書き方を説明します.まず Main アクティビティに次のアクティ ビティに進むための Next ボタンを追加します. MainActivity.java を開いて下さい.

追加

Text 属性の変更

開く

(24)

onCreate()メソッドの最後に以下のプログラムを付け加えてください. Button nextButton = (Button)findViewById(R.id.button2);

nextButton.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

Intent intent = new Intent(MainActivity.this,SubActivity.class); startActivity(intent); } }); Next ボタンを取ってきてボタンを押したときの処理を設定する部分は,OK ボタンのとき と同じです.ただ,押したときの処理内容(onClick()メソッドの中の 2 行、赤枠内)が異 なっています.onClick()メソッドの中の 1 行目で現在のアクティビティと遷移先のアクテ ィビティを設定して画面遷移の準備を行います.2 行目で実際に画面遷移を行います.

Next ボタンの Id

次のアクティビティ(SubActivity)

に遷移する処理

現在

遷移先

(25)

アプリケーションを起動し,Next ボタンをクリックします.

(26)
(27)

5. 位置情報(GPS)を取得してみよう

5.1 位置情報取得のための準備(プログラム編)

Sub アクティビティで GPS から取得した位置情報を表示するようにしてみましょう.位置情報を取 得するには LocationManager というクラスを使用します.具体的には以下の 2 行を SubAvticity.java の onCreate()メソッドの最後に追加します.LocationManager の下に波線があると思いますので,ク リックして「Import ‘LocationManager’ (android.location)」を選んでください.

LocationManager manager = (LocationManager)getSystemService(LOCATION_SERVICE);

manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); エラーを解消してもまだ2 行目に別のエラーが残っていると思います.SubActivity クラス の最初の行に以下の赤枠の部分を付け加えてください.

public class SubActivity extends Activity implements LocationListener { 先ほどのエラーは消えましたが,今度はこの行の「SubActivity」の部分にエラーが出るよ うになってしまいました.次にこの部分をクリックして,「Add unimplemented methods」 を選んで再びエラーの解消をしましょう.SubActivity クラスの下の方に新たに 4 つのメソ ッドが自動で追加されたと思います.これで,すべてのエラーが解消されたはずです. プログラムについて説明しましょう.onCreate()メソッドに追加した 2 行はあまり深く考 えずに,基本的にコピペで構わないと思います.ただ,この 2 行を付け加えることで, SubActivity クラスに位置情報が送信されるようになるということだけ知っておいてくだ さい.次に SubActivity クラスの最初の行に追加した「implements LocationListener」 の部分ですが,これはSubActivity クラスが送られてきた位置情報を受け取れるようにする ため のものです .実際 に位置情報 を受け 取るのは, 後から 自動で追加 された以下の onLocationChanged()メソッドになります.位置情報が変わるたびにこのメソッドが実行さ れるようになります.

public void onLocationChanged(Location location) {

// TODO Auto-generated method stub

}

追加

onCreate()に

追加

(28)

5.2 位置情報取得のための準備(マニフェスト編)

位置情報を取得できるようにするためにはプログラムの準備だけでは足りません.実際に上のプ ログラムを動かしても位置情報は取得することができません.Android 端末にはいろんなセンサー が用意されていますが,アプリからそれらのセンサーを使うためにはマニフェストファイルの修正を 行わなければなりません.マニフェストファイルとは,以下の場所にある AndroidManifest.xml ファイ ルのことです.このファイルをダブルクリックして開いてみましょう.

開く

(29)

以下のような画面が開いたと思いますが,「AndroidManifest.xml」タブに切り替えてく ださい.

AndroidManifest.xml の全体がテキスト表示されるのでこれを直接編集していきます.

(30)

マニフェストファイルの下の方に以下の2 行を付け加えてください. <activity android:name=".SubActivity" android:label="@string/title_activity_sub" > </activity> </application>

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

</manifest>

これは,このアプリがGPS センサーにアクセスする許可を与えることを示しています.追 加したら,ファイルを保存することを忘れないでください.

(31)

5.3 位置情報取得と表示

以 上 で 位 置 情 報 を 取 得 で き る よ う に す る た め の 準 備 が 完 了 し ま し た . そ れ で は , 再 び SubActivity.java を修正して位置情報を取得して画面に表示できるようにしましょう.先ほども説明し たように,位置情報は以下のメソッドで受け取れるようになっています.

public void onLocationChanged(Location location) {

// TODO Auto-generated method stub

}

このメソッドの引数「location」に位置情報が渡ってきています.具体的には,緯度と経 度の情報が入っています.まずは,このメソッドの中で緯度と経度を受け取るための変数 を用意しましょう.

public void onLocationChanged(Location location) {

double latitude, longitude;

Java では C 言語と同様に,int 型,float 型,double 型などの変数を使うことができます. また変数を使う場合は事前に宣言をしておかなければならないのも同様です.なお,

latitudeは緯度,はlongitude経度を表します.これらの変数に実際の緯度と経度を代入 するために以下の2 行を付け加えてください.

latitude = location.getLatitude();

longtitude = location.getLongitude();

引数locationの中から緯度情報と経度情報を取ってきて,それぞれlatitudeとlongitude

という変数に代入しています.次にこれらの情報をテキストビューに表示するようにして みましょう.そのためにテキストビューのId を確認しようとして activity_sub.xml を開い てもId の情報は設定されていません.

追加

(32)

そこで,他の部品と被らない適当な値を入れましょう.ここでは,「textView2」を入力し ます.

開く

選択

値が入っていない

入力

(33)

さて,SubActivity.java の修正の続きです.現時点で onLocationChanged()メソッドの内容は以 下のようになっているはずです.

public void onLocationChanged(Location location) {

// TODO Auto-generated method stub double latitude, longtitude;

latitude = location.getLatitude();

longtitude = location.getLongitude(); }

このメソッドの最後に以下の2 行を付け加えてください.

TextView textView2 = (TextView)findViewById(R.id.textView2);

textView2.setText("緯度:" + latitude + ", 経度:" + longtitude); 1 行目はもう分かりますね.2 行目で緯度と経度の値をテキストビュー(textView2)に設 定しているのですが,1 つ注意して欲しいのがこの行で行っている文字列の足し算です. Java では文字列同士や文字列に数字を足し算を使って足すことができ,これは文字列の連 結を意味します.C 言語では文字列の連結に strcat()関数を使っていたと思いますが,足し 算の方がはるかに簡単ですね.

テキストビューの Id

(34)

5.4 エミュレータ上での実行

Android 端末の実機にインストールする場合はここまでの説明で十分なはずです.しかし,エミュ レータ上で動作を確認するにはもう少し説明が必要です.アプリを実行してエミュレータ上で Sub ア クティビティを表示したら,以下のように緯度も経度も表示されません. ここで,エミュレータの右側にあるコントローラの「・・・」をクリックして下さい.

クリック

表示が変わらない

(35)

そうすると,以下のようなダイアログが表示されます.

ここでLocation タブを選んで SEND ボタンをクリックして下さい.これはエミュレータ上 の仮想のGPS に指定した緯度と経度の値(仮の値)を送ることを意味しています.

(36)

以下のようにSub アクティビティに緯度と経度の仮の値が表示されれば成功です.

緯度と経度(仮の値)が

表示される

参照

関連したドキュメント

従って、こ こでは「嬉 しい」と「 楽しい」の 間にも差が あると考え られる。こ のような差 は語を区別 するために 決しておざ

ても情報活用の実践力を育てていくことが求められているのである︒

l 「指定したスキャン速度以下でデータを要求」 : このモード では、 最大スキャン速度として設定されている値を指 定します。 有効な範囲は 10 から 99999990

自閉症の人達は、「~かもしれ ない 」という予測を立てて行動 することが難しく、これから起 こる事も予測出来ず 不安で混乱

ASTM E2500-07 ISPE は、2005 年初頭、FDA から奨励され、設備や施設が意図された使用に適しているこ

欄は、具体的な書類の名称を記載する。この場合、自己が開発したプログラ

そのため、夏季は客室の室内温度に比べて高く 設定することで、空調エネルギーの

きも活発になってきております。そういう意味では、このカーボン・プライシングとい