android lecture #01 @pro&bsc inc

28
Androidの魅力と開発 2012/01/25()@PRO&BSC 樋口 祐紀 ([email protected])

Upload: yuki-higuchi

Post on 04-Jul-2015

1.424 views

Category:

Education


3 download

DESCRIPTION

2012/01/25 に株式会社 PRO&BSC にて行った Android 研修の資料 #1 です。

TRANSCRIPT

Page 1: Android Lecture #01 @PRO&BSC Inc

Androidの魅力と開発 2012/01/25(水)@PRO&BSC

樋口 祐紀

([email protected])

Page 2: Android Lecture #01 @PRO&BSC Inc

突然ですがクイズです

• Twitter / Evernote / メールを利用し、任意の文字列を送信するAndroidアプリを作るのに必要な時間は?

A. 3分

B. 3時間

C. 3日

D. Androidでは無理... だけど...

3秒でできるよ。そう、iPhoneならね 2

Page 3: Android Lecture #01 @PRO&BSC Inc

これだけ書けば解決! public class Test extends Activity {

/** Called when the activity is first created. */

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

new AlertDialog.Builder(this).setMessage("Start activity ?")

.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

Intent intent = new Intent(Intent.ACTION_SEND);

intent.setType("text/plain");

intent.putExtra(Intent.EXTRA_TEXT, "Hello, Android!!");

startActivity(intent);

}

}).setNegativeButton("No", null).show();

}

} 3

Page 4: Android Lecture #01 @PRO&BSC Inc

Evernote

IMoNi

twicca

This is Android!!

4

Page 5: Android Lecture #01 @PRO&BSC Inc

Androidの今後

Page 6: Android Lecture #01 @PRO&BSC Inc

Android x Arduino

• Arduino(アルドゥイーノ) – AVRマイコン、入出力ポートを備えた基板、C言語風のArduino言語とそれの統合開発環境から構成されるシステム。Arduino はスタンドアロン型のインタラクティブデバイス開発だけでなく、ホストコンピュータ上のソフトウェア(例えば、Adobe Flash、Processing、Max/MSP、Pure Data、SuperCollider)で制御することもできる。 6

Page 7: Android Lecture #01 @PRO&BSC Inc

Sony Internet TV

7

「世界初のGoogle TV搭載 HDテレビ」

中身は…

家電用Atomプロセッサ, Android2.1,

Flash10.1対応Chromeブラウザ、Google TVソフトウェア

出典: ソニー、Google TV搭載テレビをデモ-engadget http://goo.gl/K4Fl 「閉鎖的なテレビWebをオープンに」-ITmediaNews http://goo.gl/gns4

Page 8: Android Lecture #01 @PRO&BSC Inc

こんなテーマでAndroidを紹介します

1. Android って何?

2. Android vs iPhone

3. 実際の開発は?

4. A3

8

Page 9: Android Lecture #01 @PRO&BSC Inc

1. Android って何?

Page 10: Android Lecture #01 @PRO&BSC Inc

様々なAndroid端末

10

Xperia Galaxy S Desire

IS01 / LYNX dynabook AZ

Streak

nook

Page 11: Android Lecture #01 @PRO&BSC Inc

【競合製品】 iPhone OS (iOS) / Symbian OS / BlackBerry / WindowsPhone7 / webOS

Android って何?

• Androidとは…

– Google/docomo/Intel等、携帯電話会社や端末メーカーが加盟する「Open Handset Alliance」が発表した携帯電話用ソフトウェアプラットフォーム

• 結局のところ…

– LinuxベースOS + ミドルウェア (+ UI)

• Linux 2.6カーネルがベースに、

各種ライブラリをミドルウェアとして備える

– Javaを使ってアプリ開発が可能

• SDK同梱エミュレータにて動作確認

• 実機を接続すれば実機デバッグも可能 11

Page 12: Android Lecture #01 @PRO&BSC Inc

Androidのアーキテクチャ

Linuxカーネル

ライブラリ

OpenGL | ES

SGL

サーフェイス マネージャ

FreeType

SSL

メディア フレームワーク

WebKit

libc

SQLite

アプリケーションフレームワーク

アクティビティ マネージャ

パッケージ マネージャ

ウィンドウ マネージャ

電話 マネージャ

コンテンツ プロバイダ

リソース マネージャ

ビューシステム

位置 マネージャ

通知 マネージャ

センサー マネージャ

アプリケーション

Home Contacts

(アドレス帳) Phone (電話)

Browser (ブラウザ)

Your Application!!

ディスプレイ ドライバ

キーパッド ドライバ

Bluetooth ドライバ

USBドライバ

カメラドライバ

WiFiドライバ

フラッシュメモリ ドライバ

オーディオ ドライバ

バインダ(IPC) ドライバ

電源管理

Androidランタイム

コアライブラリ

Dalvik 仮想マシン

12

SDK 開発

NDK 開発

