1.Andrioidアプリ開発プログラミング

 このページでは開発したプログラムコードをチップ化してご紹介しています。後ほどわかり易く分類化して整理する予定です。 <開発環境の準備> ADTを組み込んだEclipseでAndroidアプリケーション開発を始めるにはEclipseをインストールしてからADTプラグインをダウンロードしてインストールを行います。 基本的な手順は以下の通りとなります。 (1)JDKインストール(Java Development Kit)のダウンロード、インストール 日本オラクルのページからダウンロードが可能です。開発環境にあったものをダウンロードして下さい。 http://www.oracle.com/technetwork/jp/java/javase/downloads/index.html JREやJDKに関する情報 ■JRE JRE(Java Runtime Environment)Java言語で開発されたソフトウェアを実行するために必要なソフトウェアのセットでJavaプログラムを実行するときに必要となるJavaVMとクラスライブラリのパッケージで構成されています。 ■JDK JavaDevelopment Kitの略でJava言語でプログラム開発を行うときに必要なソフトウェアのセットであり、コンパイラ、デバッガ、クラスライブラリ、JavaVMが含まれています。JREはJDKに含まれています。 分類としてSE・ME・EEと分類されているようで、SEは最も一般的なJava開発キットでアプリケーション、アプレットなどの基本的なプログラムを作成できます。MEは携帯機器、組み込み用のプログラムの作成に使用されます。EEは企業の大規模なアプリケーション開発に使用されています。 (2)Androd SDKのダウンロード、インストール AndroidにはAndroid SDKとAndroid NDKと二種類の開発ツールが用意されています。 アンドロイドSDK(Software Development Kit)とはJAVAを使用するAndroidアプリケーション開発に使用され、NDK(Native DevelopmentKit)はC/C++を使用した開発環境に使用されます。今回はJava言語を使用しますのでAndroid SDKを使用します。 Android SDKはAndroid上で動作するアプリケーション開発に必要なツールとAPIを提供します。 Android SDKは以下のページからダウンロードが可能です。 http://developer.android.com/index.html (3)Eclipseのダウンロード、インストール Eclipseは優れた統合開発環境を持つプログラミングツールであり、Androidアプリ開発には最適な開発ツールです。 Ecripseの一番の特徴はプラグインアーキテクチャと呼ばれる機能によって、プラグインモジュールをEclipseに組み込むことで他言語の開発環境を作ることが可能なことです。Eclipseが最初からJava環境を備えているのは最初からJDT(Java Development Tool)を備えているからです。その他の事例としてはEclipseにC++のプラグインモジュールを組み込んだ場合はC++の開発環境を備えることも可能といえます。 その為、Eclipseはそのプラグインモジュールにより様々な開発環境に変えることができるプログラミングツールであると言えます。 Eclipseは以下のページよりダウンロードが可能です。 http://www.eclipse.org/ Eclipseを日本語化は以下のページよりLanguagePackをダウンロードを行い、ファイルを置き換えることで日本語化を行うことが可能です。 http://mergedoc.sourceforge.jp/ (4)Eclipse設定 Pathの設定 Windowsのシステムプロパティを指定、詳細設定のタブを開き、環境変数を選択します。 変数Pathを編集し以下のようにJDKのあるフォルダのbinへのPathを指定して下さい。インストール先フォルダによって変わってきますので、確認をお願いします。 C:\Program Files\Java\jdk1.7.0_03\bin java環境変数設定.jpg (5)Android SDK API/Toolダウンロード/インストール インストールされたAndrod SDKフォルダ内にあるAndroid SDK Managerを開きます。 以下のような画面が開きますのでAndroidOSにあったツールとAPIのインストールを行ってください。 SDK manager.jpg (6)Eclipse ADT Pluginインストール 次にEclipseへADT(Application Development Tool)をインストールします。次の手順で行います。 ①Eclipseを起動します。 ②Eclipse Helpを選択しInstallSoftwareを選択します。 Eclipse ADT Instrall1.jpg ③ADDを選択しADT Plugin という名前でhttp://dl-ssl.google.com/android/eclipse/site.xmlを追加します。名前は他の名前でも問題ありません。以下のようにプラグインが表示されますので全てインストールを行ってください。 Eclipse ADT Instrall2.jpg ④インストールがされたらEclipseへのADTプラグイン設定は終了です。 (7)Android エミュレータの設定 最後にAndroidエミュレータの設定を行います。Androd SDKフォルダ内にあるAVD Managerを選択すると次の画面が開きます。 Nameにはエミュレータの名前を、TagetはOSのAPIレベルにあったものを選択し、エミュレータでSDカードを使用するのであればサイズを指定して下さい。SKINはAndroidエミュレータでのSKINを選択しますがここはDefaultでよいかと思われます。ご自身の作りたいエミュレータ環境を指定して下さい。最後にCreate AVDを選択することでエミュレータ環境が作成されます。 AVD Manager.jpg (8)Androidエミュレータ環境の確認 EclipseのFileからNEW Projectを選択しAndroid Projectを選択します。 Newproject.jpg Android Projectの名前を設定します。設定しましたら次へを押してください。 Newproject2.jpg APIを選択します。AndroidOSにあったAPIを選択してください。 Newproject3.jpg 最後にパッケージネームをつけて終了を押してください。 最後に今作成したプロジェクトをデバッグさせます。エミュレータが正常に起動するかどうかを確認してください。正常に動く場合以下のような画面が表示されます。 Newproject4.jpg

