Android環境のアプリケーションの開発入門
関連リンク:ARM自宅サーバ
|
株式会社 日新テクニカ http://www.nissin-tech.com 更新日: 2011年5月19日 |
- JDK(Java SE Development Kit)をインストールする
- Android SDKをインストールする
- Android-2.3関連のパッケージをインストールする
- Eclipseをインストールする
- ADT(Android Development Tools)をインストールする
- Eclipseのコンフィグ
- Androidのシミュレータ
- 初のAndroidのアプリケーション
- ADBの使い方
- 実機でアプリケーションを実行させる
- Android環境でハードウェアへアクセスする
■ JDK(Java SE Development Kit)をインストールする
http://www.oracle.com/technetwork/java/javase/downloads/index.htmlからJDKをダウンロードする。現時点Windows用の最新版はjdk-6u25-windows-i586.exeです。ダウンロードした後、インストールします。
■ Android SDKをインストールする
http://developer.android.com/sdk/index.htmlからAndroid SDKをダウンロードする。現時点Windows用の最新版はinstaller_r11-windows.exeですが、インストール時JDKを探せません。そのため、installer_r09-windows.exeを利用します。ダウンロードした後、インストールします。
■ Android-2.3関連のパッケージをインストールする
インストールした「SDK Manager」を実行させます。Android-2.3関連のパッケージをインストールするだけ、「Choose Packages to Install」画面で「Cancel」を押します。
画面のようなAndroid-2.3関連のパッケージを選択します。「Install Selected」ボタンを押します。
インストール完了すると、「Yes」ボタンでADBを再起動します。
■ Eclipseをインストールする
http://www.eclipse.org/downloads/からEclipse IDE for Java Developersをダウンロードする。現時点Windows用の最新版はeclipse-java-helios-SR2-win32.zipです。直接解凍します。
■ ADT(Android Development Tools)をインストールする
http://developer.android.com/sdk/eclipse-adt.html#installingからEclipse IDE for Java Developersをダウンロードする。現時点Windows用の最新版はADT-10.0.1.zipです。Eclipseのフォルダに解凍します。
■ Eclipseのコンフィグ
Eclipseを起動させます。メインメニュー「Windows」->「Preferences」を選択します。SDKのインストールフォルダ「C:\Program Files\Android\android-sdk-windows」を設定します
「OK」ボタンを押します。
■ Androidのシミュレータ
「SDK Manager」を実行させます。
「new」ボタンを押します。

画面のように設定して、「create AVD」を押します。

「Start」ボタンでAndroidのシミュレータを起動させます。「Launch」ボタンを押します。

Androidのシミュレータを起動した様子
■ 初のAndroidのアプリケーション
Eclipseを開く、メニュー「File」->「New」->「Android Project」で
新プロジェクトを作ります。

関連の設定を入力して、「Finish」ボタンで完成します。

src -> com.AndroidHello -> MainActivity.javaソースコードが見えます。

左側のAndroidHelloプロジェクトを選択し、Runマークを押して、Run As->Android Applicationを選択します。Androidシミュレータ環境でAndroidHelloプロジェクトを実行させます。

実行した様子
■ ADBの使い方
「SDK Manager」を実行させます。ADB用のUSBドライバをインストールします。
画面のように設定して、「Install Selected」ボタンを押します。
mini6410ボードに給電して、Androidが起動完了した後、USBケーブルでパソコンのUSBポートに接続します。USBドライバはC:\Program Files\Android\android-sdk-windows\google-usb_driverにあります。
パソコンの環境変数にADBのパス"C:\Program Files\Android\android-sdk-windows\platform-tools;"を添加します。コマンドランでadbを入力して確認します。
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\zqing>adb ← 入力する。
Android Debug Bridge version 1.0.26
-d - directs command to the only connected USB device
returns an error if more than one USB device is present.
-e - directs command to the only running emulator.
returns an error if more than one emulator is running.
-s <serial number> - directs command to the USB device or emulator with
the given serial number. Overrides ANDROID_SERIAL
次のコマンドでボードの接続を確認します。
C:\Documents and Settings\zqing>adb devices ← 入力する。 * daemon not running. starting it now on port 5037 * * daemon started successfully * List of devices attached MINI6410_2011W08 device
次のコマンドでShellに入ります。
C:\Documents and Settings\zqing> adb shell ← 入力する。
次のコマンドでソフトapkをインストールする。
C:\Documents and Settings\zqing> adb install your.apk ← 入力する。
■ 実機でアプリケーションを実行させる
Eclipseを起動させます。プロジェクト「AndroidHello」を選択して、マウスの右メニューに「Properties」を選択します。
「Editor」ボタンを押します。

「Target」タブに「manual」を設定して、「OK」ボタンを押します。
メニューRun->Run As->Android Applicationを選択すると

mini6410を選択して、「OK」を押します。

実機で動く様子
デバッグもできます。