Page 13: Android Lecture #01 @PRO&BSC Inc

2.Android vs iPhone UI / アプリ連携 / データ共有 / Market /

マルチタスク処理 / バッググラウンド処理

Page 14: Android Lecture #01 @PRO&BSC Inc

Android vs iPhone 1/3

• UIの滑らかさはiPhoneが格段に上

– iPhoneアプリのネイティブコードによる恩恵か?

• iPhoneアプリの開発、実行環境が限定されるデメリットも

• Android 2.2はJITコンパイラを搭載し、高速化へ

• Androidの先進的なアプリ連携

–例: メモ帳アプリによるメモ内容の他アプリ連携

• iPhoneでは共有するための機能を明示的に呼び出し

• Androidでは「インテント」により処理を依頼

14

Page 15: Android Lecture #01 @PRO&BSC Inc

Android vs iPhone 2/3

• Androidではアプリ間データ共有が容易

– 「コンテンツプロバイダ」により、SQLiteで保存したデータを他アプリから(ユーザの承認に基づき)利用可能

• 例: アドレス帳はコンタクト情報のコンテントプロバイダとなっており、他アプリから利用可能

• 自由なAndroid Market

– iPhoneの厳しい審査と比べると、ほとんど「何でもありの自己責任」

– システムを破壊するようなマルウェア相当の作成はパーミッション保護により困難なものの、情報が盗まれる可能性は十分あり 15

Page 16: Android Lecture #01 @PRO&BSC Inc

Android vs iPhone 3/3

• Androidはマルチタスク処理が可能

– Androidアプリは別アプリに画面を奪われても動き続けることができるため、複数のアプリケーションを起動した場合でも、それらの切り替えが瞬時に可能

• Androidはバックグランド処理も可能

–例: Android Marketからアプリをダウンロードしながら別のアプリを探す

–例: Twitterクライアントをバックグランドで起動しておき、ダイレクトメッセージをバイブ&ポップアップ表示

16

Page 17: Android Lecture #01 @PRO&BSC Inc

Android アプリの実体である 「Activity」クラスの複雑な状態遷移

実行中

終了

起動

一時停止

破棄済み

① onCreate() ③ onRestoreInstanceState() ② onStart() ④ onResume()

① onSaveInstanceState() ② onPause()

onResume()

<Process killed>

① onSaveInstanceState() ② onStop()

onDestroy() または

<Process killed>

③ onResume() ② onStart() ① onRestart()

17

Page 18: Android Lecture #01 @PRO&BSC Inc

3. 実際の開発は?

Page 19: Android Lecture #01 @PRO&BSC Inc

「HelloWorld」書いてみよう!!0/3

• 開発環境 整備Tips

– http://bit.ly/y5IrM3 (1.8MB)

19

Page 20: Android Lecture #01 @PRO&BSC Inc

「HelloWorld」書いてみよう!!1/4

20

Page 21: Android Lecture #01 @PRO&BSC Inc

「HelloWorld」書いてみよう!!2/4

21

Page 22: Android Lecture #01 @PRO&BSC Inc

「HelloWorld」書いてみよう!!3/4 package jp.probsc.higuchi_yuki.hello;

import android.app.Activity;

import android.app.AlertDialog;

import android.os.Bundle;

public class Hello extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

// ダイアログの表示

new AlertDialog.Builder(this)

.setMessage("Hello, World!!")

.setPositiveButton("OK", null)

.show();

}

} 22

Page 23: Android Lecture #01 @PRO&BSC Inc

「HelloWorld」書いてみよう!!4/4

23

<?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"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="text:" /> <EditText android:id="@+id/editText" android:layout_width="120dp" android:layout_height="wrap_content" /> </LinearLayout> <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <TableRow> <Button android:id="@+id/btn01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1" /> ...

main.xml

Page 24: Android Lecture #01 @PRO&BSC Inc

24

package jp.probsc.higuchi_yuki.button; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText editText = (EditText)findViewById(R.id.editText); Button btn01 = (Button)findViewById(R.id.btn01); btn01.setOnClickListener(new OnClickListener() { public void onClick(View v) { Toast.makeText(MainActivity.this, editText.getText().toString(), Toast.LENGTH_LONG).show(); } }); } }

MainActivity.java

Page 25: Android Lecture #01 @PRO&BSC Inc

野良アプリをインストールしよう1

http://bit.ly/c7vhwT (15KB) 25

野良アプリを配布できるのも Androidの大きな魅力

Page 26: Android Lecture #01 @PRO&BSC Inc

野良アプリをインストールしよう2

http://bit.ly/uNd2eg (25KB) 26

インストールはこちら:

Page 27: Android Lecture #01 @PRO&BSC Inc

4. A3

Page 28: Android Lecture #01 @PRO&BSC Inc

28

スケジュール エントリー期間(全部門) 2011/12下旬~2012/03/11

アプリ提出期限 2012/03/14

結果発表、表彰式 2012/04(予定)