2.メニューボタン・トーストプログラム

今回は、アンドロイドエミュレータ上でメニューボタンを設置し、メニューボタンを押した時点でメッセージを表示するプログラムを作成します。 プログラム作成の流れとしましては、新規アプリケーションの作成、トーストプログラムの作成、メニューボタンの設置、メニューボタンを押したイベントの定義といった流れで記述していきます。 (1)アンドロイドアプリケーションの作成 前回エミュレータを起動させたようにNewProjectからAndroid Projectを選択してください。 以下はパッケージをmy.startでToastprogramという名称でプロジェクトの作成をおこなったものです。 パッケージ内のjavaファイルを開くとこのような画面が表示javaプログラムに表記されています。
package my.start;

import android.app.Activity;
import android.os.Bundle;

public class ToastprogramActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
(2)メッセージ表示 トーストを使用してメッセージを表示させます。使用する[Toast]クラスメソッドの記述は以下のとおりです。 ■Toastクラスメソッド public static Toast makeText(Context context,CharSequence text,int duration) public void show() 上記のメソッドを使用し、トーストを表示させて何かメッセージを表示させるプログラムは次のようになります。
package my.start;

import android.app.Activity;
import android.os.Bundle;

public class ToastprogramActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
//トーストの表示
 	Toast.makeText(this,"トーストプログラムテスト、無事に動作すれば成功です。",Toast.LENGTH_LONG).show();	
    }
}
このプログラムを実行すると次のようなメッセージが表示されます。 Toast.jpg (3)メニューボタン作成 次にメニューボタン作成を行います。メニューボタンで使用する[Activity]クラスメソッドの書式は次の記述です。 ■Activityクラスメソッド public boolean onCreateOptionsMenu(Menu menu) public abstract MenuItem add(int groupId, int itemId, int order,CharSequence title) ※第一引数:グループID 第二引数:グループID 第三引数:並び順 第四引数:表示するテキスト それではメニューボタンを3つ設置したプログラムを作成してみます。 このプログラムを実行しますとエミュレータのメニューボタンを押した時点でプログラム中のメニューボタンが表示されるようになっています。
package my.start;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;

public class Menu_bottunActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu){

    	menu.add(Menu.NONE,0,0,"Menu1");
    	menu.add(Menu.NONE,1,1,"Menu2");
    	menu.add(Menu.NONE,2,2,"Menu3");
    	return super.onCreateOptionsMenu(menu);	
    }
}
(4)メニューボタンを押した時点でトーストでメッセージを表示 今回使用するメソッドは次のメソッドを使用します。メニュを押した時点で実行されるリソースIDを指定します。 ■Activityクラスメソッド public boolean onOptionsItemSelected(MenuItem item) ■MenuItemクラスメソッド public abstract int getItemId() 次のプログラムではメニューボタンを3つ設置し、押した時点でToastで異なるメッセージを表示させています。
package my.start;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MenuActiveActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    
        //メニューボタンを押されたときに実行される
        @Override
        public boolean onCreateOptionsMenu(Menu menu){
        	//メニューを追加
        	menu.add(Menu.NONE ,0,Menu.NONE,"Menu1");
        	menu.add(Menu.NONE,1,Menu.NONE,"Menu2");
        	menu.add(Menu.NONE,2,Menu.NONE,"Menu3");
        	return super.onCreateOptionsMenu(menu);
        }
//メニューが選択されたときに実行される
        @Override
        public boolean onOptionsItemSelected(MenuItem item){
       //選択されたIDを確認
        	switch(item.getItemId()){
        	case 0:
        		Toast.makeText(this, "Menu1を選択",Toast.LENGTH_SHORT ).show();
        		break;
        	case 1:
        		Toast.makeText(this,"menu2を選択",Toast.LENGTH_SHORT).show();
        		break;
        	case 2:
        		Toast.makeText(this,"menu3を選択",Toast.LENGTH_SHORT).show();
        		break;

        	}
        	return true;
        }
}
このプログラムを実行すると次のような画面、メッセージ表示がされます。 メニューボタン表示.jpg トースト表示.jpg