■ Android環境でハードウェアへアクセスする
Android環境でハードウェアへアクセスするために、ライブラリlibfriendlyarm-hardware.soを提供ました。プリインストールされたiTestアプリケーションはこのライブラリのデモです。ライブラリの場所:
Androidのソースディレクトリ
vendor/friendly-arm/mini6410/prebuilt/libfriendlyrm-hardware.so
ボードには
/system/lib/libfriendlyarm-hardware.so
ライブラリの使い方:
開発しているアプリケーションのフォルダにはlibs\armeabiフォルダを作ります。libs\armeabiフォルダにはライブラリlibfriendlyarm-hardware.soをコピーします。アプリケーションのフォルダのsrcフォルダにはcom\friendlyarm\AndroidSDKフォルダを作ります。AndroidSDKフォルダにはHardwareControler.javaソースを添加します。HardwareControler.javaの内容は:
package com.friendlyarm.AndroidSDK;
import android.util.Log;
public class HardwareControler
{
/* Serial Port */
static public native int openSerialPort( String devName, long baud, int dataBits, int stopBits );
/* LED */
static public native int setLedState( int ledID, int ledState );
/* PWM */
static public native int PWMPlay(int frequency);
static public native int PWMStop();
/* ADC */
static public native int readADC();
/* I2C */
static public native int openI2CDevice();
static public native int writeByteDataToI2C(int fd, int pos, byte byteData);
static public native int readByteDataFromI2C(int fd, int pos);
/* 汎用インターフェース */
static public native int write(int fd, byte[] data);
static public native int read(int fd, byte[] buf, int len);
static public native int select(int fd, int sec, int usec);
static public native void close(int fd);
static {
try {
System.loadLibrary("friendlyarm-hardware");
} catch (UnsatisfiedLinkError e) {
Log.d("HardwareControler", "libfriendlyarm-hardware library not found!");
}
}
}Eclipseを起動させます。プロジェクトを右クリックして、「Refresh」で更新します。次の様子なら、ライブラリを正確に添加しました。

HardwareControlerの関数を使えば、ソースには次の行を添加します。
import com.friendlyarm.AndroidSDK.HardwareControler;
ライブラリの関数の説明:
シリアルポートの関数:
| 関数名 | パラメータと戻り値 | 説明 |
| int openSerialPort( String devName, long baud, int dataBits, int stopBits ) | devName: シリアルポート名: /dev/s3c2410_serial1 /dev/s3c2410_serial2 /dev/s3c2410_serial3 /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 baud: ボーレート dataBits: データビット (5~8,一般的に8 ) stopBits: ストップビット(1~2,一般的に1 ) 戻り値: 成功すればシリアルポートのファイル・ディスクリプターを戻ります,ファイル・ディスクリプターでread、write、selectなどの関数がアクセスできます。エラーなら,戻り値 -1。 | シリアルポートポートを開く。 |
| int write( int fd, byte[] data) | fd: ファイル・ディスクリプター data: 書き込むデータ 戻り値: 書き込んだバイト数,-1はエラー。 | 書き込む |
| int read( int fd, byte[] buf, int len) | fd: ファイル・ディスクリプター data: 読み込むバッファーファー len: 読み込むバイト数 戻り値: 読み込んだバイト数,-1はエラー。 | 読み込む |
| int select( int fd, int sec, int usec) | fd: ファイル・ディスクリプター sec: 待ち時間(S) usec: 待ち時間(uS) 戻り値: fdにはデータがあれば1,なければ0、-1はエラー。 | データがあるかどうか、調べる |
| void close(int fd) | fd: ファイル・ディスクリプター | fd: ファイル・ディスクリプターをクローズする。 |
LEDの関数:
| 関数名 | パラメータと戻り値 | 説明 |
| int setLedState( int ledID, int ledState ) | ledID: LEDナンバー (0~3) ledState: 1点灯,0消灯 戻り値: 成功0,エラー-1 | LED制御 |
PWMの関数:
| 関数名 | パラメータと戻り値 | 説明 |
| int PWMPlay(int frequency); | frequency: 音の周波数 戻り値: 成功0,エラー-1 | 鳴る |
| int PWMStop(); | 戻り値: 成功0,エラー-1 | 消音 |
ADCの関数:
| 関数名 | パラメータと戻り値 | 説明 |
| int readADC() | 戻り値: ADCの値,エラー-1 | ADCの値を読み込む |
EEPROMの関数:
| 関数名 | パラメータと戻り値 | 説明 |
| int openI2CDevice(); | 戻り値: EEPROMのファイル・ディスクリプター,エラー-1 | EEPROMを開く |
| int writeByteDataToI2C( int fd, int pos, byte byteData); | fd: openI2CDevice関数から戻すファイル・ディスクリプター pos: EEPROMのoffset(0~255) byteData: 書き込むデータ 戻り値: 書き込んだデータ数,エラー-1 | EEPROMに1バイトを書き込む。この関数は時間がかかります。約10mS |
| int readByteDataFromI2C( int fd, int pos); | fd: openI2CDevice関数から戻すファイル・ディスクリプター pos: EEPROMのoffset(0~255) 戻り値: 読み込んだデータ,エラー-1 | EEPROMから1バイトを読み込む。この関数は時間がかかります。約10mS |
| void close(int fd) | fd: ファイル・ディスクリプター | fd: ファイル・ディスクリプターをクローズする。 |