Android で Hello World しよう
日本Androidの会 永野行洋
下準備
Eclipseのインストール
ADTプラグインのインストール
Android SDKのインストール
Eclipse のインストール
http://www.eclipse.org/downloads/ から Eclipse
IDE for Java Developersを選択してダウンロー
ド。
ダウンロードしたファイルを解凍する。
解凍したフォルダのeclipse.exeを実行する。
ADT プラグインのインストール
Window->Preferrenceからオプションメニュー
を起動する。
Install/Updateより、Available Software Sitesを
選択する。
Addをクリック。
NameにADT。Locationにhttps://dl-
ssl.google.com/android/eclipse/ を指定する。
ADT プラグインのインストール2
Help->Install New Softwareを選択する。
Work Withの欄にADTと入力する。
下欄に出てくるDeveloper Toolsを選択する。
Next->Next->I Accept...->Finishでインストー
ル。
Android SDK のインストール
http://developer.android.com/intl/ja/sdk/1.5_r3/index.htm
からダウンロード。
ダウンロードしたファイルを解凍する。
EclipseのPreferencesにAndroidの項目が出てい
るので、SDK Locationに解凍済みのSDKの
フォルダを指定する。
プロジェクトの作成
[File] > [New] > [Project] を選択する。
[Android] > [Android Project] を選択し、[Next]
>を選択する。
プロジェクトの作成2
Project NameにHelloAndroidと指定する。
Build TargetにGoogle APIsを指定する。
Application NameにHelloAndroidと指定する。
Package Nameにjp.android.helloandroidと指定す
る。
Create ActivityにHelloAndroidと指定する。
プロジェクトの実行
Run->Debugで表示されるDebug AsにAndroid
Applicationを選択する。
ビルドは自動で実行される。手動で行いたい
ときはProject->Build Automaticallyのチェック
を外す。
ビルドに使用するJavaのバージョンは1.5.xに
しておくこと。
プロジェクトのカスタマイズ
res/layout/main.xmlを開く
ViewsからButtonをドラッグする。
TextをChangeに変更する。
TextViewをクリックし、idに@+id/Text01と入
力しておく。
プロジェクトのカスタマイズ 2
HelloAndroid.javaを開く。
extends Activityの後ろにimplements
OnClickListnerを追加する。
CTRL+1(Quick Fix)で表示される修正候補か
らAdd Unimplemts Methodsを選択する。
プロジェクトのカスタマイズ3
OnCreate()に以下のコードを追加する。
Button b = (Button)findViewById(R.id.Button01);
b.setOnClickListener(this);
プロジェクトのカスタマイズ 4
onClickに以下のコードを追加。
TextView v =
(TextView)findViewById(R.id.Text01);
v.setText(“Text has changed.”);
再度プロジェクトを実行する。(今度はデ
バッグのアイコンでOK)
クテ ビテ View ラ フサ ク ンテント
⽇本Aをよィんろよ 会 組 込 Wに ー ー
株式会社 ン ー 技術部研究開発課Aをよィんろよ 当 ー
近藤昭雄
京都 GTUG Android Hackathon 第一回 Android 勉強会
自⼰紹介
組 込 業界10年目 ン
⽇本Aをよィんろよ 会 幹事
200せ/11/12 Aをよィんろよ Sとは 発表さ 当⽇ Aをよィんろよ エろ「ろ開設 200。/02/0す Aィmaよろ」」ん-す00 Aをよィんろよ ー ン
200。/02/21 Aをよィんろよ情報 開設 ー ン ⽅法 公開 200。/04/2す にんんる」ら Aをよィんろよ Sとは Hac「atれんを 参加
200。/0す/11 大阪 Aをよィんろよ勉強会開催
200。/0す/1ず どSどで ッ ー ー Aをよィんろよ 紹介 200。/0ず/23 早稲⽥大学主催Aをよィんろよ勉強会 登壇
200。/0。/24 Aをよィんろよ どmbらよよらよ のaァaをがにんんる」ら にィんウァき 開設 200。/09/12 ⽇本Aをよィんろよ 会組 込 Wに ー ー就任
200。/10/14 ねへ どxァん Pィん 出展
200。/12/0。 ⽇経ばろをウx2009年1⽉号 Aをよィんろよ 記事執筆
2009/02/20 OSで へん「オん 2009 Sァィろをる Aをよィんろよ とらェ Pれんをら 1 ⽅法 紹介 2009/02/2せ Aをよィんろよ ー開催
2009/03/19 20 Aをよィんろよ Hac「atれんを へウtんィ し 参加 2009/0す/1す 1ず Aをよィんろよ 開発 ー開催
2009/0す/1。 にんんる」ら とらェら」んァらィ とaオ ー ー
2009/0ず/09 にんんる」ら とらェら」んァらィ とaオ ン ー ッ ン 登壇 2009/0ず/10 Aをよィんろよ Hac「atれんを へウtんィ し 参加
クテ ビテ
クテ ビテ
デ 画⾯表⽰ こ 基本的 機能 単位
デ Actろェろtオ 継承 こ べね わ ⾯倒 処理 ⾏わ く ほ 勝
⼿ や く
デ ソッ ー ー こ 様々 処理 可能
デ 機能 違う画⾯ 持 別 起 し 連携さ
デ 画⾯表⽰ Vろらエ 使用
デ ー ン 集合体
デ 通常 Actろェろtオ以外 MaァVろらエ 扱うこ 特化し MaァActろェろtオや WらbVろらエ あ
クテ ビテ
デ Actろェろtオ AをよィんろよMaをろりらイt.xm」 宣⾔し い 起 い デ AをよィんろよMaをろりらイt.xm」 中⾝
クテ ビテ
デ 増や 起 設定 起 時 選択
クテ ビテ
デ maろを.jaェa コ ーし ー
デ maろを2.jaェa
クテ ビテ
デ maろを2 中⾝
クテ ビテ
デ こ し 利用 い AをよィんろよMaをろりらイt.xm」
maろを2 追加し や
クテ ビテ
デ 起 時 選択 う
ラ フサ ク
ラ フサ ク
デ 基本的 以下 主 持
デ onでィeate(Bundle)
最初 起 時 呼 んをSaェらねをイtaをcらStatら ソッ 保存さ 情報 あ 場合 引数 てウをよ」ら そ 情報 渡さ
デ onStaィt()
表⽰さ 直前 呼び出さ
デ onReイume()
ー ー ⼊⼒ 受け付け う 時 呼び出さ 再⽣ 開始
い ン
デ onPauイe()
ッ ン 直前 呼び出さ こ ソッ 呼 後 少 く
何 通知 く破棄さ こ あ 注意
ラ フサ ク
デ onStop()
し く使わ く 時 呼び出さ が他 起 し ッ ン
時や ー ン 終了 直前き し し んをPaウイら 説明 書い う 少 く 場合 んをStんァやんをとらイtィんオ 呼び出さ 破棄さ 場合 あ 注意
デ onReイtaィt()
んをStんァ 呼 後 他 終了 等 再び 表⽰さ 時 呼び出さ
デ onとeイtィoy()
破棄さ 直前 呼び出さ んをStんァ 説明 書い う 呼び出さ いこ あ 注意
デ onSaveInイtanceState(Bundle)
ン ン 状態 保存 ン 呼び出さ ここ 引数 てウをよ」ら 対し 値 保存 い ー ン 終了し い 保存し 値 んをでィらatら ソッ 引数 引 継
再度起 し 時 てウをよ」ら 渡さ 値 利用し 状態 復元さ こ
基礎編前編 ラ フサ ク シーケンス
ラ フサ ク
デ 画⾯ 回転
onSaveInイtanceState > onPauイe > onStop > onでィeate > onStaィt > onReイume
デ ソッな 簡単 ー ー 以下 う 途中 関数名 打 込 状態
でtィ」+Sァacら 押 がWろをよんエイ 場合 ばろをウxやMac キー ン 変え 必要 あ き
デ んをPaウイら ッ 以下 う ソッ 追加さ
ウト
ウト
デ そ 画⾯構成 司 物
デ 画⾯表⽰ ー 要素 基本的 xm」 記述 がコー ⽣成 可能き
主 以下 通
ばろをらaィばaオんウt
ッ ⼀直線上 並
へab」らばaオんウt
HへMば ー う 使用
Rら」atろェらばaオんウt
ッ 同⼠ 互い 相対的位置 指定
Absoluteばaオんウt
絶対座標 位置 指定 現在 非推奨 し
細 い ン 為 使い勝⼿ い
Frameばaオんウt
常 左上 ー し 配置 場所 特定 い わ
後 配置し ッ 前⾯ 重 あわ
ウト
ばろをらaィばaオんウt
横 並 こ →
xm」 ソー コー ↓
ウト
ばろをらaィばaオんウt
縦 並 こ →
xm」 ソー コー ↓
View
View
デ にべね 構成 基本的 描画コン ー ン
デ ばaオんウt Vろらエ 継承し 作 い 代表的 Vろらエ
へらxtVろらエ
⽂字 表⽰ Vろらエ
どよろtVろらエ
⽂字⼊⼒ Vろらエ
ねmaるらVろらエ
画像 表⽰ Vろらエ
てウttんを
ン 構成 Vろらエ
Scィん」」Vろらエ
コン ー さ こ Vろらエ
MaァVろらエ
Maァ表⽰ 構成 Vろらエ
WらbVろらエ
表⽰ 構成 Vろらエ
View
デ てウttんを 追加し
View
デ てウttんを 押し こ 検知 てウttんを ねと 割 振 必要 あ
デ みaをよィんろよ:ろよめ 属性 みつ+ろよ/bウttんを1め 指定 こ ねと bウttんを1 指定
デ ソー コー こ ねと Vろらエ 取得 以下 う
View
デ てウttんを 押し こ 検知 コー
※ ン 押 ン ⽂字 ナc」ろc「!ナ 変わ
ンテントフ ンテント タ
ンテント ンテントフ タ
デ Aをよィんろよ 最 重要 機能 ⼀
デ ねをtらをt 意図 目的 いう意味 あ
デ 主 起 際 ー 使用さ
デ 大別 明⽰的 ン ン 暗黙的 ン ン 2種類あ
• 明⽰的 ン ン 直接指定し 起 さ
• 暗黙的 ン ン 明⽰的 起 さ 指定 ン ン
ー 起 あ 程度推測 け 情報 ン
ン ⼊ く 該当 起 該当
複数あ 場合 ー ー選択 表⽰さ
ンテント ンテントフ タ
デ 明⽰的 ン ン 使い⽅
デ 直接指定し イtaィtActろェろtオ 起 さ
こ 場合 maろを2 起
ンテント ンテントフ タ
デ 暗黙的 ン ン 使い⽅
デ 直接指定 ン ー 型 指定
デ こ 場合 みろmaるら/jァらるめ ー SどNと こ ー ー 起 こ
デ 複数起 場合 選択 出
ンテント ンテントフ タ
デ ン ン 記述 こ ン ン 受け取 起
う
デ AをよィんろよMaをろりらイt.xm」 以下 記述 追加 ・・・
クテ ビテ
遷移 値 受け渡し
クテ ビテ 遷移
デ 遷移さ 主 関数 以下 通
デ イtaィtActろェろtオ
起 さ デ イtaィtActろェろtオなィんRらイウ」t
起 さ 結果 受け取
クテ ビテ 間 値 受け渡し
デ maろを maろを2 値 渡し
デ 値 渡 ねをtらをt ァウtどxtィa関数 使う デ maろを.jaェa
デ maろを2.jaェa
クテ ビテ 間 値 受け渡し
デ maろを2 起 結果 maろを 渡し
デ 値 返 ねをtらをt ァウtどxtィa関数 使う デ maろを.jaェa
クテ ビテ 間 値 受け渡し
デ maろを2.jaェa
クテ ビテ 間 値 受け渡し
デ "戻 値" maろを わ こ
お疲 様 した!
ー ン 原 樹
Ma Vi w 使い方
2009 年 8 14 日
Android Hackathon in Kyoto 勉強会
Copyright© 2009 EMOTIONPLUS
Ma Vi w 何 や?
う
地図情報 表示 ビ ー
思 く い
ビ ー ?
ー ー 情報 表示
ー ー 指示 け付
け 部品
ボタン ビ ー 一種
Copyright© 2009 EMOTIONPLUS
素朴 疑問…
ータ うや 扱う や?
何 処理 実装 面倒く うや …
G S 位置情報 得 い や ?
Copyright© 2009 EMOTIONPLUS
素朴 疑問… 対 回答
ータ うや 扱う や?
用 Vi w MapView 使え 気 く い!
ータ ンターネ 得 ネ
接続 い い 表示 出 い!
何 処理 実装 面倒く うや …
Ma Vi w ほ 任 !
A 使う ー 得 必要
G S 位置情報 い や ?
別 無く 使え !
Copyright© 2009 EMOTIONPLUS
地図表示A
G g Ma う 地図表示 A i
実現 A
地図表示 他 コン ー や地図
ー 追加
A i Ma A 利用 …
A ー 得 必要 あ
得 G g ン 必要
Copyright© 2009 EMOTIONPLUS
A ー 得方法
証明書 ン ー ン 得
附属 い y いう ー 使う
Keytool –list –keytool < ーザ >¥.android¥debug.keystore
※こ パ Eclipseか Androidエ ータを実行す 場合
パ ワー 何 入力 ンター 押
ン ー ン
Copyright© 2009 EMOTIONPLUS
A ー 得方法
G g A ー 得
http://code.google.com/intl/ja/android/maps-api-signup.html
チ ボ チ 入
ン ー ン 入力 [Generate API Key] 押
※ ン ー ン **:**:**: …… :**:** う コ ン 入力
Copyright© 2009 EMOTIONPLUS
A ー 得方法
ン画面 表示 ン A ー 表示
Copyright© 2009 EMOTIONPLUS
AV 準備
ータ 使う場合 G g A 対応 AV 必要
作成 い い あ 作成 く
Eclipse ニ ー [Window] → [Android AVD Manager] 選択
Name 適当
Target [Google APIs – 1.5] 選択
SDCard 適当 パ
Copyright© 2009 EMOTIONPLUS
修正
Ma Vi w 追加
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
>
<com.google.android.maps.MapView android:id="@+id/mapview"
android:layout_width="fill_parent" android:layout_height="fill_parent" android:enabled="true"
android:clickable="true"
android:apiKey=“< 得 A ー 入 >" />
</LinearLayout>
感
Copyright© 2009 EMOTIONPLUS
ビ 修正
以 う 修正
import com.google.android.maps.MapActivity; import android.os.Bundle;
public class MapTest extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.main); }
@Override
protected boolean isRouteDisplayed() { return false;
} }
Activity
MapActivity へ
追加
Copyright© 2009 EMOTIONPLUS
ニ 修正
Google 提供 追加
ンターネ パー ン 追加
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android“… >
<application android:icon="@drawable/icon" … >
<activity android:name=".MapTest“ … >
※途中 省略
</activity>
<uses-library android:name="com.google.android.maps" />
</application>
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
追加
ンターネ 使用
Copyright© 2009 EMOTIONPLUS
あえ 動 う!
情報 ビ 実行 …
! 出 ! … や
指 動 …
ー い!
中心位置 指定 い!
衛星写真 見 い !
いうわけ 機能 追加 う!
Copyright© 2009 EMOTIONPLUS
ー 機能 追加
Ma Vi w 提供 ー コン ー 簡単
他 Ma 使う方法 あ
ビ a ソ 修正
import com.google.android.maps.MapActivity; import com.google.android.maps.MapView; import android.os.Bundle;
public class MapTest extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView map_view = (MapView)findViewById(R.id.mapview); map_view.setBuiltInZoomControls(true);
} }
け!
Copyright© 2009 EMOTIONPLUS
ー コン ー く …
部 ー ボタン
自動的 配置
ボタン 押
ー ン/
タ ー
い
注目!
Copyright© 2009 EMOTIONPLUS
指定 位置 中央
緯度 経度 使 地図 表示位置 指定
ビ a ソ 修正
import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView;
public class MapTest extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView map_view = (MapView)findViewById(R.id.mapview); map_view.setBuiltInZoomControls(true);
MapController map_ctrl = map_view.getController(); // 北緯34度59 42秒 東経135度44 19秒
double latitude = 34.0d + 59.0d / 60 + 42.0d / 3600; double longitude = 135.0d + 44.0d / 60 + 19.0d / 3600; int latitude_1e6 = (int)(latitude * 1E6);
int longitude_1e6 = (int)(longitude * 1E6);
GeoPoint point = new GeoPoint(latitude_1e6, longitude_1e6); map_ctrl.setCenter(point);
map_ctrl.setZoom(16); // ー ベ }
}
MapController 得 緯度 経度 値 計算 GeoPoint
地図 中心位置
い ー ベ
Copyright© 2009 EMOTIONPLUS
実行 …
見 う …
う 今 い
場所 …
Copyright© 2009 EMOTIONPLUS
地図情報 切 替え
地図 他 う 表示 行え
衛星写真
ー ビ ー 対応 い 場所 表示
渋滞情報 表示 現在 一部
実装 超簡単!
map_view.setSatellite(true); // 衛星写真に 替え
感
Copyright© 2009 EMOTIONPLUS
最後
今回パ
ー ー表示
G S 位置 得 連動
地図 位置情報 得
タ チパネ 操作 ー 処理
以 う 難う い !
※内容 一部 Google 作成 提供 い コン ン ベー 変更 コ ン 表示 2.5 ン 記載 条件 従 使用 い
ND 使い方
日本 会 幹事 四国支部長
瀬戸 直喜
ネ 開発環境
※こ 資料 一部 Google が作成 提供し い コン ンツをベ に変更したも エ コ ン 表示2.5 ン に記載 条件に従っ 使用し います
京都 サ 号館
2
自己紹介
徳島 某 系企業 勤務
業務系& 系
実装系 ン
今 遅く い!こ 始 開
発 連載中
第 回: こ
ェン
3
ND 概要
4
ND と
略
コ 可能 ソ
を実装 た
– ソ コ をコン ビ
、共有 を生成
– 一 ュ 利用
– 実機 展開 機能
5
ND 含ま てい
6
ND 特徴
7
生成
簡単 ビ を記述 コン
安定版ネ 一部 、将来
ョン 保証 但 、 以
– 専用
–
– サ
関連 を順次追加予定
*:組込機器に広く用いら 32bit RISC CPU キ チ 高性能
ー テク ャ上 ND と
8
Bionic libc
Bionic libc
Bionic libc
Android NDK
Android NDK
専用
記 互換性
–
–
– そ 他
例外機能 未サ
及び をサ
9
専用機能を有
専用機能を有
由来
– 故 、 セン セン
10
BSD BSD ン ン
とネ テ コー
11
Android
Android ション ション
C/C++
C/C++ ネ ネ コ コ ド ド
通常 ソ 動作
N N
N N
ネ テ コー 実装と利用
側 ワ を け ソ
を宣言
– []
ネ 側 ソ 実体を実装
共有 用意 、
ョン 組 込
12
ネ テ コー 実装と利用
共有 名 標準 規約 従う
ュ 名 、 ン
ン を含
例
側 共有 を
… 不要
13
ND 利用 け 注意事項
ネ コ あ 開発 良く い
原則 、 ン を意識 、
サ 則 記述
記 理由 ネ コ 記述
こ 許さ い
– 既 コ を流用 た
– ン を確保 た
を十 理解 こ を推奨
14
ND 使い方
15
ND ン ー W 場合
16
ン ー 必要
ン ー 必要
最新版 仮想実行環境
– 未サ
– 以降
–
– ※ ン 時 指定
ND ン ー 流
17
ND ン ー 流
18
ND 配置
後、 配 任意
、 本体を配置
19
ン ー 方法
ン ー 方法
ND ン ー 流
20
ND ー パ 設定
21
ン ー 方法
ン ー 方法
ホ 中
_ _ 、
を設定
rt A R I _ K_R T= :¥¥ g i ¥¥a r i k 1 5_r1¥¥
※ 文を 最終行 追加
※ = 両隣 空白文 を入 いこ
※ 空白文 を入 いこ を
ND ン ー 流
22
実行
移動
を実行
23
ン ー 方法
ン ー 方法
ND ン ー 流
24
ン ー 完了
25
表示を確認
ネ テ コー ビ 方法
26
ネ テ コー ビ 方法
27
ネ テ コー 配置
任意 、 記
を配置
– ネ ソ コ
–
–
28
ネ テ コー 例
29
_ _ _ _ _
}
■ ■ second.c second.c JNI JNI 形式 形式 記述した 記述した “add “ add 関数 関数 ” ”
}
■ ■ first.c first.c 通常 通常 C C ロ ロ ム ム
ネ テ コー ビ 方法
30
ついて
ネ をビ た
、 た 、共有
ュ 化 こ を宣言
ュ 対 、複数
定義可能
31
記述
32
_ ン 指定
: ビ
_ 変数 初期化
_ ュ 名を記述
_ _ ソ 名を記述
_ _ ビ
: 依 共有 ビ
_
_
_ _
_ _ 名 利用
_ _ 利用 共有
ネ テ コー ビ 方法
33
記述
ョン 必要 ネ
ュ を定義
配置場所
– ョン 短縮名
34
_ _
_
_ _ : ョンソ
_ : _ 定
義 た ュ 名 空白区
ネ テ コー ビ 方法
35
ビ
ョン 短縮名を指定 、
ビ を実行
36
、 定義 た ョン
短縮名 名
ネ テ コー を使う
37
を
経由 ネ ソ を呼び出
}
ネ ソ 宣言
}
実行結果
38
ND 使い方まと
39
40
終わ
ネ コ を再コン
等 を再コン
※ → 順序 コン こ
まけ:再コンパ 方法
41