3.アンドロイド開発におけるアプリケーションパッケージのフォルダの構成

ここで一度アンドロイド開発における基本としてアプリケーションパッケージのフォルダ構成を学んでいきたいと思います。 実際に私がアンドロイドアプリケーション開発においてコードを記述する場合、srcフォルダ内にあるjavaファイルをメインにコード記述を行うため、他のフォルダはどういった役目をもつのか疑問がのこっていました。何度かプログラミングを行うことである程度は理解は深まりましたが、一度ここでパッケージフォルダの構成について学習していきたいと思います。 でははじめにアンドロイドプロジェクトを新規作成した場合、アプリケーションパッケージのフォルダの構成はは次のようになっているはずです。 パッケージフォルダ構成.jpg 1.[src]フォルダ 作成したソースコードが保存されるフォルダであり、プログラムソースコードをもつ.javaの拡張子をもつファイルはこちらに保存されます。アプリケーションの機能を定義するためのソースコードを記述するメインのファイルです。 2.[gen]フォルダ R.javaというファイルを生成するフォルダです。これはアプリケーション内部の部品がもつ固有のIDを定義づけるファイルということになります。 例えば次にある[res]フォルダ内にあるアプリケーションリソース(画像、値)を呼び出す際にR.java内で定義づけられた固有ID(定数)を使用することでそのリソースの読み込みが可能になります。 このファイルは自動生成される為、プログラミング時で直接ファイルに記述する必要はありません。 3. [res]フォルダ [res]フォルダは画面のレイアウト、ウィジェットのレイアウト、テキストの値、画像などのアプリケーションリソースをxmlによって保存するフォルダです。 3.1 drawableフォルダ drawableで始まるフォルダには画面で表示するための画像などの情報が保存されています。初めてアプリケーション作成時にはdrawableフォルダが3つもしくは4つになっていることに疑問をもたれることでしょう。これはそのリソースがその画面の大きさや解像度によって使い分けをする為にリソースフォルダがわけられており、その解像度に応じてリソースが使用されます。 3.2 layoutフォルダ layoutフォルダにはそのままレイアウトの情報が保存されています。その中のファイルを開くと次のような画面がでてきます。これはウィジェットの内部にテキストビューとアナログ時計を組み合わせたレイアウトの記述例です。 main_xml.jpg これはウィジェットのバックグラウンドを#f5deb3にしテキストビューにはresフォルダ内部のvalue(値のリソースを保存する)のname=helloの文字列を読み込み、さらにIDがanalogclock1のアナログ時計を読み込んでいる記述です。 少しわかりにくいとお思いでしょうが、その場合は画面左下のタブのGraphical Layoutを選択するとその記述がグラフィカル表示されその次の図のようになります。 analogclock.jpg これなら画面上でグラフィカル操作ができるのでわかりやすくちょっとしたファンクションであれば簡単に設置することが可能になります。 これに関しては色々と自分なりに試してみてどうなるのか触ってみるのがよいのかなと思っています。 3.3 valuesフォルダ 次にValuesのフォルダについてですが前述したとおりテキストビューなどを読みこんだ際に表示する文字列や値を保存してあります。 これも上記の場合ではlayout内部にあるmain.xmlの@string/helloという記述によって、values内部のstrings.xml内にあるの文字列を読み込んでいます。 少しわかりにくいかとは思いますが実際にやってみると理解が深まるかと思います。 その他この[res]フォルダ内部に個別にレイアウト設定したい場合はxmlファイルを追加することで個別に設定が可能です。 4.assetsフォルダ assetsフォルダには音声ファイルやフォントファイルなどのバイナリファイルとして保存されます。このフォルダに保存されたファイルはAssetsManagerなどを使用して呼び出すことができるようです。 5.AndroidManifest アプリケーションを実行する上で必要な情報をAndroidへ伝えるのがこのマニフェストファイルです。アプリケーション実行時には必ず必要となるファイルでありアプリケーションが利用するコンポーネント宣言や使用するアンドロイドのバージョン等が記述されます。 このマニフェストで宣言されていないコンポーネントについてはシステムに認識されず実行されない為、宣言文の記述は必要不可欠となっているようです。このAndroidManifest.xmlの記述文については次回からのアプリケーション作成で再度見直しをしていきながら学習していきたいと思います。