Google OS実験室 ~Moonlight 明日香~

GoogleのAndroidで遊び始めて, すでに6年以上が経った. Androidは思った以上の発展を遂げている. この技術を使って, 新しいことにチャレンジだ!!

Androidで無線LAN接続にチャレンジ!! (1)

Dell PC上に載せたAndroid-x86で無線LAN接続にチャレンジしてみた.
Web上の記事[1][2]などを参考にトライしたがGUIからうまく接続できなかったので, Android-x86のWi-Fi制御について少し調べてみた.
一応, Android-x86からGUIからAP接続できるようになったので, 少し整理し, 2-3回に分けてまとめてみる.
第1回は, AndroidのWi-Fi制御部分がどのように構成されているか概要をまとめてみた.

1. Wi-Fi制御の各ブロックとソースコード
AndroidのWi-Fi制御部分を簡単にまとめてみると, 以下のような構造になっているようである.
Wifi_block

1.1 Wi-Fiサービス
 Wi-Fiサービスに関するソースコードは, 以下のディレクトリにある.
 ./frameworks/base/services/java/com/android/server
   ・ ConnectivityService.java
   ・ WifiService.java
   ・ WifiWatchdogService.java

1.2 Wi-Fiクラス
  Wi-Fiを利用するためのjavaクラスであり, ソースコードは以下のディレクトリにある.
 ./frameworks/base/wifi/java/android/net/wifi
    ・WifiConfiguration.java
   ・WifiInfo.java
   ・WifiManager.java
   ・WifiMonitor.java
   ・WifiNative.java
   ・WifiStateTracker.java
   ・ScanResult.java
   ・SupplicantState.java

1.3 Wi-Fi JNIライブラリ
  JavaプログラムからWi-Fi制御を行うC/C++コードを呼び出すためのAPIで, ソースコードは以下にある.
 ./frameworks/base/core/jni/android_net_wifi_Wifi.cpp

1.4 Wifi制御ライブラリ
 Wi-Fi制御ライブラリは, WLANドライバソフトのロード/アンロードや, wpa_supplicant, dhcpの制御を行う関数群であり, ソースコードは以下にある.
  ./hardware/libhardware_legacy/wifi/wifi.c
1.5 wpa_supplicant
 wpa_supplicantはIEEE802.1x/WPAを無線LANクライアントに提供するツールであり, ソースコードは以下のディレクトリにある.
 ./external/wpa_supplicant
1.6 dhcpcd
 dhcpcdはDHCPクライアントデーモンであり, ソースコードは以下のディレクトリにある.
 ./external/dhcpcd
1.7 Wi-Fiデバイス/ドライバソフト
 Linuxで動作実績のあるWLANデバイス/ドライバソフトであれば, Androidでも問題なく動作すると思う.



2. Wi-Fi制御の下回りの関係
Wi-Fi制御の下回りであるWi-Fi制御ライブラリとwpa_supplicant, dhcpcdとの関係を整理してみた. (まだよくわかっていない部分もあるが...)
Wifi_ctrl

2.1 WLANドライバのロード/アンロード
 ConnectivityServiceからWifiServiceが起動されると, wifi_load_deriver()がコールされ, WLANドライバソフトのロード(insmod)が行われる. WLANドライバソフトのロードが完了し, WLANデバイスが起動すると"wlan.device.status=ok"となる.
 WLANドライバソフトをアンロード(rmmod)する際には, wifi_unload_driver()がコールされ, WLANデバイスを停止させる.
2.2 wpa_supplicantの起動
 WifiServiceからwifi_start_wpa_supplicant()がコールされる. wifi_start_supplicant()が"ctl.start=wpa_supplicant"を設定すると, サービスマネージャによりwpa_supplicantが起動する. wpa_supplicantが動作しているときは, "init.svc.wpa_supplicant=running"となる.
 wpa_supplicantを停止させる場合には, wifi_stop_wpasupplicant()がコールされ, "ctl.stop=wpa_supplicant"を設定すると, サービスマネージャによりwpa_supplicantが停止する. wpa_supplicantが停止すると"init.svc.wpa_supplicant=stopped"となる.
2.3 dhcpcdの起動
  wpa_supplicantを経由してAPとの接続が完了すると, "EVENT_SUPPLICANT_CONNECTION"イベントメッセージがどこからか発行され, WifiStateTrackerがdhcpcdを起動する. dhcpcdが起動すると, "init.svc.dhcpXXX=running"となる.

今回は, Wi-Fi制御部分がどのように構成されているかについてまとめてみた.
第2回では, ソースコードの修正や設定ファイル等についてまとめてみる予定.

-----
参照URL:
 [1] ネットブックでAndroidを動かす(3)
 [2] BC::BEATCRAFT Android_Wi-Fi


Androidアプリケーションの開発環境

Androidアプリケーションの開発環境について, 書籍やWebで多数紹介されているが, 簡単にまとめておく.
今回, 開発環境を構築したPCのOSはWindows 7です. 
MACやLinuxでも開発環境を構築できますが, 私はやったことがないので他のHPを参照ください. 


1. 必要なソフトウェア
Androidアプリケーションの開発環境として, 通常以下のソフトウェアを使う. これらのソフトウェアは, すべてネット上で配布されており, 無料で利用できる.
 ・ Java Development Kit(JDK)
 ・ Android SDK
 ・ Eclipse IDE for Java Developers 
 ・ ADT Plugin for Eclipse

2. JDKのインストール
JDKはJavaのソフトウェア開発キットで, 以下のURLからダウンロードできる.
http://java.sun.com/javase/ja/6/download.html

JDK01

