삼성소프트웨어멤버십 20 th 박희근 (http://sirini.net/blog) A n d r o i d.

Slides:



Advertisements
Similar presentations
Android Application. 최신버전 안드로이드 SDK 설치 1. SDK 설치 접속.
Advertisements

All Rights Reserved, Copyright© UBIVELOX co.,Ltd LG U+ 과금 API 소개 Version1.0 Authorubivelox Date21-Feb
Application Create Android Side. Application 설계 시 꼭 지켜야 할 5 가지 UI 쓰레드는 UI 만 처리하게 하자 사용자를 방해하지 말라. 다양한 화면 해상도를 지원하라 –Absolutelayout 을 사용하지 말아라 ( 고정값 )
For Android 이재원.  페이스북 SDK 설치  2 가지 예제 & 소스  API 사용 예제 프로젝트 만들기  Graph API  참고사항 & 사이트.
Page  1 Copyright© 2015 Hanbit Academy, Inc. All rights reserved. [ 강의교안 이용 안내 ] 본 강의교안의 저작권은 한빛아카데미㈜에 있습니다. 이 자료를 무단으로 전제하거나 배포할 경우 저작권법 136 조에 의거하여.
안드로이드 (Android) 발표자 : 이강민. 1. 안드로이드란 ? 구글에서 제작한 모바일 디바이스를 위한 플랫폼 ▫ 모바일 디바이스 플랫폼이란 ?  모바일 디바이스를 위한 소프트웨어 집합 ( 미들웨어, 키 어플리케이션, 운영체제 등 ) 2. 모바일 플랫폼 시장 점유율.
구글 TV 앱 개발 채원석. 발표순서 개요 ‘Panoramio’ - 구글 TV 앱 포팅 사례 기초 개발 사용자 인터페이스 요약.
2014 년 3 학년 1 학기 월요일 분반 (001,005) 인공지능연구실.  Activity  View  View Group - Layout.
Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. 
Page 1 Android Programming November 04 / 2009 S/W Junhyuk Jang.
Unlocking Android 안드로이드 패키지 (1/2) 2 Unlocking Android 안드로이드 패키지 (2/2) 3.
Couple Tetris 제안서 맨땅에해딩 (GNU-A3) 06 안대웅, 06 박순응. CONTENTS 1. 프로젝트 정의 및 목적 2. 프로젝트 결과물의 개요 2.1. 프로젝트 결과물의 구조도 2.2. 프로젝트 결과물의 흐름도 2.3. 프로젝트 결과물의 그림 2.4.
Android Activity & View & Layout
6 메 뉴.
Efl을 이용한 타이젠 네이티브 웨어러블 앱 만들기
CHAP 18. 멀티미디어.
CHAP 10. 액티비티와 인텐트.
CHAP 10. 액티비티와 인텐트.
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
Android 개발환경 설정 및 Android View 소개
01. 안드로이드 개요와 개발환경 구축 제목.
CHAP 19. 구글맵.
○ 본 강의 자료는 이지스퍼블리싱(주)에서 제공하는 강의 교안입니다.
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
CHAP 7. 메뉴와 대화상자.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
A n d r o i d Android 2010 년 5월 19일 작성자 : 백 선 재.
Chapter 02 JAVA 프로그래밍 시작하기 01 실무에서 사용하는 JAVA 개발 환경 02 JAVA 프로그램 작성
Java Seminar 6.
CHAP 4. 이벤트 처리.
CHAP 6. 이벤트 처리.
발표 날짜 팀명 I조 (회사 : 코나아이) 팀원 이름 김택현, 김효중, 김휘연
제1강 안드로이드 특징과 개발환경 구축 안드로이드 앱 개발 강좌.
어댑터뷰 리스트 뷰, 그리드 뷰, 스피너, 갤러리 등을 묶어 어댑터 뷰라 부름
안드로이드 개요 2005년 휴대폰 소프트웨어 개발사인 Android를 구글이 인수 2007년 11월 오픈소스로 공개
13. 멀티미디어와 Google 지도 제목. 13. 멀티미디어와 Google 지도 제목.
3주차 Android Application ANDROID App..
가속도 감지센서를 이용한 안드로이드 게임 지도교수님 : 전진우 이동훈.
CHAP 7. 메뉴와 대화상자.
명품 Java Programming.
07. 메뉴와 대화상자 제목. 07. 메뉴와 대화상자 제목 메뉴를 작성하고 사용하는 방법을 배운다. 토스트의 다양한 출력 방법을 알아본다. 대화상자의 사용법을 익힌다.
Java IT응용시스템공학과 김형진 교수 2장. 자바의 환경 public class SumTest {
Android 개발환경 설치 및 Hello World
CHAP 6. 이벤트 처리.
안드로이드 테트리스에 필요한 최소 기능.
CHAP 14. 데이터베이스와 환경 설정.
02. 처음으로 만드는 안드로이드 애플리케이션 제목.
Android Studio 설치하기 PPD JSY.
컴퓨터 소프트웨어 설계 및 실험 년 1학기 실험계획 -.
서브원 SSL VPN 2차인증(구글 OTP) 사용 안내서(Android)
U+ Biz 그룹웨어 Mobile Office User Guide.
강의에 대한 소개 책에 대한 소개 공부하는 방법 자바 설치 방법
Run 클릭.
DataScience Lab. 박사과정 김희찬 (월)
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
CHAP 3. 첫번째 애플리케이션.
서브원 SSL VPN 2차인증(구글 OTP) 사용 절차서(Android)
컴퓨터 소프트웨어 설계 및 실험 년 1학기 실험계획 -.
CHAP 13. 서비스와 방송 수신자.
WinCE Device Driver 실습 #2
Bingo 빙고 따라가기.
CHAP 5. 레이아웃.
중등교원 전보시스템 로그인 오류시 해결 해결방안 * 작성일 2016 년 12 월 15일 * 작성자 광주광역시교육청.
JSP와의 첫 만남 간간한 JSP 프로그램을 작성하면서 앞으로 학습에 필요한 과정을 익힌다.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
안드로이드 앱 분석 팀 기반의 설계 프로젝트 박민재
운영체제보안 3번 과제 설명 팀 기반의 설계 프로젝트 박민재
박 현 미 울산여자상업고등학교 창업포스터 만들며 포토샵과 친해지기 박 현 미 울산여자상업고등학교.
WinCE Device Driver 실습 #2
Choi Younghwan CSE HUFS
Presentation transcript:

삼성소프트웨어멤버십 20 th 박희근 ( A n d r o i d

Hello world!

순서 1. 안드로이드 역사 2. 시스템 구조 3. 응용프로그램 구조 [ 부록 ] 예제프로그램 소개

안드로이드의 역사

M o b i l e 점점 커져가던 모바일 시장

안드로이드의 역사 M o b i l e 모바일 기기까지도 광고 플랫폼으로 만들고 싶었던 Google Ads by Google

안드로이드의 역사 그 들의 선택

안드로이드의 역사 “ 모바일 시장에서 지배력을 유지하려면, 우리가 직접 생태계를 창조해야 한다.”

안드로이드의 역사 2005 년 7 월, 팔로알토의 “ 안드로이드 ” 사 인수 2007 년 11 월 5 일, 오픈 핸드셋 얼라이언스 결성 2008 년 10 월 21 일, 안드로이드 오픈소스화 2009 년 2 월, 안드로이드 SDK 년 1 월, 안드로이드 SDK 2.1

안드로이드의 역사 친구에서 적으로

안드로이드의 역사 구글 CEO 에릭 슈미트가 애플 이사회를 탈퇴한 후 넥서스 원은 공식적으로 멀티터치를 지원하기 시작

Android Ads by Google 안드로이드의 역사 오늘날 안드로이드 플랫폼은 아이폰 OS 에 대항할 강력한 후보 군으로 이름을 알리고 있으며 지금 이 순간에도 전세계 수 많은 개발자들이 안드로이드 플랫폼에서 애플리케이션을 개발하고 있다.

시스템 구조

응용 프로그램들 응용프로그램 프레임워크 리눅스 커널 안드로이드 런타임 라이브러리들

시스템 구조 키패드 USB WiFi 오디오 전원관리 화면출력 블루투스 카메라 메모리 바인더 리눅스 커널 구성

시스템 구조 OpenGL ES FreeType 웹킷 엔진 서패이스 매니저 미디어 코덱 SQLite 라이브러리들 SGL SSL libc

시스템 구조 핵심 라이브러리들 Dalvik 가상 머신 안드로이드 런타임 ? ?

시스템 구조 패키지 매니저 패키지 매니저 텔레포니 매니저 텔레포니 매니저 리소스 매니저 리소스 매니저 위치 매니저 위치 매니저 센서 매니저 센서 매니저 액티비티 매니저 액티비티 매니저 윈도우 매니저 윈도우 매니저 컨텐츠 제공자들 컨텐츠 제공자들 보기 시스템 보기 시스템 알림 매니저 알림 매니저 응용프로그램 프레임워크

시스템 구조 홈 홈 연락처 전화 브라우저 여러분의 어플 여러분의 어플 응용프로그램들

시스템 구조 Dalvik ! ! 구글의 댄 본스타인이 만든 가상 머신 낮은 메모리용으로 최적화된 자바 가상머신 달빅 어원 : 본스타인 조상이 살던 아이슬란드의 어떤 물고기 잡던 마을 이름

시스템 구조 Dalvik vs Java 1. 달빅 VM 은.dex 파일을 실행 ( 자바는.jar 파일 ) 2. 달빅에서 부동소수점 연산은 에뮬레이팅 방식으로 처리 ( 하드웨어 성능이 낮아 소프트웨어적으로 연산 >> 느림 ) 3. 달빅에선 finalization 은 지양하도록 권고됨 ( 대신 명시적으로 close() 나 terminate() 를 쓰도록 권고 )

시스템 구조 당신이 모바일 개발자라면 알아야 할 시스템상의 제약들 1. 느린 처리 속도 2. 제한된 RAM / 영구 저장공간 3. 저해상도의 작은 화면 4. 낮은 신뢰성과 비싼 데이터 전송 비용 (ex. 3G) 5. 제한된 배터리 수명

시스템 구조 당신이 훌륭한 모바일 개발자라면 지켜야 할 개발 습관들 (1) 효율적으로 동작하는 코드를 작성 할 것 (2) 제한된 저장 공간을 예측할 것 (3) 작은 화면, 핑거 터치를 위한 UX 를 고려할 것 (4) 느린 속도와 긴 지연 시간을 예측할 것 (5) 통신 비용을 최대한 줄일 수 있도록 해 줄 것

시스템 구조 안드로이드의 시스템 구조는 전체적으로 열악한 하드웨어 자원을 감안해 철저히 경량화 되어 있고 모듈화 되어 있다. 안정적인 리눅스 커널 위에서 맞춤형 자바 가상 머신인 달빅이 안드로이드 시스템 전체를 움직이고 있다.

응용 프로그램 구조

응용프로그램 구조 전경 애플리케이션 배경 애플리케이션

응용프로그램 구조 전경 애플리케이션 액티비티 매니 저에 의해 애 플리케이션 스 택에 기록됨

응용프로그램 구조 안드로이드 SDK 에 정의된 객체 중 모든 개발자가 알아야 할 4 가지 항목 ? 인텐트 서비스 컨텐츠 제공자 액티비티

응용프로그램 구조 액티비티 ? 사용자 인터페이스 화면을 “ 액티비티 (Activity)” 라 한다. 애플리케이션은 프로그램의 여러 단계를 다루기 위해서 한 개 이상의 액티비티를 정의한다.

응용프로그램 구조 액티비티 ? 액티비티 예 ) 애플리케이션 상에서 사용자가 “ 도움말 보기 ” 를 클릭 했을 시 띄워지는 팝업 도움말도 하나의 액티비티라 할 수 있다. 도움말 공격을 하시려 면 화면을 빠르 게 터치하세요 ! 방어는 좌 -> 우 슬라이딩으로 !

응용프로그램 구조 시작 실행 정지 일시중지 소멸 액티비티 생명주기 액티비티 생명주기

응용프로그램 구조 시작 실행 onCreate( Bundle ) : 액티비티 처음 시작시 호출 onStart() : 액티비티가 사용자에게 곧 보여짐 onResume() : 사용자와 상호작용 시작 가능 onRestoreInstanceState(Bundle) : 메서드가 미리 저장해 둔 상태로부터 액티비티가 다시 초기화 될 때 호출됨

응용프로그램 구조 실행 일시중지 onSaveInstanceState( Bundle ) : 인스턴스별 상태 저장 onPause() : 액티비티가 배경으로 전환 onResume()

응용프로그램 구조 정지 일시중지 소멸 onStop() : 액티비티가 사용자에게 더 이상 보여지지 않음 onDestroy() 혹은 onSaveInstanceState()

응용프로그램 구조 실행 정지 onResume() onStart() onRestart() : 액티비티가 정지 상태에서 다시 디스플레이됨

응용프로그램 구조 인텐트 ? Call Exit 전화를 걸도록 하다 동영상을 재생하도록 하다 어떤 액션이 수행되도록 특정 액티비티에 의향 선언

응용프로그램 구조 인텐트 ? 공개 인텐트 : 집에 “ 전화 ” 를 “ 걸기 ” 사진을 “ 열람 ” 하기 “ 웹페이지 ” 를 “ 열기 ” 전체 영역에서 구체적 행동 을 설명하는 매커니즘 공개 인텐트 : 집에 “ 전화 ” 를 “ 걸기 ” 사진을 “ 열람 ” 하기 “ 웹페이지 ” 를 “ 열기 ” 전체 영역에서 구체적 행동 을 설명하는 매커니즘 비공개 인텐트 : myApp “ 도움말 ” 열기 myApp 기록을 “ 저장 ” 하기 myApp 저장된 “ 로그 ” 열기 특정 App 내에서만 공개된 각각의 행동별 매커니즘 비공개 인텐트 : myApp “ 도움말 ” 열기 myApp 기록을 “ 저장 ” 하기 myApp 저장된 “ 로그 ” 열기 특정 App 내에서만 공개된 각각의 행동별 매커니즘

응용프로그램 구조 서비스 ? 전경 애플리케이션 사용자와의 직접적인 상호작용 없이 배경에 서 실행되는 작업 예로, 음악을 재생하는 코드는 서비스로 되어 있어야 한다. 사용자와의 직접적인 상호작용 없이 배경에 서 실행되는 작업 예로, 음악을 재생하는 코드는 서비스로 되어 있어야 한다.

응용프로그램 구조 컨텐츠 제공자 ? 애플리케이션 1 애플리케이션 2 Content://app2/get/3 Content://app1/save/d3

응용프로그램 구조 컨텐츠 제공자 ? 한 애플리케이션이 작성한 파일은 다른 애플리케이션에 의해 읽기 / 쓰기 될 수 없다. 따라서 안드로이드 프로그램은 IPC (Inter-Process Communication) 방식 혹은 컨텐츠 제공자 (ContentProvider) 를 통해서 서로 소통한다.

응용프로그램 구조 컨텐츠 제공자 ? 기본 형식은 URI (Uniform Resource Identifier) 로 표현 content://authority/path/id 기본 접두사 기본 접두사 데이터 제공자명 데이터 제공자명 제공자내 가상 디렉토리 제공자내 가상 디렉토리 특정 레코 드 기본키

응용프로그램 구조 안드로이드의 포용과 확장 Call Exit Call 둘 다 동일한 공개 API 를 사용 원한다면, 기본 App 대신 만든 myApp 을 쓸 수 있다 ! 기본 전화걸기 App 내가 만든 myApp

응용프로그램 구조 안드로이드의 응용프로그램은 여러 액티비티를 기반으로 동작하게 되며, 각 액티비티들은 저마다 생명주기를 가진다. 애플리케이션은 각자가 관심을 가지고 있는 인텐트가 있으며 사용자와 직접 상호작용 하지 않는 서비스라는 개념도 있다. 또 각각의 애플리케이션들은 컨텐츠 제공자 를 통해서 서로 소통한다.

[ 부록 ] 예제 프로그램

TODO List 만들기 만들기 전 준비할 것 ? JDK 6 (+JRE)Eclipse v3.4 Android SDK 순서대로 최신 버전을 설치하세요 !

TODO List 만들기 File > New > Other Android └ Android Project

TODO List 만들기 Project name: 프로젝트명 입력 ( 예 : exampleAndroid) Build Target: 안드로이드 SDK 버전 선택 Application name: 어플 이름 ( 예 : my first app) Package name: 패키지명 입력 ( 예 : com.example.myApp) Create Activity: 처음 시작시 보일 액티비티 클래스명 입력 ( 예 : exampleMyAppClass)

TODO List 만들기 새 안드로이드 가상 머신 만들기

TODO List 만들기 Name : 가상머신 이름 입력 ( 예 : myNewAVD) Target : 안드로이드 SDK 호환 버전 선택 ( 예 : Android 2.1 – API Level 7) SD Card Size : 메모리 크기 입력 ( 예 : 512)

TODO List 만들기 코드 작성 !

TODO List 만들기 // import 해야 할 목록들 import java.util.ArrayList; import android.view.KeyEvent; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnKeyListener; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView;

TODO List 만들기 /** Called when the activity is first created. public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 내가 만든 View 를 부풀린다. setContentView(R.layout.main); // UI 위젯의 레퍼런스를 얻어온다. ListView myListView = (ListView)findViewById(R.id.myListView); final EditText myEditText = (EditText)findViewById(R.id.myEditText); // 해야 할 일들을 담기 위한 배열 리스트 (array list) 를 생성한다. final ArrayList todoItems = new ArrayList (); // 위 배열을 리스트 뷰와 묶기 위한 배열 어댑터 (array adapter) 를 생성한다. final ArrayAdapter aa; aa = new ArrayAdapter (this, android.R.layout.simple_list_item_1, todoItems);

TODO List 만들기 // 위 배열 어댑터를 리스트 뷰와 묶는다. myListView.setAdapter(aa); // 사용자로 하여금 새로운 해야 할 일을 추가할 수 있도록 한다. myEditText.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if(event.getAction() == KeyEvent.ACTION_DOWN) { if(keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { todoItems.add(0, myEditText.getText().toString()); aa.notifyDataSetChanged(); myEditText.setText(""); return true; } return false; } }); }

TODO List 만들기 레이아웃 main.xml 파일 수정하기 ! 레이아웃 main.xml 파일 수정하기 !

TODO List 만들기 <LinearLayout xmlns:android=" android:orientation="vertical“ android:layout_width="fill_parent" android:layout_height="fill_parent“ > <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=" 새 해야 할 일 " /> <ListView android:layout_width="fill_parent" android:layout_height="wrap_content" />

TODO List 만들기 좌측 Android Application 더블클릭 후, 새로 나타날 항목을 클릭하여 Name: 에 App 이름 써주고 Browse… 클릭 후 지금 프로젝트 선택 그 후 Target 클릭 !

TODO List 만들기 AVD 선택 ! Common 에서 Run 체크 !

TODO List 만들기

안드로이드 개발자 ? 이제 여러분 차례입니다 !

Q & A