Android 開発をしてみようと思ったので。
環境構築(Windows) †
- Android SDK を取得。
- Android SDK を適当な場所に展開。
- Android SDK をインストール。
- zip 展開した場所に SDK Setup.exe があるので起動。
- 「Settings」を選択して「Force https://... sources to be fetched using http://...」にチェック。
- 「Available Packages」を選択して「https://dll-ssl ...」のチェックを入れると利用可能なパッケージの一覧が表示される。
- とりあえず「SDK Platform Android 2.1, API 7, revision 1」だけチェックして「Install Selected」。
- 「Choose Packages to Install」ダイアログが出るので、そのまま「Install」。
- 終わったらエミュレータを起動してみる。「Virtual Devices」を選んで「New」。
- 端末作成の画面が出てくるので、適当に入力。
- docomo Xperia, au IS01 を想定してるなら「Target」に「Android 1.6」系を選択。
- Softbank Desire を想定してるなら「Target」に「Android 2.2」系を選択。
- 端末が不明な場合は とりあえず 1.6 系で良いと思う。
- 「SD Card」のところはメモリ容量。とりあえず 1000 MiB(1GBってこと)で。
- 上記以外はデフォルトで良いと思う。
- 一通り入力したら「Create AVD」。
- 一覧に今つくった AVD が表示されるので、選択して「Start」。
- 暫く待つ。(結構時間がかかる)
- 満を持して Android エミュレータの画面が出てくれば OK。
- 次に 開発環境として Eclipse を取得。
- Eclipse をインストール。
- Eclipse を起動。
- Android プラグインをインストール。
- 「ヘルプ」→「新規ソフトウェアのインストール」。
- 「追加」ボタンをポチッ。
- 「名前」に何か入力。(分かる名前で適当で OK)
- 「ロケーション」に "https://dl-ssl.google.com/android/eclipse/" を入力。
- ライセンスの注釈画面では「同意する」で「次へ」。
- 警告とかいろいろ出るけけど無視してどんどん「次へ」。
- インストールが終わったら Eclipse を再起動。
- 「ウィンドウ」→「設定」で「Android」を選択。
- 何か警告ダイアログが出るかもしれないけど気にしない。
- 「参照」ボタンを押して Android SDK をインストールしたフォルダを指定。
- SDK Setup.exe があるフォルダを指定すれば OK。
これでおわり。
SDK のパッケージ追加などは「ウィンドウ」→「Android SDK and AVD Manager」からできる。
何かつくってみる †
何かつくるといえば Hello World。
- Eclipse 起動。
- 「ファイル」→「新規」→「その他」。
- 「Android」下にある「Android プロジェクト」を選択して「次へ」。
- 「新規 Android プロジェクト」画面で、とりあえず以下を設定。
- 「プロジェクト名」は「Hello Android」
- 「ビルド・ターゲット」は「Android 1.6」を選択(端末による)。
- 「アプリケーション名」は「HelloAndroid?」
- 「パッケージ名」は「com.google.myapp」
- 「Create Activity」は「HelloAndroid?」
- 「Min SDK Version」は「4」(「Android 1.6」の API Level)。
- ここは何でも良い。サンプルとしてこうする、というだけ。
- 上記を入力したら「完了」。
- ワークベンチを開く。
- 「パッケージエクスプローラ」から「src」→ パッケージ(com.google.myapp)を開くと「HelloAndroid?.java」というソースができているはず。
- 以下のように書き加える。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
-
|
|
-
|
|
|
-
!
!
!
| package com.google.myapp;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView view = new TextView(this); view.setText("Hello Android!!"); setContentView(view); }
}
|
- 「実行」→「デバッグの構成」で以下を設定。
- 「Android アプリケーション」をダブルクリック。
- 「名前」に「Hello Android」と入力。(何でも良い)
- 「プロジェクト」に「参照」から「Hello Android」を選択。
- 上記以外はデフォルトのままで OK。
- 「実行」→「デバッグ」で起動。
- AVD(エミュレータ)が起動するので暫く待つ。
- 画面が出てきたら、ボタンパネル(画面右)の「MENU」を押す。
- 画面に "Hello Android!!" と出たら成功。
ホームボタンを押すと Android のメイン画面になる。そのままもう一度アプリを起動する場合は、「MENU」を押すと、一覧に「Hello Android」アプリのアイコンが追加されているので、それを選択すれば起動する。
グラフィックを使って「Hello World」 †
PaintとかCanvasとかを使えば、いろいろ表現できる。awtに似てる感じ。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
-
|
-
-
|
!
|
|
-
|
|
-
!
|
-
!
|
-
!
-
!
-
!
-
!
|
-
!
-
!
-
!
-
!
-
!
!
!
|
|
|
-
|
-
!
!
|
!
| package com.test;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
public class AndroidDrawSample extends Activity {
private class GraphicsView extends View {
public GraphicsView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
canvas.drawColor(Color.WHITE);
paint.setAntiAlias(true);
paint.setColor(Color.RED);
paint.setStrokeWidth(3);
paint.setStyle(Paint.Style.STROKE);
canvas.drawRect(5, 5, 140, 28, paint);
paint.setColor(Color.BLACK);
paint.setTextSize(18);
paint.setStrokeWidth(1);
paint.setStyle(Paint.Style.FILL);
canvas.drawText("Hello Android!!", 8, 22, paint);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new GraphicsView(this));
}
}
|
SurfaceView? を使って「Hello World」 †
Android のメインスレッドは UIスレッドといって、基本的にこのスレッド以外のスレッドからは画面描画ができないらしい。それじゃ不便なのでできるようにしたい。という場合に使うのが SurfaceView? というやつ。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
-
|
-
-
|
-
|
-
!
!
|
-
-
-
!
|
-
-
|
-
!
|
-
|
-
!
|
|
|
-
!
-
!
-
!
|
-
!
|
-
|
|
!
!
|
-
-
-
!
!
|
|
|
-
-
!
!
|
!
| package com.test;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class AndroidSurfaceSample extends Activity {
private class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback {
public MySurfaceView(Context context) {
super(context);
getHolder().addCallback(this);
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
public void surfaceCreated(SurfaceHolder holder) {
Canvas canvas = holder.lockCanvas();
try {
canvas.drawColor(Color.WHITE);
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setAntiAlias(true);
paint.setTextSize(18);
canvas.drawText("Hello Android!!", 8, 22, paint);
} catch ( Exception e ) {
if (canvas != null)
holder.unlockCanvasAndPost(canvas);
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MySurfaceView(this));
}
}
|
参考サイト †