(1) Widows版のJDK 6の最新版をダウンロードする.
現在の最新版はJDK 6 Update 19(jdk-6u19-windows-i586.exe)である.
(2) ダウンロードファイルを実行し, JDK 6をインストールする.
(3) コマンドプロンプトを起動し, JDK 6にパスが通っていることを確認する.
 C:> java -version



3. Android SDKのインストール
Android SDKはAndroidのソフトウェア開発キットで, 以下のURLからダウンロードできる.
http://developer.android.com/intl/ja/sdk/index.html

AndroidSDK10

(1) Windows版のAndroid SDK1のZIPファイルをダウンロードする.
現在の最新版はandroid-sdk_r05-windows.zipである.
(2) ダウンロードファイルを解凍する.
(3) SDK Setup.exeを実行すると, 「Android SDK and AVD Manager」が起動する.
(4) 起動時にダウンロード可能なリソースの取得が行われる.
エラーとなる場合は, 「Settings」を開き, "Force https://...」にチェックを入れる.
AndroidSDK01

(5) ダウンロード可能なパッケージが表示されるので, インストールするパッケージを選択し, ライセンスに同意して「Install」ボタンをクリックする. とりあえず, 全部のパッケージをインストールすることにする.
AndroidSDK11

(6) インストールしたパッケージの一覧が表示されるので, インストールが完了したら「Close」ボタンをクリックする.
AndroidSDK12

(7) 環境変数を設定する.
Windows 7の場合, 「コントロールパネル」→「システムとセキュリティ」→「システム」→「システムの詳細設定」で, 「システムのプロパティ」ダイアログが表示されるので, 「環境変数(N)」ボタンをクリックする.
Sys01


「xxxのユーザ環境変数」の「新規(N)」ボタンをクリックし, "Android SDK解凍ディレクトリ\tools"をPATHに追加し, 「OK」ボタンをクリックする.
sys02

(8) コマンドプロンプトを起動し, adb.exeにパスが通っていることを確認する.
 C:> adb


動画で学ぶインターネットビジネス講座「バナー作成、各種WEB素材作成編」格安コース

4. Eclipseのインストール
Eclipseはオープンソースの統合ソフトウェア開発環境で, 以下のURLからダウンロードできる.
http://www.eclipse.org/downloads/

eclipse20

(1) Windows版のEclipse IDE for Java Developersをダウンロードする.
現在の最新版はeclipse-java-galileo-SR2-win32.zipである.
(2) ダウンロードファイルを解凍する.
(3) 解凍したディレクトリのeclipse.exeのショートカットを作成し, デスクトップに置く.

5. ADTのインストール
ADT Plugin for EclipseはAndroidアプリケーションをEclipse上で開発するためのプラグインで, 以下の手順でインストールする.

(1) eclipse.exeを起動する.
(2)  「Help」メニューの「Install New Software...」を選択する.
eclipse01

(3) 「Install」ダイアログの「Add...」ボタンをクリックする.
eclipse02

(4) 「Add Site」ダイアログに以下のサイトを入力し, 「OK」をクリックする.
 ・Name : ADT Plugin for Eclipse
 ・Location :
https://dl-ssl.google.com/android/eclipse/
eclipse09

(5) 「Install」:ダイアログで「Developper Tools"にチェックを入れ, 「Next」ボタンをクリックする.
eclipse04

(6) "Install Details"において「Next」をクリックする.
eclipse05

(7) "Review Licenses"において, "I accept the terms of the license agreements"にチェックを入れ, 「Next」ボタンをクリックする.
eclipse06

(8) Installが開始される.
eclipse07

(9) Installが完了すると, 「OK」ボタンをクリックする.
eclipse08

(10) インストールが完了すると, Eclipseの再起動を促すダイアログが表示されるので, 「Yes」ボタンをクリックして, Eclipseを再起動する.
(11) 「Window」-「References」ウィンドウを表示し, 左のリストの「Android」を選択すると, Androidの設定画面が表示される. 「SDK Location」にAndroid SDKをインストールしたディレクトリを入力し, 「Apply」ボタンをクリックする.
eclipse10

(12) 利用可能なターゲット情報が表示されるので, 「OK」ボタンを押して設定を終了する.
eclipse11

「再販権付き」最新web標準テンプレート、最新MT3.3対応テンプレート

6. AVD(Android仮想デバイス)の作成
AVDとは, エミュレータに設定する端末情報を指定するもので, このAVDを指定しないと, エミュレータを起動することができない.
AVDの管理作業には, 「Android Virtual Devices Manager」ツールを使用して設定する.

(1) Eclipseの「Window」メニューの「Android SDK and AVD Manager」を選択して, 「Android Virtual Devices Manager」を起動する.
AVD03

(2) 「New」ボタンをクリックする.
AVD01

(3) 各種情報を設定し, 「Create AVD」をクリックする.
 ・ Name : AVDの名前を指定. 複数のAVDを作成することも考慮し, 設定情報を把握しやすい名前がよい.
 ・ Target : Androidプラットフォームのターゲット情報を選択.
 ・ SD Card : 作成するイメージファイルのサイズを指定.
 ・ Skin : エミュレータ起動時のスキン(解像度, ディスプレイの向きなどの情報)を選択.
 ・ Hardware : 追加するハードウェアを選択.
AVD02

以上で, 一応Androidアプリケーションの開発環境のインストール及び設定は終わりです.

とりあえず, "Hello World"で試してみよう...

----
参考URL:
 [1]
Installing the SDK | Android Developers
 [2] ADT Plugin for Eclipse | Android Developers
 [3] 勉強会/インストールガイド - 日本Androidの会

livedoor プロフィール
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

記事検索



  • ライブドアブログ