Folie 1

Size: px
Start display at page:

Download "Folie 1"

Transcription

1 Introduction to Android 1

2 안드로이드가 뭐 대단한 거라고 제1세대 안드로이드 폰이 처음 모습을 드러낸 게 2008년 8월 입니다. 하지만, 미국 내에서의 안드로이드 기반 단말기 판매량은 2010년 첫 번째 분기에만 전년도에 비해 707% 증가하였습니다.(Gartner) 2011년 3월에는 미국에서의 스마트폰 판매량 중 안드로이드가 차지하는 비중이 37%에 다다랐으며, 애플의 아이폰은 27%, 블랙베리는 22%를 차지하였습니다 2011년 6월에는 전 세계적으로 매일 50만대 이상의 안드로이드 단말기가 매일 개통되고 있으며, 단말기의 종류만 300 가지가 넘습니다. 2

3 주의 깊게 봐야할 안드로이드의 특징 안드로이드 앱 개발의 잇점 중 하나는 플랫폼의 개방성(openness)입니다. 운영체제(operating system)이 오픈 소스이고 공짜(free)입니다. 그래서 누구든 안드로이드의 소스코드를 볼 수 있고 어떻게 구현되었는지 볼 수도 있습니다. 그리고 플랫폼의 개방성은 안드로이드가 재빠르게 혁신을 이루게 된 주요인이 되기도 했습니다. 안드로이드 앱은 자바로 구현됩니다. 자바는 전 세계적으로 가장 많이 사용되는 프로그래밍 언어이므로, 그런 이유에서도 안드로이드가 개발 언어로 자바를 택한 것은 어찌보면 아주 적절하며 타당한 것이었습니다. 그리고, 자바의 객체 지향적이고 파워풀한 수많은 라이브러리들은 여러분이 앱을 아주 신속하게 작성할 수 있도록 도울 것입니다. 멀티터치 스크린(Multi-touch Screen)과 내장된 다양한 앱(Built-in Apps)이 제공됩니다 많은 안드로이드 디바이스들이 멀티 터치 스크린을 지원하고, Phone, Contacts, Mail, Browser등 다양한 빌트인 앱들을 제공하며, 이 외에도 제조사 별로 커스터마이징 된 다양한 기본 앱들이 있습니다. (이제 여러분은 안드로이드 개발에 뛰어들었으므로 그것들과 어떻게 상호작용해야 하는지에 신경써야하겠죠) 3

4 안드로이드는버전마다새로운이름을붙이더군요 4

5 안드로이드개발환경을준비합시다 Java SE Eclipse IDE Andnroid SDK ADT plugin for Eclipse 5

6 실제 안드로이드 디바이스를 활용해서 개발하기 위한 준비 안드로이드 디바이스에 어플리케이션을 인스톨하고 디버깅하려면 먼저 USB 케이블을 통해 억세스할 수 있도록 운영체제를 설정해 주어야 합니다. Mac이나 리눅스 환경에서 작업할 경우엔 특별히 해주어야 할 것이 없으나, 윈도우라면 다릅니다. 여러분이 테스트하고자 하는 디바이스를 위한 USB 드라이버를 설치해 주어야 합니다. (만약, 여러분이 테스트하고자 하는 디바이스가 안드로이드 레퍼런스 폰인 Nexus One 이나 Nexus S 라면 굳이 USB 드라이버를 다운로드하여 설치해 줄 필요는 없고 Google USB Driver를 사용하면 됩니다. 그 이외의 디바이스라면 다음의 문서를 참고하세요 6

7 안드로이드 디바이스 세팅은 어떻게 실제 디바이스에서의 디버깅을 위해서는 몇 가지 설정이 필요합니다 안드로이드 디바이스는 기본적으로 디버깅 설정이 해제되어 있습니다. 그러므로, USB연결을 이용해서 개발도 하고 실행도 시켜보려면 디버깅이 가능하도록 그에 관한 설정을 활성화 해줘야 합니다. 1. 설정 > 애플리케이션 > 알 수 없는 소스를 체크해 줍니다. 2. 설정 > 애플리케이션 > 개발 을 선택한 후에 보이는 세 가지 옵션을 모두 선택해 줍니다. 3. 맨 아래 모의 위치 허용은 모의 위치 정보를 디바이스에 본는 걸 가능하게 해 줍니다. 위치 기반 서비서(LBS, Location based services)를 이용한 어플리케이션을 작성할 때 유용합니다. 이제 준비가 다 된 듯 합니다. 제대로 환경 설정이 되었는지 확인하고 실제 어플리케이션도 작성해 보도록 하겠습니다 7

8 개발 환경이 제대로 설정되어 있는지 테스트 해보기 여러분의 첫 번째 앱을 작성하기 이전에, 개발 환경이 제대로 설정되어 앱을 개발하고 테스트하고 실행할 수 있는 지 먼저 확인해 보는 것이 좋습니다. 다음의 과정에서는 (기존에 있던 샘플 앱)을 먼저 이클립스에 불러 온 후에(import), 안드로이드 가상 디바이스(AVD)에서 시험삼아 실행시켜보는 과정이 설명됩니다. 거기에 덧붙여 실제 안드로이드 다바이스에서도 실행해보도록 할 것입니다 New > Android Project (New Android Project Wizard) Project Name : Snake, Create project from existing sample > Next Build Target : Android > Next Select Sample > Snake 8

9 의 생성과 시작 프로젝트를 준비하였으니, 이제 그 프로젝트를 실행시킬 AVD를 생성해 줘야 합니다. AVD는 어플리케이션이 실행될 디바이스의 소프트웨어와 하드웨어 특징을 가상으로 구성한 것이라 볼 수 있습니다. 그래서, AVD 프로필에는 디바이스가 지원하는 안드로이드 플랫폼에 대한 정보는 물론, SD카드의 용량, 화면 크기 설정, 디바이스에 포함된 추가적인 하드웨어 속성들이 포함됩니다. 1. Window > AVD Manager > New 2. [Create new Android Virtual Device] (그림을 참고하여 입력) 3. [AVD Manager]에서 생성된 AVD 선택 후 Start 9

10 Launch Configuration 설정 여러분이 작성한 앱을 AVD에서 실행하기 위해 별도의 Launch Configuration을 설정해 둘 수도 있습니다. 이클립스 프로젝트 마다, 프로젝트 특성에 맞는 Launch configuration을 별도로 설정해서 실행하는 것도 좋은 습관입니다. 1. Run > Run Configuration 을 선택해서 Run Configuration 창을 엽니다 2. 왼쪽의 리스트 중 Anndroid Application을 더블클릭하면 새로운 리스트가 하나 생성되며, 이때 오른쪽 패널에 나타나는 설정 항목을 입력해주면 됩니다. 3. 우선 name 입력 공간에 적당한 이름을 작성하고, Project 항목은 Browse 버튼을 클릭해서 Snake 프로젝트를 선택해 줍니다. (Android Tab)임을 확인하세요 4. 다음으로 Android Tab 바로 옆의 Target Tab을 클릭합니다 5. 가운데 보이는 AVD 중에 적당한 것을 선택해 줍니다. 6. 그리고, Run 버튼을 클릭하여 AVD에서 어플리케이션을 실행하도록 합니다 10

11 실제 안드로이드 디바이스에서 실행하기 먼저 안드로이드 디바이스의 디버깅 모드가 활성화 되어야 합니다. (아래 순서를 참고하세요) 1. 설정 > 애플리케이션 > 개발 > USB 디버깅 항목을 체크해서 활성화 시켜줍니다. 2. USB 케이블을 이용해서 안드로이드 디바이스를 컴퓨터와 연결해 줍니다. 3. 이클립스에서 실행하고자 하는 프로젝트를 선택한 후에 실행해 줍니다. (케이블이 연결된 상태이고, Run Configuration의 Target에서 Target 선택모드가 Manual로 되어 있는 경우 AVD와 실제 디바이스중 어떤 것을 실행타겟으로 잡을 것인지 선택하도록 Android Device Chooser 다이얼로그가 나옵니다) 11

12 이제 여러분의 첫 번째 앱 을 만들어 봅시다 첫 번째 앱이기 때문에 간단한 인사 메시지와 이미지를 사용하는 앱을 만들어 볼까 합니다. 간단하지만 이 앱을 만들면서 다음의 내용들을 살펴보고자 합니다 1. Eclipse IDE와 ADT(Android Development Tools)를 이용해서 앱을 작성하는 방법 2. ADT에서 제공하는 Visual Layout Editor를 이용해서 GUI를 디자인 하는 방법 3. 작성한 앱을 AVD에서 실행하고 확인하는 방법 좀 더 기술적으로 살펴보면, 앱을 만들기 위해 사용하게 될 이클립스의 기능들과 다양한 뷰 ImageView에 내가 원하는 그림을, TextView에는 내가 원하는 메시지를 Properties 탭의 사용, GUI 컴포넌트의 속성 변경 이 모든 것을 AVD에서 실행하고 확인하기 12

13 프로젝트를생성하자 1. File > New > Project 2. Android > Android Project > Next 3. Project name : Welcome, check : Create new project in workspace > Next 4. Build Target : Android > Next 5. Application Name : Welcome, Package name : example.myapps, WelcomeActivity, Minimum SDK : 10 > Finish 13

14 src 자바 소스파일을 포함하는 폴더 gen IDE에 의해 생성되는 자바 파일들을 포함하는 폴더 Android 앱을 만들때 선택한 안드로이드 프레임워크 버전을 포함한 폴더 res 앱과 관련된 리소스 파일들을 포함하는 폴더, GUI 레이아웃이나 이미지 등 assets 어플리케이션 리소스로 관리되길 원하지 않는 그 외의 파일이나 디렉토리들이 저장되는 폴더 projecct.properties 어플리케이션 빌드 타겟, 그 외의 빌드 시스템 옵션등이 필요에 따라 정의됩니다 proguard.cfg 진저브레드가 나오면서 지원되는 오픈소스 툴인 ProGuard를 적용하기 위한 파일입니다. ProGuard는 코드를 이해하기 어렵게 해주고(그래야 악의적인 크래커의 공격으로부터 여러분의 코드를 보호하겠죠), 코드 사이즈를 줄여주며 최적화 해주는 툴입니다. 14

15 과 설정 에뮬레이터에서 디버깅하기. 방금 생성한 프로젝트의 액티비티 클래스가 에러를 발생하도록 수정한 후에 디버깅 툴의 몇 가지 기능들을 사용해 보도록 하겠습니다. WelcomeActivity 파일을 열고 아래의 코드를 해당 클래스에 추가해 보겠습니다. 그리고, 실행해보세요 public void forceerror(){ if(true){ throw new Error( Whoops! ); } } 15

16 앞에 수정된 코드가 실행되면, 에러가 발생하게 되고 오른쪽 화면처럼 멈추게 됩니다. 어플리케이션만 Force Close 한 뒤에, 이번엔 Debug As 아이콘을 이용해서 어플리케이션을 디버깅 합니다.(Debug As > Welcome_RunConfiguration ) 잠시 뒤 이클립스는 다음과 같은 다이얼로그를 보여줄 것입니다. 16

17 단계별로 진행시켜가며 LogCat을 확인하세요 17

18 로깅(Logging) 이용하기 자주 사용되는 로깅 메소드 : 사용예 ) Method Purpose Log.e( ) log errors Log.w( ) log warnings Log.i ( ) log informational messages Log.d ( ) log debug messages Log.v ( ) log verbose messages 18

19 디버깅정보필터링하기 19

20 를 이용해서 구성하기 드래그 앤 드랍으로 GUI를 생성할 수 있습니다 GUI 레이아웃 정보들은 main.xml 파일에 저장이 됩니다. 이렇게함으로써 프리젠테이션 파트를 애플리케이션의 로직과 분리할 수가 있습니다. 레이아웃 파일들도 리소스로 간주되며, res 폴더에 저장이 됩니다. 실제로도 layout 이라는 하위폴더에 따로 저장이 됩니다. 20

21 프로젝트를 생성하며 만들어진 main.xml 파일을 버리고, RelativeLayout를 사용하는 새로운 main.xml 파일을 만들어 보겠습니다 1. main.xml 파일이 열려있다면 닫고, 프로젝트의 /res/layout 폴더를 마우스 오른쪽 버튼으로 클릭한 후 Delete를 선택하여 지웁니다 2. 다시 /res/layout 폴더를 마우스 오른쪽 버튼으로 클릭한 후에 New > Other 3. Android 노드에서 Android Layout XML File을 선택한 후 창이 열리면 파일이름(main.xml)과 포함할 Root Element를(RelativeLayotu) 선택한 후 Finish 하세요. 21

22 Android Pixel Density Density ldpi mdpi hdpi xhdpi nodpi Description Low density approximately 120 dpi Medium density approximately 160 dpi High density approximately 240 dpi Extra high density approximately 320 dpi Indicates that a resource should not be scaled regardless of screen density 22

23 다음과 같은 과정으로 GUI를 구성하고 설정하게 됩니다 1. 프로젝트에 image를 추가하기 2. RelativeLayout의 ID 프로퍼티 변경하기 RelativeLayout의 Background 프로퍼티 변경하기 3. TextView 추가하기 TextView의 Text 프로퍼티를 String resource를 이용해서 설정하기 TextView의 Text size와 padding top 프로퍼티를 설정하기(Scaled Pixel, Density-Independent Pixel) 그 외의 추가적인 TextView 프로퍼티 손보기 4. ImageView를 추가하고 각각의 ImageView에 이미지 붙이기 23

24 프로젝트에 image를 추가하기 1. 미리 배포한 files 폴더에 ice_cream_sandwich.png 파일이 있습니다. 2. Package Ecplorer 에서, res /drawable-hdpi 폴더에 그림 파일을 드래그 앤 드랍 하세요. (추가하는 파일의 이름에는 소문자와 숫자, 언더스코어만 사용할 수 있습니다) 24

25 RelativeLayout 손보기 XML 파일을 직접 수정하지 않고도, 원하는 레이아웃이나 컴포넌트의 프로퍼티를 설정할 때에 Properties 뷰를 사용할 수 있습니다. 1. Properties 뷰가 보이지 않는다면, Outline 뷰에 있는 RelativeLayout을 더블클릭하면 되고, 2. Window > Show View > Other 를 선택한 후 General 노드에 있는 Properties를 선택해도 됩니다. Properties 뷰에서 id 프로퍼티를 찾아 그 값을 아래처럼 수정하세요. 값을 수정하면 Outline뷰에 있던 이름도 변경됨을 알 수 다음으로 background 프로퍼티를 수정합니다 #FFFFFF 25

26 TextView 사용하기 1. Form Widgets 에서 TextView를 선택한 후에 디자인 영역에 드래그앤드랍 하세요 2. TextView의 text 프로퍼티를 설정하는데 String Resource를 사용하도록 하겠습니다. Properties 뷰에서 text 프로퍼티를 보면 디폴트 값으로 지정되어 있고, 뒷 부분에 보면 이렇게 생긴 생략표시가 있습니다. 이것을 클릭해서 Resource Chooser 다이얼로 그를 열겠습니다. 3. New String을 클릭해서 Create New Android String 다이얼로그를 엽니다. 4. String과 new R.string 항목에 ANDROID ICECREAM SANDWICH 와 welcome 으로 채웁니다 > OK 5. Outline과 Properties 뷰에서 변경된 사항을 확인하세요. 문자열이나 이미지, 색상, 폰트 사이즈 등을 외부화(externalize) 하는 것과 지역화(localize)하는 부분에 대해서는 아래의 문서를 참조하도록 하세요. developer.android.com/guide/topics/resources/index.html developer.android.com/guide/topics/resources/providing-resources.html#alternativeresources developer.android.com/guide/topics/resources/localization.html 26

27 6. TextView의 size와 padding을 설정해 줍니다. text size 프로퍼티를 40sp로 layout margin top 프로퍼티를 10sp로 지정해줍니다. density-independent pixels는 실제 디바이스 화면의 점밀도(pixel density)에 기반으로 안드로이드 플랫폼이 GUI의 크기를 조절하도록 해줍니다. dip 픽셀 하나는 160dpi 화면에서의 한 픽셀과 동일한 크기입니다 ( 예로, 240dpi 크기의 화면에서라면 각각의 dip 픽셀의 너비는 240/160, 즉 1.5 배의 크기로 나타나게 되며, 120dpi 화면에서라면 120/160, 즉 0.75배의 크기로 나타납니다.) Scale-Independent Pixel도 DIP 처럼 크기가 조절됩니다. 사용자가 미리 정해놓은 크기(User s preferred font size)에 따라 조절되지요. 7. TextView에 대해 몇 가지 더 설정해 줍니다. color는 #00F로 style은 bold로, gravity는 center로 지정해 줍니다. 27

28 ImageView 추가하기 Image & Media 항목에서 ImageView를 선택한 후에, Outline 뷰의 welcometextview 노드 아래 로 드랍합니다. 그리고 아래의 값들을 확인하세요 ImageView id layout below layout center horizontal : true src 28

29 을 살펴봅시다 Source > Format 으로 코드를 보기좋게 정렬해보세요 29

30 에서실행하기 30

31 Android Application Development Android Application Design Essentials 1 Application Context, Activity how2quit@gmail.com 31

32 안드로이드 앱 디자인 Essential 컨텍스트(context) 액티비티(activity) 인텐트(inetnt)와 인텐트 필터(intent filter) 서비스(service) 브로드캐스트 리시버(broadcast receiver) 32

33 안드로이드 어플리케이션을 파헤쳐 보자 제한된 리소스를 가지고 움직이는 모바일 디바이스를 위한 어플리케이션을 작성하려면 먼저 어플리케이션의 라이프 사이클(lifecycle)을 이해하고 있어야 합니다. 그리고, 안드로이드는 어플리케이션을 구성하는 몇 가지 용어들 (Context, Activity, Intent 등)을 사용하는데, 안드로이드 개발을 위해서는 이러한 용어들도 이해해야 합니다. 이번 장에서는 이러한 안드로이드의 중요한 컴포넌트들 에 대해 살펴보겠습니다. 안드로이드에서 사용되는 꼭 기억해야할 용어들 Context : 컨텍스트는 안드로이드 어플리케이션의 주요한 지휘센터라고 볼 수 있습니다. 모든 어플리케이션과 관련된 기능 들은 컨텍스트를 통해 억세스 할 수 있습니다. Activity : 안드로이드 어플리케이션은 해야할 일의 모음입니다. 이 일 각각을 어플리케이션 내의 다른 액티비티와는 구분되는 자신만의 일(임무)를 갖게 됩니다.. Activity라고 부르며, 각각의 액티비티는 Intent : 안드로이드 운영체제는 수행하고자 하는 일에 맞는(그 일을 수행할만한) 적절한 액티비티를 찾기위해 비동기적 메시징 기술을 사용합니다. 그 각각의 요청이 인텐트라는 것으로 패키징 됩니다. 여러분은 그러한 각각의 요청를 뭔가 할 의도를 알리는 메시지 로 생각할 수 있습니 다 Service : 사용자와의 상호 작용을 필요로 하지 않는 일이나 임무는 서비스(Service) 내에 캡슐화할 수 있습니다. 서비스는 시간이 오래 걸 리는 일이거나 정기적으로 수행될 필요가 있는 일들에 유용할 것입니다 33

34 어플리케이션 컨텍스트 어플리케이션 컨텍스트(application context) 어플리케이션 컨텍스트를 이용하면 다음과 같은 일을 할 수가 있어요 34

35 어플케이션 컨텍스트 어플리케이션 컨텍스트(Application Context) Context 클래스는 어플리케이션과 관련된 세부 설정은 물론 어플리케이션 전반에 걸친 동작이나 데이터를 관리하기 위한 용도로 사용됩니다. 다수의 액티비티 인스턴스에 공유되는 세팅이나 리소스에 억세스할 때 어플리케이션의 Context를 사용하세요. 아래 몇 가지 주세로 어플리케이션 컨텍스트에 접근하고 정보를 얻어내는 방법을 보게 될 것입니다. 실제 어플리케이션을 작성하 며 사용법을 보는 게 아니므로, 우선은 이렇게 하는구나 정도로 기억해 두라는 의미에서 이루어집니다. 간단히 알아본 후 실제 어플리케이션을 작성하면서 더 자세하게 사용될 것입니다. 어플리케이션의 컨텍스트를 찾기 Context context = getapplicationcontext() ; 현재 프로세스의 Context를 찾으려면 getapplicationcontext() 메소드를 사용하면 됩니다. 간단하죠? 35

36 어플리케이션 컨텍스트 이용하면 다음과 같은 일을 처리할 수 있어요 어플리케이션 컨텍스트를 찾은 후엔 어플리케이션 전반에 걸친 특성이나 리소스, 서비스에 억세스할 때 사용 하면 됩니다. 어플리케이션 리소스를 찾을 수도 있습니다 어플리케이션의 리소스를 찾으려면 Context의 getresources() 메소드를 사용하면 됩니다. 그리고, 가장 수월하게 리소스를 찾는 방법은 R.java 클래스에 자동 생성된 (리소스마다 유일하게 생성된 )리소스 식별자(identifier)를 사용하는 것이죠. 아래 예제는 어플리케이션 리소스 중에서 리소스 ID를 가지고 문자열 인스턴스를 찾는 코드 입니다. String greeting = getresources().getstring(r.string.hello); 36

37 context 어플리케이션의 Preferences 를 찾을 수도 있습니다 어플리케이션의 Shared Preference를 찾으려면 Context의 getsharedpreserences() 메소드를 사용하면 됩니다. 여기서 리턴되는 SharedPreferences 인스턴스는 설정 세팅(configuration settings)같은 간단한 어플리케이션의 데이터를 저장하는 데 사용됩니 다. 나중에 이 부분도 자세하게 살펴볼 시간이 있겠죠? Context를 이용해서 어플리케이션의 다른 기능에 억세스 할 수도 있습니다 어플리케이션 컨텍스트는 어플리케이션의 최상위 특성들에 접근하는 방법을 제공하는데, 몇 가지만 보면 다음과 같습니다. 액티비티 인스턴스를 시작하기 어플리케이션에 패키징된 assets을 찾기 위치 정보와 같은 시스템 서비스를 요청하기 비공개 어플리케이션 파일, 디렉토리, 데이터베이스 관리하기 어플리케이션 권한(permission)을 검사하고 시행하기 맨 처음 언급된 방법인 액티비티 인스턴스를 시작하는 것이 아마도 어플리케이션 컨텍스트를 사용하는 가장 보편적인 방법일 것입니다. 37

38 context 여기서 잠깐! Context를 사용하면서 처음에 보여줬던 코드 중에 아래와 같이 Contenxt에 접근 하는 두가지 방법을 보여줬습니다. Activity 클래스가 Context 클래스에서 확장된 것이기 때문에 쉽게 두 번째 방법을 사용하기도 하는데요. 모든 상황에서 두 번 째 방법을 사용하게 되면(Activity Context를 사용하는 것이죠) 메모리 누수가 심각해 질 수 있으므로 조심해야 합니다 Context 와 관련된 메모리 누수 문제를 해결 하기 위한 두 가지 쉬운 방법이 있는데, 가장 확실한 첫번째 방안은, Context 가 자신 의 Scope 외에서는 사용되지 않도록 하는 것이고, 두번째 해결책은 Application Context 를 사용하는 것입니다. 명시적으로 Application Context를 획득해 오는 방법입니다. Context.getApplicationContext() 메소드를 이용할 수도 있고, Activity.getApplication().getApplicationContext()를 이용할 수도 있습니다. (두 번째는 Application 객체를 이용하게 되네요) Activity Context를 사용하는 방법입니다. 이 방법을 사용하면 자신의 Scope(자신이 살아있는 동안) 이 외에도 레퍼런스를 유 지 시켜 심각한 메모리 누수를 초래할 수도 있습니다. 액티비티 컨텍스트는 오래 유지되지 않도록 신경써야하고(그 액티비티가 소멸되면 사라지록), 되도록 액티비티 컨텍스트보다는 어플리케이션 컨텍스트를 사용하세요 38

39 어플리케이션이 할 일을 구상해 봅시다 Activity 클래스는 안드로이드 어플리케이션의 핵심이기 때문에, 여러분은 아마도 어플리케이션 개발의 대부분의 시간을 액티비티를 정의하고 구현하는 데 보내게 될 것입니다. 그런 의미에서 약간은 실제적인 예를 가지고 생각해 볼까요? 다음은 아주 간단한, 다섯 개의 액티비티를 갖는 게임에 대한 설명입니다. 아주 간단하지만 꼭 필요한 것들만 챙겨봤더니 아래 처럼 다섯개의 액티비티가 필요할 것으로 판단되었습니다. 시작 화면 : 어플리케이션을 시작하면 보이는 화면으로 어플리케이션의 이름과 버전이 메인 메뉴로 넘어가기 전 짧게 보이도록 합니다. 메인 메뉴 화면 : 사용자가 이 어플리케이션의 다른 핵심 기능을 선택해서 넘어갈 수 있게 해주는 화면입니다 게임 플레이 화면 : 사용자가 게임을 할 수 있는 화면이 되겠죠 점수보기 화면 : 게임 점수와 세팅 정보가 표시됩니다. 도움말과 게임 설명 화면 : 게임을 할 때 필요한 정보들이 표시됩니다. 시작 화면 startup / splash activity 메인 메뉴 화면 main menu activity 점수보기 화면 high score activity 게임 플레이 화면 game play activity 도움말과 게임설명 화면 help/about activity 39

40 어플리케이션을 구상하면서 꼭 알고 있어야 하는 것들 액티비티, 액티비티의 생명주기, 액티비티 스택 안드로이드 어플리케이션은 멀티 프로세싱(multi-processing)이 가능하고, 안드로이드 운영체제는 다수의 어플리케이션이 동시에 실행할 수 있도록 해줍니다. 게다가, 어플리케이션은 백그라운드 프로세스도 가질 수 있고, 전화가 오면 어플리케이션이 일시 정지 되기도 합니다. 하지만, 기억해야 할 것은 사용자에게 직접 보여지는 어플리케이션은 오직 하나 뿐이라는 것입니다. 더 정확하게 말하면, 하나의 액티비티만 주어진 시간에 전면(foreground)에 올라 올 수 있다는 것이지요. 안드로이드 운영체제는 액티비티의 활동을 파악하기 위해서 어플리케이션의 활동에 참여하는 모든 액티비티를 액티비티 스택(activity stack)을 이용해서 관리합니다(이름에서 알 수 있듯이 스택 구조를 가지고 있으며, 그냥 stack 혹은 back stack이라고 불리기도 합니다). 새로운 액티비티가 시작하면, 스택의 가장 위에 있던(현재 화면을 차지하던) 액티비티가 멈추고 새로운 액티비티가 스택의 가장 상위에 올라가면서 화면을 차지합니다. 그러다 그 액티비티의 활동이 끝나면 스택에서 제거되고(모든 관련 상태 정보도 사라지고) 이전의 액티비티가 최상위를 다시 차지하게 되면서 일을 다시 시작합니다. 이러한 과정을 거치면서도 안드로이드 어플리케이션은 자신의 상태정보와 메모리, 사용하는 리소스들과 데이터들을 모두 관리해야하며, 일시정지나 재시작 시에도 일관성있고 결함없이 동작하도록 디자인 되어야 합니다. 따라서, 액티비티의 생명주기 사이에서 액티비티의 상태가 어떻게 다르고 변화하는 지를 이해하는 것이 강력하고 안정적인 어플리케이션을 디자인하고 작성하는 첫 걸음이 됩니다. 40

41 액티비티(Activity) 액티비티가 도대체 뭐길래... 액티비티는 어떻게 만들면 되나요? 태스크와 백 스택(Task and Back stack) 액티비티에 대해서 좀 더 자세히 알아봐야 할 거 같습니다 액티비티는 기본적으로 세 가지 상태로 존재 할 수 있습니다 액티비티의 상태가 변화할 때, 시스템은 콜백 메소드를 통해 통보해 줍니다 액티비티 라이프 사이클내에 자리잡은 세 가지 내부 순환고리라는 것도 알아두면 좋아요 액티비티의 콜백 메소드 간단히 보기 콜백 메소드는 어떤 용도로 사용하면 좋을까? 액티비티의 프로세스는 언제 죽을 지 몰라요 onpause()말고도 정보를 저장하는 또 다른 수단이 있군요! 41

42 액티비티 액티비티가 도대체 뭐길래 액티비티는 어떤 일을 수행하기 위해 사용자와 상호작용할 수 있는 화면을 제공하는 어플리케이션 컴포넌트 입니다. 전화를 걸거나, 사진을 찍거나, 이메일을 보내거나, 지도를 보려면 사용자의 상호작용이 필요합니다. 이러한 상호작용을 위한 화면을 창을 제공하며, 이 창(window)은 화면을 가득 채우거나, 혹은 그 보다는 좀 작아서 다른 액티비티 윈도우의 앞에 띄워지기도 합니다. 어플리케이션은 보통 (서로 느슨하게 연결된) 다수의 액티비티로 구성이됩니다. 일반적으로 어플리케이션에 있는 액티비티중 하나가 메인 액티비티가 되어 어플리케이션이 처음 시작할 때 나타납니다. 액티비티는 다른 액티비티를 시작하게 할 수도 있으며, 이때 새로운 액티비티가 시작되면, 이전의 액티비티는 멈춥니다. 시스템은 멈춘 액티비티를 스택*(Back Stack)에 보관합니다. 이름에서 알 수 있듯 백스택은 LIFO(last in first out) 큐 메커니즘을 따릅니다. 새로운 액티비티가 시작하면 백 스택에 푸쉬(push)되고 사용자 포커스를 갖 게 됩니다. 그러다, 사용자가 BACK 키를 누르면 스택으로 부터 팝(pop)되어 소멸됩니다. 그러면 팝되어진 액티비티의 아래에 있던 액티비티가 다시 시작하게 되죠 새로운 액티비티가 시작해서 멈추게 된 액티비티는, lifecycle callback method를 통해 이러한 상태의 변화에 대해 통보를 받습니다. 액티비티는 몇 가지의 상태(일하고 있거나, 일시적으로 멈춰 지거나, 일을 멈추는 등)를 가질 수 있고, 어느 한 상태에서 다른 상태로 변화하게 되면 시스템은 이러한 상태 변화가 발생함을 액티비티가 갖는 콜백 메소들 호출해 줌으로써 미리 액티비티에게 알립니다. 미리 준비할 것은 준비하고, 상태가 변화하면서 발생할 수 있는 예기치 않은 상황(데이터 손실 등)을 미연에 막고자 함이죠. * 시스템의 액티비티 매니저에 의해 기록됩니다. 42

43 액티비티는 어떻게 만들면 되나요? 이전에 만들었던 MyFirstAndroidApp의 Activity의 소스코드를 보면 다음과 같습니다. 가장 기본적인 형태입니다. package android.example.myfirstandroidapp; import android.app.activity; import android.os.bundle; public class MyFirstAndroidApplicationActivity extends public void oncreate(bundle savedinstancestate){ super.oncreate(savedinstancestate); setcontentview(r.layout.main); } } 액티비티를 만들기 위해서는, Activity 클래스를 상속하는 자바 클래스를 생성하고, 콜백 메소드를 구현해 주면 됩니다. 그리고, 콜백 메소드 중 하나인 oncreate() 메소드에서 res/layout 폴더에 정의된 XML 파일인 안드로이드 매니페스트(AndroidManifest)을 통해 UI컴포넌트를 로드하도록 해줍니다. 43

44 액티비티의 콜백 메소드를 구현해주어야 합니다. 콜백 메소드 중 가장 중요한 메소드 두 개만 미리 볼까요? oncreate() 이 메소드는 반드시 구현해 줘야 합니다. 그래야 시스템이 이 메소드를 호출해서 액티비티를 생성해 줄테니까요. 이 메소드안에서 여러분은 액티비티의 기본적인 컴포넌트들을 초기화 해주면 되며, 꼭 기억해야 할 것은 액티비티의 사용자 인터페이스 레이아웃을 로드할 수 있도록 setcontentview() 메소드를 반스시 호출해줘야 한다는 것입니다. onpause() 나중에 액티비티의 라이프 사이클에 대해 자세히 알아보겠지만, 액티비티가 일시적인멈춤 상태가 되든, 동작을 멈추든, 소멸되든 항상 최초로 호출되어지는 메소드가 onpause()입니다. 그래서, 사용자 관련 정보들을 보관해 두려면 이 메소드에서 해줘야 가장 안정적입니다. 44

45 사용자 인터페이스도 작성해 주어야 하고... 액티비티의 사용자 인터페이스는 View 클래스로부터 파생된 뷰 객체 계층에 의해 제공됩니다. 각각의 뷰는 액티비티 윈도우 내에 특정 사각형 공간에 대한 컨트롤을 담당하고 사용자 상호 작용에 응답합니다. 안드로이드는 다수의 이미 만들어진 뷰를 제공해서 여러분이, 여러분의 레이아웃을 디자인 하고 구성할 수 있도록 해줍니다. 위젯(widget) 처럼 버튼, 텍스트 필드, 체크 박스, 또는 이미지같은 시각적인(혹은 대화형의) 구성 요소일 수도 있고, 레이아웃(layout) 처럼 위젯의 위치나 구획을 배치하는 모델일 수 도 있습니다. 레이아웃을 정의하는 가장 일반적인 방법은 XML형태의 레이아웃 파일을 이용하는 것입니다. 이렇게 함으로써 액티비티의 행동(behavior)을 정의하는 소스코드와 유저 인터페이스 디자인에 관련된 부분을 서로 분리해서 유지할 수 있도록 해줍니다. 45

46 Manifest 파일에 액티비티를 선언해 줘야 합니다. 아래의 소스 코드(AndroidManifest.xml)를 보면서 액티비티가 어떻게 선언되어 있는지 볼까요? <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="android.example.myfirstandroidapp" android:versioncode="1" android:versionname="1.0"> <uses-sdk android:minsdkversion="10" /> <application > <activity android:name=".myfirstandroidapplicationactivity" <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> 46

47 알아두고 넘어갑시다! Task and Back Stack 어플리케이션에는 다수의 액티비티가 포함되고, 각각의 액티비티는 사용자가 수행할 특정 액션을 수행하거나 아니면 다른 액티비티를 실행시키는 등의 일을 수행하도록디자인이 됩니다. 디바이스에 있는 다른 어플리케이션의 액티비티를 실행하게 할 수도 있죠. 예를 들어 설명해 보겠습니다. 여러분의 어플리케이션에서 이메일을 보내려고 합니다. 그럼 여러분은 이메일 보내기 를 수행할 인텐트를 정의하게 되는데, 여기에는 이메일 주소는 물론 이메일의 내용 등 추가정보가 더해지겠죠. 그럼 그런 종류의 인텐트를 처리할 수 있도록 선언된 다른 어플리케이션의 액티비티 하나가 그 인텐트를 엽니다(다수의 액티비티가 그런 종류의 인텐트를 처리할 수 있다면 시스템은 그 중의 하나를 사용자가 선택하도록 합니다). 그리고, 그 이메일 어플리케이션의 메일 쓰기 액티비티가 시작되고, 그 액티비티가 이메일을 다 보내면, 여러분의 액티비티가 다시 시작됩니다. 이러한 과정은 마치 하나의 어플리케이션 에서 이루어지는 것처럼 사용자에게 보여집니다. 다른 어플리케이션에 있는 두 개의 액티비티가 마치 하나의 어플리케이션이 실행되는 것처럼 처리되는 것, 어떠한 방식으로 이것을 처리했을지를 이제부터 설명하려 하는 것입니다. 결론부터 말하자면, 안드로이드는 원활한 사용자 경험(UX, user experience)을 유지하기 위해, 동일한 태스크(task)내에 두 개의 액티비티를 모두 두고 처리 합니다. 47

48 알아두고 넘어갑시다! Task and Back Stack 어떤 일을 수행할 때 사용자와 상호 작용하는 액티비티들의 모음이 태스크(task)이며, 액티비티들은 액티비티가 열린 순서대로 스택(stack) 에 정렬이 됩니다. 좀 더 상세히 알아볼까요? 디바이스의 홈 스크린(home screen)이 태스크의 시작 지점입니다. 사용자가 어플리케이션 런쳐 아이콘을 터치하면(혹은 홈 스크린의 단축 아이콘), 그 어플리케이션의 태스크가 전면에 나오게 됩니다. 만약 어플리케이션이 최근에 사용된 일이 없어서 그 어플리케이션을 위한 태스크가 없다면, 새로운 태스크가 생성되고, 어플리케이션의 메인 액티비티가 스택의 가장 아래(root)에 놓입니다. 현재의 액티비티가 다른 액티비티를 시작하게 하면, 새로운 액티비티는 스택의 가장 위에(top) 올라가게 되고 사용자의 포커스를 갖게 됩니다. 이전 액티비티는 여전히 스택에는 남아있지만 멈춰지죠. 액티비티가 멈춰지더라도 시스템은 그 액티비티의 사용자 인터페이스 상의 상태 정보들을 모두 간직해 둡니다. 그래서, 사용자가 BACK 키를 눌러 현재 가장 위에 있던 액태비티가 스택에서 제거되고(popped), 그 밑에 있던 액티비티가 포커스를 갖게 될 때, 그 액티비티를 다시 시작하기 위한 정보로 활용하게 되죠. 한 가지 기억해야할 것은 스택 안의 액티비티들은 절대로 재정렬 (rearrange)되지 않는다는 것입니다. 오직 푸쉬(push)되고 팝(pop)되기만 할 뿐입니다. 48

49 스택안의 현재 액티비티에 의해 새로운 액티비티가 시작하면 스택에 푸쉬(push)되고, 사용자가 BACK 키를 눌러 해당 액티비티를 떠나면 팝(pop)되는 거죠. 이렇게 백스택(back stack)은 last in, first out 객체 구조로 동작합니다. 말이 길었는데, 그림을 통해 살펴볼까요? A presentation of how each new activity in a task adds an item to the back stack. When the user presses the BACK key, the current activity is destroyed and the previous activity resumes. 스크는 전체가 하나의 단위로 간주된다 보시면 됩니다.사용자가 새로운 태스크를 시작하거나 홈(home) 키를 눌러 홈 스크린으로 이동하면 통채로 백그라운드로 이동하죠. 백그라운드에 있을 때는 스택의 모든 액티비티가 멈춥니다. 하지만, 그냥 포커스만 잃은 것일 뿐 관련된 정보들은 손상되지 않은 상태로 유지됩니다. 그 태스크가 다시 전면(foreground)에 올라오면 사용자는 백그라운드로 내려갈 때 그대로 해당 태스크에서 수행하던 일을 그대로 수행할 수가 있습니다. 49

50 Two tasks: TAsk A is in the background, waiting to be resumed, while Task B receives user interaction in the foreground. A single activity is instantiated multiple times. 스택내의 액티비티는 절대로 재정렬되지는 않기 때문에, 하나의 액티비티가 스택안에 여러번 인스턴스화 될 수도 있습니다. 이전에 푸쉬되었던 인스턴스를 참조해서 사용하는 게 아니라, 새롭게 만들어서 스택에 푸쉬한다는 것이죠. 액티비티가 한 번 이상 인스턴스화 되지 못하도록 할 수도 있습니다. 이것은 태스크 관리하기 부분에서 자세히 살펴볼 것입니다. 50

51 액티비티에 대해 좀 더 자세히 알아봐야 할 것 같습니다. Activity 클래스를 상속하는 나만의 Activity를 만들고, 사용자 인터페이스를 정의한 다음에, manifest파일에 그 액티비티를 선언 하는 방법을 보았습니다. 하지만, 이렇게 간단하지만은 않죠? 액티비티가 하나 뿐인 어플리케이션은 없다고 봐야하고, 우리가 실제 예제에서 구현해 본 액티비티의 콜백 메소드도 oncreate()뿐이잖아요? 액티비티의 라이프 사이클은 연관된 다른 액티비티의 동작(TASK와 BACK STACK 내에서의 활동)과 아주 밀접하게 관련되어 있기 때문에, 액티비티의 기본 라이프 사이클은 물론, 다른 액티비티와 연관되어 벌어질 수 있는 다양한 상황에서 어떠한 상태 변화가 있고, 그 상태 변화에서 어떤 콜백 메소 가 호출될 것인지, 그 메소드가 호출된 상황에서 우린 어떤 것들을 준비할 수 있는 지를 알 고 있어야 합니다. 그래야 강력하고 유연한 어플리케이션을 디자인하고 구현해 낼 수가 있겠죠? 51

52 액티비티는 기본적으로 세 가지 상태로 존재할 수 있습니다. resumed 액티비티가 화면에 나타나 있는 상태이고 포커스를 가진 상태입니다. 실행중인 상태로 간주할 수 있습니다 paused 다른 액티비티가 화면에 올라오고 포커스를 가져간 상태이지만, 아직은 화면에 보이는 상태입니다. 무슨 말이냐면, 다른 액티비티가 foreground에 나왔지만, 부분적으로 투명하거나 아니면 전체 화면을 다 차지하고 있지는 않은 상태라는 뜻입니다. 멈춰진(paused) 액티비티는 완벽하게 살아있는 상태(Activity 객체가 메모리에 아직 살아있고, 모든 정보를 유지하고 있고, 윈도우 매니저에 연결된 상태)이지만, 심각한 메모리 부족에 시달리면 시스템이 종료 시켜버릴 수도 있는 상태이기도 합니다. stopped 액티비티가 완벽하게 다른 액티비티에 의해 눈에 띄지 않는 상태입니다. Stopped 상태의 액티비티는 여전히 살아있지만, 사용자에게는 더 이상 보이지도 않고, 어디선가 메모리가 필요하다 하면 강제 종료될 수도 있습니다 52

53 액티비티의 상태가 변화할 때, 시스템은 콜백 메소드를 통해 통보해 줍니다 모든 콜백 메소드는 액티비티의 상태가 변화할 때 적절한 작업을 수행하도록 재정의 할 수 있는 것들입니다. 어떤 것들이 있고, 기 본적으로 어떻게 구현이 되는지 볼까요? public class ExampleActivity extends Activity public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // The activity is being created. protected void onstart() { super.onstart(); // The activity is about to become visible. protected void onresume() { super.onresume(); // The activity has become visible (it is now "resumed"). } 53

54 @Override protected void onpause() { super.onpause(); // Another activity is taking focus (this activity is about to be "paused"). protected void onstop() { super.onstop(); // The activity is no longer visible (it is now "stopped") protected void ondestroy() { super.ondestroy(); // The activity is about to be destroyed. } } 주의: 콜백 메소드를 구현할 때는 어떤 다른 작업을 수행하기 전에, 상위 클래스의 해당 메소드를 반드시 먼저 호출 해 줘 야합니다 54

55 액티비티 라이프 사이클내에 자리잡은 세 가지 내부 순환고리라는 것도 알아두면 좋아요 oncreate()에서 시작해서 ondestroy()가 호출되는 사이에 일어나는 entire lifetime 여러분의 액티비티는 화면 레이아웃과 같은 액티비티 전반(global)에 쓰이는 정보들이 oncreate()에서 셋업되어야 하고, ondestroy()에서는 모든 남아있는 리소스들을 놔줘야 합니다. onstart()에서 시작해서 onstop()이 호출되는 사이에 일어나는 visible lifetime 이 기간 동안에는 사용자는 화면 상에 나타난 액티비티를 볼 수도 있고, 이것과 상호 작용을 할 수도 있습니다. onstop() 메소드는 다른 액티비티가 시작해서 현재의 것이 더 이상 보이지 않을 때 호출되기 때문에. 이 기간 동안 여러분은 액티비 티가 사용자에게 보여지기 위해 필요한 리소스들을 유지하도록 해줘야 합니다. 액티비티가 화면에 나왔다 뒤로 숨었다를 반복할테니, 액티비티의 entire lifetime 동안 onstart()와 onstop()은 몇 번이고 호출될 수 있습니다. onresume()에서 시작해서 onpause()이 호출되는 사이에 일어나는 foreground lifetime 이 기간동안에 액티비티는 화면상 다른 액티비티의 앞에 있게 되고 사용자 입력 포커스도 쥐게 됩니다. 디바이스가 sleep 상태가 되거나 다이얼로그가 나타나는 등의 일이 수시로 일어납니다. 이러한 잦은 변환때문에 이 두 메소드 안의 코드는 가벼워야 할 것입니다. 전환때마다 시간이 걸리면 좋지 않겠죠? 55

56 activity 액티비티 lifecycle과 Callback method 앞서 본 메소드들이 액티비티의 상태에 따라 호출되는 순서와 연관성을 그림으로 그려보면 오른쪽과 같습니다. 꼭 기억해 두세요. 안정성 있는 어플리케이션을 디자인하고 구현하기 위해서는 반드시 기억해야할 부분입니다. 56

57 액티비티 lifecycle과 Callback method, 순환고리까지 액티비티의 라이프사이클과 콜백 메소드, 방금 봤던 세 가지 형태의 순환 고리를 생각하면서 그림을 다시 살펴 보도록 합 시다. foreground lifetime visible lifetime 57

58 액티비티 상태변화와 Callback method호출 하나 꼭 기억할 것!!! Process!= Application 안드로이드 어플리케이션은 하나 이상의 액티비티와 그것들을 포함하는 리눅스 프 로세스이며, 어플리케이션은 프로세스 가 끝난 후 에도 살아있을 수 있습니다. 다 시 말 해, 액 티 비 티 의 lifecycle 은 프 로 세 스 의 lifecycle과 묶여 있지 않습니다. 프로세스는 액티비 티를 위 한 일 회 용 컨 테이너 일 뿐이라고 생각하면 됩니다. 58

59 액티비티의 콜백 메소드 간단히 보기 oncreate() 액티비티가 처음 생성될 때 호출됩니다 onstart() 액티비티가 사용자에게 보여질 때(실제 나타날 때) 호출됩니다 onresume() 액티비티가 사용자와 상호 작용(interacting)을 시작할 때 (할 수 있을 때) 호출됩니다 onpause() 시스템이 다른 액티비티를 다시 시작하려고 할 때 호출됩니다. onstop() 액티비티가 더 이상 사용자에게 보여지지 않을 때 호출됩니다 ondestroy() 시스템에 의해(메모리 부족 등의 이유로) 소멸되기 전에 호출됩니다 onrestart() 멈춰있던(stopped) 액티비티가 다시 시작할 때 호출됩니다. onpause(), onstop(), ondestroy() 메소드의 경우, 이 메소드가 실행된 후에 시스템이 프로세스를 죽일 수 있습니 다.(다른 메소드는 왠만해선 보호가 됩니다). onpause()가 실행되고 난 이후엔 어플리케이션이 간직해야하는 정보가 (제때 저장해 두지 않는 다면) 어떤 시점에 사라질 지도 모른다는 뜻도 됩니다. 따라서, 저장해야되는 정보가 있다면 onpause()메소드에서 해줘야 가장 안전합니다. 어쨌이든 onpause()는 실행될테니까요. 59

60 콜백 메소드는 어떤 용도로 사용하면 좋을까? oncreate() 메소드 내에서는 설정과 관련된 일회적 초기화를 수행하세요 액티비티가 처음 시작하면, oncreate() 메소드가 호출됩니다. oncreate() 메소드는 Bundle 이라는 하나의 파라메터를 갖으며 새롭게 시작하는 액티비티일 경우엔 Bundle은 null 입니다. 만약에 이 액티비티가 메모리 부족 등의 이유로 종료되었다가 다시 실행되는 경우, Bundle 은 액티비티의 이전 상태 정보를 가지고 있게 되며 그 정보들로 인스턴스화 됩니다. 레이아웃이나 변수 선언, 데이터 바인딩과 같은 설정과 관련된 일들을 oncreate()에서 수행하는 것이 좋습니다. setcontentview() 메소드 호출도 이 메소드 내에서 반드시 이루어져야 합니다. onresume() 메소드에서는 화면에 보이기전, 필요한 리소스를 찾아서 초기화 하기에 딱 좋습니다 액티비티 스택의 최상위에 오르게 되어 foreground 프로세스가 될 때, 사용자와 상호 작용을 할 수 있을 때, onresume() 메소드가 호출됩니다. 액티비티가 실행되는 데 필요한 리소스를 확인하고 찾아오기에 가장 좋은 위치입니다. 보통 그런 리소스들은 프로세스와 밀접한 것들이라서 액티비티 가 전면에 나올 때에만 사용하는 게 좋겠죠? 오디오나 비디오, 혹은 애니메이션을 실행하기에 딱 좋은 위치입니다. 그리고, onpause() 상태에서 다시 시작했을 때도 onresume()이 호출됩니다. 60

61 onpause() 에서는 어플리케이션의 지속적인 정보를 저장하세요 다른 액티비티가 스택의 최상위에 올라오게 되면, 현재 액티비티는 onpause() 메소드 호 출을 통해 스택의 아래로 내려가게 될 것을 통보 받습니다. 그러므로, onpause() 메소드 내에서 오디오나 비디오 등을 실행중이라면 멈춰야 하겠죠. 그리고 액티비티가 소멸되거나 다시 살아나지 않을 경우를 대비해 데이터를 저장하는 등의 일이 이루어져야 합니다. 일반적으로 onresume()에서 획득된 리소 스를 onpause() 에서 놔 줍니다. onpause() 메소드가 완료되기 전까지는 다음 액티비티가 화면상에 나타나지 않습니다. 항상 액티비티가 운영체제에 의해 종료될 때를 대비해야 합니다 화면에 나타나지 않은 액티비티들은 언제 종료될 지 모릅니다. 옆에 그림에서 보듯 onpause()가 호출된 다음에도 액티비티가 종료될 수 있습니다. onstop(), ondestroy() 가 호출되지도 않은 상태에서 말이죠. 그러므로, 가능한 onpause()에서 리소스들을 놔주거나, 저장할 게 있으면 저장하도록 하 세요. 61

62 액티비티의 프로세스는 언제 죽을 지 몰라요. 하지만, 액티비티가 강제로 죽는 걸 피할 수는 있습니다. Foreground에 있으면 죽지 않아요. 메모리가 모자라는 상황이 되면, paused, stopped, destroyed 상태인 액티비티의 프로세스는 안드로이드 운영체제가 죽일 수가 있습니다. 이말은 전면(foreground)에 있지 않은 액티비티는 종료(shutdown) 가능하다는 뜻이기도 하고, 액티비티가 전면에 있으면 종료될 일은 없다는 뜻이기도 하네요. 백그라운드로 내려가기 전에 잡고 있던 자원을 가능한 많이 놔주면 죽을 확률도 떨어지고요. 그리고, onpause()가 호출된 후에 액티비티가 죽는다면, onstop()이나 ondestroy()가 호출되지 않습니다. onpause()에서 액티비티가 사용하던 자원을 많이 포기할 수록, 백그라운드에 있는 동안 액티비티의 프로세스가 죽을 가능성이 적어질 것입니다. 혹시나 죽더라도 너무 걱정은 마세요.onSaveInstanceState()이 있거든요. 액티비티가 죽어도 액티비티 스택에서 액티비티가 제거 되는 것은 아닙니다. 대신, 그 액티비티가 onsaveinstancestate()를 구현해서 사용하고 있다면 액티비티의 상태 정보를 Bundle객체에 저장할 수 있습니다. (일부 View 데이터는 자동으로 저장되므로 사용자 정의 데이터에 대해서만 그리하면 됩니다). 그리고, 나중에 사용자가 이 액티비티를 실행하면, oncreate()가 호출되면서 Bundle객체가 파라메터로 전달됩니다. 62

63 onpause()말고도 정보를 저장하는 또 다른 수단이 있군요! 액티비티가 일시정지(paused)되거나 멈추었을 때(stopped)에도, 액티비티의 상태 정보는 유지됩니다. Activity 객체가 여전히 메모리에 남아 있기 때문입니다. 하지만, 메모리가 부족한 상태라면 시스템은 액티비티를 소멸시켜버립니다. 메모리에 있던 Activity 객체를 없애버리는 거죠. 이렇 게 되면 시스템은 일시정지나 멈춤 상태 이전의 액티비티 정보로 다시 액티비티를 시작하게 할 수가 없습니다. 그 대신 사용자가 그 액티비티로 다시 돌아가고자 하면 시스템은 Activity 객체를 다시 생성하게 되죠. 하지만, 사용자는 Activity 객체가 소멸되어 버렸는지, 그 후에 다시 생성된 것인지 알 수가 없기 때문에, 아마도 소멸되기 이전의 상 태를 기대할 것입니다. 잘 디자인된 어플리케이션이라면 당연히 사용자의 기대를 져버려선 안되겠죠? 이러한 상황에서도 액티비티의 상태 정보를 보존하도록 하려면, 그러한 정보를 저장한 후 시스템이 액티비티를 재생성할 때 저장한 정보로 복구할 수 있도록 추가적인 메소드를 구현해 주면 됩니다. 그 추가적인 콜백 메소드가 바로 onsaveinstancestate() 입니다 63

64 onpause()에서 모두 저장하면 되는데, 왜 onsaveinstancestate()를? onsaveinstancestate()는 시스템이 리소스 부족으로 인해 부득이 하게 액티비티를 강제로 소멸시켜 야 할 경우를 대비한 것입니다. 사용자가 원해서 종료하는 것이 아니므로, 사용자의 편이를 위한다면 원래 상태로 복구해 줄 수 있어야 하지 않겠습니까? 그러한 이유로 사용자가 Back키를 눌러 액티비티를 직접 종료할 경우에는 onsaveinstancestate()를 호출하지도 않습니다. (사용자가 Back키를 눌렀다는 것은 사용자가 이 액티비티의 활동에 더 이상 관심이 없다는 것이며, 다시 원래대로 복구할 필요도 없다고 판단하여 호출하지 않는 것입니다) 그런 일들은 onpause()에서도 가능하지 않나요? 물론, 가능합니다. 하지만, 액티비티에는 다수의 View객체가 포함될테고, 그 각각의 View 객체가 갖는 일시적인 정보들, 그 외에 액티비티의 멤버 변수들도 존재할 수 있겠죠. 또한 기본적으로 관리해야 할 (어플리케이션 전체어서 사용되는) 지속적인 정보들도 있을 수 있습니다. onpause()나 onstop()에서 이 모든 것에 대한 다야한 정보를 일일이 저장하고, 나중에 해당 액티비티가 foreground도 돌아오거나 다시 생성될 때 해당 정보들로 다시 복구해야 한다면 상당히 번거롭고 복잡한 처리가 필요할 것입니다. 그래서, 액티비티의 일시적인 정보에 대해서는 그 정보를 손쉽게 저장하고, 재생성될 때 복구 또한 쉽도록 이 메소드를 준비한 것 입니다. onsaveinstancestate()은 일시적인 액티비티 인스턴스의 정보를 저장하기 위해, onpause()는 어플리케이션 에서 지속적으로 필요한 정보를 저장하기 위해 사용하시면 됩니다.. 64

65 onsaveinstancestate() 시스템은 액티비티가 소멸되도록 하기 이전에 이 메소드를 호출하며, Bundle 객체를 전달합니다. (Bundle 객체는 액티비티에 대 한 상태 정보를 저장할 수 있는 객체로써 putstring()이라는 메소드를 이용해서 이름-값(name-value) 쌍으로 저장합니다) 그리고 나서, 시스템이 액티비티의 프로세스를 죽이고, 이 후에 사용자가 다시 액티비티로 돌아가려 하면 oncreate() 메소드에 그 Bundle 객체를 전달해서 그 안에 담긴 액티비티의 상태 정보를 이용해서 복구하도록 할 수가 있습니다. 한 가지 주의할 점은, 액티비티가 소멸되기 전에 반드시 이 메소드가 호출된다고 보장할 수는 없다는 것입니다. 앞서 언급한 것처럼, 사용자가 Back키를 눌러서 액티비티를 종료한다면 호출이 되지 않습니다. 단순히 백그라운드로 액티비티가 물러날 때에도 당연히 호출되지 않습니다. Activity 클 래 스 는 물 론, View 계 층 내 의 모 든 것 들 은 onsavainstancestate() 메 소 드 를 이 미 구 현 하 고 있 으 며, Activity 의 onsaveinstancestate()을 호출할 경우 액티비티에 등록된 모든 View의 onsaveinstancestate()를 호출하여 해당 상태 정보들을 저장하므로, 추가적으로 저장해야하는 정보가 있을 경우에만 재정의하면 됩니다. (콜백 메소드에서 했던 것처럼, 상위 클래스의 구현메소드를 먼저 호출한 후에 추가 저장이 이루어져야 하겠죠?) 65

66 oncreate( ) The system recreates the activity The system resumes the activity* Activity restores the user changes Activity is running Another activity comes in front of the activity Activity is running Another activity comes in front of the activity User navigates back to the activity onsaveinstancestate( ) Activity saves the user changes onsaveinstancestate( ) Activity saves the user changes Process is killed* Activity is no longer visible User navigates back to the activity Activity is no longer visible Other applications need memory * There s no need to restore state, because the activity is intact * User changes are lost 66

67 onsaveinstancesate() 호출 시점 onsaveinstancestate()에 대한 호출은 onstop() 이 호출되기 전에 이루어지며, onpause() 이전에 이 루어 질 수도 있 으나 그것 들 보장할 수는 없습니다 67

68 액티비티 간단 요약 액티비티 하나로만 끝나는게 아니라 어플리케이션에는 다양한 액티비티가 다수 존재할테고 이 액티비티간의 협업으로 원하는 일이 이루어질텐데 그럼 액티비티와 액티비티간에 대화도 필요할테고.. 이걸 효과적으로 처리하기 위해선 어떻게 해야하나... 이런 고민? 그것을 다음 장부터 설명하려고 합니다. 68

69 참고 69

70 안드로이드 에뮬레이터 안드로이드 SDK에 포함된 에뮬레이터는 실제 디바이스가 아닌 윈도우나 맥, 리눅스 같은 운영체제 위에서 앱을 실행할 수 있도록 해 줍니다. 에뮬레이터에서 앱을 실행하기 전에 먼저 안드로이드 가상 디바이스(AVD, Android Virtual Device)를 생성해 줘야 합니다. 여러분이 테스트해 보고자 하는 디바이스의 특성(하드웨어나 스크린 사이즈 등)을 정의하는 별도의 AVD를 생성해 줄 수도 있으며, 다수의 디바이스 환경에서 여러분이 작성한 앱을 테스트 해보고자 한다면, 각각의 디바이스 특징에 맞게 여러 개의 AVD를 생성해서 각각 테스트 해볼 수도 있습니다 여러분이 사용하는 컴퓨터의 키보드와 마우스를 이용해서도 대부분의 안드로이드 제스쳐(gesture)와 컨트롤을 에뮬레이터 상에서도 재현할 수는 있습니다. 하지만 실제 디바이스가 아니다보니 한계가 있기도 합니다. 70

71 Gesture Tap Double tap Long Press Drag Swipe Fling Pinch Emulator Action Click the mouse Double-click the mouse Click and hold the mouse Click, hold and drag the mouse Click and hold the mouse, move the pointer in the swipe direction and release the mouse Click and hold the mouse, move the pointer in the flick direction and quickly release Press and hold the Ctrl key. Two circle that simulate the two touches will appear. Move the circles to the start position, click and hold the mouse and drag the circles to the end position. Android gestures on the emulator 71

72 Control Emulator Action Control Emulator Action Back ESc Search F5 Call/dial button F3 *(right softkey) Sift-F2 or Page Down button Camera Ctrl-KEYPAD_5, Ctrl-F3 Rotate left KEYPAD_7, Ctrl-F11 End call button F4 Rotate right KEYPAD_9, Ctrl-F12 Home Home button Toggle cell networking on/off F8 Menu(left softkey) F2 or Page Up button Volmune up button KEYPAD_PLUS, Ctrl-F5 Power button F7 Volume down button KEYPAD_MINUS, Ctrl-F6 Android hardware controls on the emulator 72

73 Thanks For Listening John Doe, 27 September

( )부록

( )부록 A ppendix 1 2010 5 21 SDK 2.2. 2.1 SDK. DevGuide SDK. 2.2 Frozen Yoghurt Froyo. Donut, Cupcake, Eclair 1. Froyo (Ginger Bread) 2010. Froyo Eclair 0.1.. 2.2. UI,... 2.2. PC 850 CPU Froyo......... 2. 2.1.

More information

Microsoft PowerPoint App Fundamentals[Part2].pptx

Microsoft PowerPoint App Fundamentals[Part2].pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 애플리케이션기초 Part 1 애플리케이션컴포넌트 액티비티와태스크 프로세스와쓰레드 컴포넌트생명주기 Part 2 2 태스크는명시적으로정의 / 선언하는것이아니라, 주어진목적을위해 현재수행되고있는액티비티들의스택이다. 예를들어, 어떤액티비티가특정위치상의시가지지도를보여주고자한다하자. 해당액티비티는안드로이드에이미존재하는맵뷰어액티비티를실행

More information

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - windows server 2003 수동설치_non pro support_.doc Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로

More information

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID android:title= 항목제목 /> </menu> public boolean oncreateoptionsmenu(menu menu) { getme 8 차시메뉴와대화상자 1 학습목표 안드로이드에서메뉴를작성하고사용하는방법을배운다. 안드로이드에서대화상자를만들고사용하는방법을배운다. 2 확인해볼까? 3 메뉴 1) 학습하기 [ 그림 8-1] XML 을이용한옵션메뉴설정방법 public boolean

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with

More information

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

PathEye 공식 블로그 다운로드 받으세요!!   지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye Mobile Ver. 0.71b 2009. 3. 17 By PathEye 공식 블로그 다운로드 받으세요!! http://blog.patheye.com 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye 설치 1/3 최종 배포 버전을 다 운로드 받습니다. 다운로드된 파일은 CAB 파일입니다. CAB 파일에는

More information

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 2 사용자가인터랙션하는특정 View

More information

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드]

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드] Android UI 구현 학습목표 교육목표 Android application 구성요소 Activity Layout UI 설계 Linear Layout 구현 Android application 구성요소 (1) () Application 구성요소 AndroidManifest.xml Android application 구성요소 (2) 구성요소 기능 Activity

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

4S 1차년도 평가 발표자료

4S 1차년도 평가 발표자료 모바일 S/W 프로그래밍 안드로이드개발환경설치 2012.09.05. 오병우 모바일공학과 JDK (Java Development Kit) SE (Standard Edition) 설치순서 Eclipse ADT (Android Development Tool) Plug-in Android SDK (Software Development Kit) SDK Components

More information

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다. 헬로, 안드로이드 4 주차 사용자인터페이스디자인하기 (2) 강대기동서대학교컴퓨터정보공학부 학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다. 차례 메뉴추가하기 Settings 추가하기 새게임시작하기

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

View Licenses and Services (customer)

View Licenses and Services (customer) 빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

슬라이드 1

슬라이드 1 CCS v4 사용자안내서 CCSv4 사용자용예제따라하기안내 0. CCS v4.x 사용자 - 준비사항 예제에사용된 CCS 버전은 V4..3 버전이며, CCS 버전에따라메뉴화면이조금다를수있습니다. 예제실습전준비하기 처음시작하기예제모음집 CD 를 PC 의 CD-ROM 드라이브에삽입합니다. 아래안내에따라, 예제소스와헤더파일들을 PC 에설치합니다. CD 드라이브 \SW\TIDCS\TIDCS_DSP80x.exe

More information

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 애플리케이션기초 애플리케이션컴포넌트 액티비티와태스크 Part 1 프로세스와쓰레드 컴포넌트생명주기 Part 2 2 Library Java (classes) aapk.apk (android package) identifiers Resource & Configuration aapk: android

More information

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 - 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 - ArrayAdapter ArrayAdapter adapter = new ArrayAdapter(this, android.r.layout.simple_list_item_1,

More information

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx) w w w. g b t e c. c o. k r 6 안드로이드 App 적용하기 115 1. 안드로이드개요 모바일 OS 의종류 - 스마트폰 : 스마트폰운영체제탑재 애플의 IOS(iPhone OS) - 아이폰, 아이패드, 아이팟터치 구글의안드로이드 - Nexus, 갤럭시 A, S, 모토로이, 시리우스,... MS 의윈도우모바일 ( 윈도우폰 7) - 옴니아 2,

More information

소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기

소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기 소규모 비즈니스를 위한 YouTube 플레이북 YouTube에서 호소력 있는 동영상으로 고객과 소통하기 소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기

More information

Microsoft PowerPoint App Fundamentals[Part1].pptx

Microsoft PowerPoint App Fundamentals[Part1].pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 2 HangulKeyboard.apkapk 파일을다운로드 안드로이드 SDK 의 tools 경로아래에복사한후, 도스상에서다음과같이 adb 명령어수행 adb install HangulKeyboard.apk 이클립스에서에뮬레이터를구동 에뮬레이터메인화면에서다음과같이이동 메뉴버튼 설정 언어및키보드

More information

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java(  혹은   에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을 안드로이드설치및첫번째예제 안드로이드설치 안드로이드개발킷은안드로이드개발자사이트 (http://developer.android.com/) 에서다운로드받을수있으며현재 1.5 버전으로윈도우즈, 맥 OS X( 인텔 ), 리눅스플랫폼패키지가링크되어져있다. 안드로이드개발킷을설치하기위해서는다음과같은시스템환경이갖추어져있어야한다. 플랫폼 Windows Mac Linux 지원환경

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Hello Android Jo, Heeseung Contents HelloAndroid program AVD 명칭과사용법안드로이드응용프로그램작성안드로이드프로젝트구성 2 처음만드는 [Hello Android] 프로그램 3 처음만드는 [Hello Android] 프로그램 이클립스메뉴 [File]-[New]-[Project] 를선택 [New Project] 창에서

More information

SIGIL 완벽입문

SIGIL 완벽입문 누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS

More information

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=http://schemas.android.com/apk/res/android 2 xmlns:tools=http://schemas.android. 10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1

More information

슬라이드 1

슬라이드 1 Delino EVM 용처음시작하기 - 프로젝트만들기 (85) Delfino EVM 처음시작하기앞서 이예제는타겟보드와개발홖경이반드시갖추어져있어야실습이가능합니다. 타겟보드 : Delfino EVM + TMS0F85 초소형모듈 개발소프트웨어 : Code Composer Studio 4 ( 이자료에서사용된버전은 v4..입니다. ) 하드웨어장비 : TI 정식 JTAG

More information

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요 9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요 [ 그림 9-1] 시간예약앱 활동과정 - 2 - [ 그림 9-2] 안드로이드 SDK Manager [ 예제 9-1]main.xml 1

More information

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드] Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

1

1 1 2 3 4 5 6 b b t P A S M T U s 7 m P P 8 t P A S M T U s 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Chapter 1 29 1 2 3 4 18 17 16 15 5 6 7 8 9 14 13 12 11 10 1 2 3 4 5 9 10 11 12 13 14 15

More information

IRISCard Anywhere 5

IRISCard Anywhere 5 이 빠른 사용자 가이드는 IRISCard Anywhere 5 및 IRISCard Corporate 5 스캐너의 설치와 시작을 도와 드립니다. 이 스캐너와 함께 제공되는 소프트웨어는: - Cardiris Pro 5 및 Cardiris Corporate 5 for CRM (Windows 용) - Cardiris Pro 4 (Mac OS 용) Cardiris 의

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다.

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다. 헬로, 안드로이드 3 주차 사용자인터페이스디자인하기 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다. 차례 스도쿠예제소개하기 선언하여디자인하기 시작화면만들기 대체리소스사용하기 About

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

Microsoft PowerPoint - 02처음으로만드는(Ver 1.0)

Microsoft PowerPoint - 02처음으로만드는(Ver 1.0) 02. 처음으로만드는안드로이드응용프로그램 IT CookBook, 안드로이드프로그래밍 학습목표 안드로이드응용프로그램의기본적인작성법을익힌다. AVD 의명칭을배운다. 안드로이드프로젝트의구성을파악한다. Page 2 차례 Page 3 1. 처음만드는 [Hello Android] 프로그램 Page 4 1. 처음만드는 [Hello Android] 프로그램 [ 실습 2-1]

More information

윈도 모바일 6.1을 OS로 사용하는 스마트폰(옴니아2 등)에서의 Tcl/Tk의 사용

윈도 모바일 6.1을 OS로 사용하는 스마트폰(옴니아2 등)에서의 Tcl/Tk의 사용 일, 12/27/2009-18:11 bonkora 첨부 파일 1.png [1] 2.png [2] 3.png [3] 4.png [4] 5.png [5] 6.png [6] 7.png [7] 8.png [8] 9.png [9] 10.png [10] 11.png [11] study4etcl.zip [12] 파일 크기 11.91 KB 19.69 KB 21.67 KB

More information

서현수

서현수 Introduction to TIZEN SDK UI Builder S-Core 서현수 2015.10.28 CONTENTS TIZEN APP 이란? TIZEN SDK UI Builder 소개 TIZEN APP 개발방법 UI Builder 기능 UI Builder 사용방법 실전, TIZEN APP 개발시작하기 마침 TIZEN APP? TIZEN APP 이란? Mobile,

More information

SBR-100S User Manual

SBR-100S User Manual ( 1 / 13 ) SBR-100S 모델에 대한 사용자 펌웨어 업그레이드 방법을 안내해 드립니다. SBR-100S 는 신규 펌웨어가 있을시 FOTA(자동업데이트) 기능을 통하여 자동 업그레이드가 되며, 필요시 사용자가 신규 펌웨어를 다운받아 수동으로 업그레이드 할 수 있습니다. 1. 준비하기 1.1 연결 장치 준비 펌웨어 업그레이드를 위해서는 SBR-100S

More information

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation=vertical > 4 <ImageView 7 차시이미지처리 1 학습목표 이미지뷰를사용하는방법을배운다. 비트맵을사용하는방법을배운다. 2 확인해볼까? 3 이미지뷰와이미지버튼 1) 학습하기 [ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 4

More information

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4

More information

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사 IDIS Mobile Android 사용설명서 Powered by 사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사양 및 버전에 따라 일부

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

1부

1부 PART 1 2 PART 01 _ SECTION 01 API NOTE SECTION 02 3 SECTION 02 GPL Apache2 NOTE 4 PART 01 _ SECTION 03 (Proyo) 2 2 2 1 2 2 : 2 2 Dalvik JIT(Just In Time) CPU 2~5 2~3 : (Adobe Flash) (Air) : SD : : : SECTION

More information

목차 제 1 장 inexio Touch Driver소개... 3 1.1 소개 및 주요 기능... 3 1.2 제품사양... 4 제 2 장 설치 및 실행... 5 2.1 설치 시 주의사항... 5 2.2 설치 권고 사양... 5 2.3 프로그램 설치... 6 2.4 하드웨

목차 제 1 장 inexio Touch Driver소개... 3 1.1 소개 및 주요 기능... 3 1.2 제품사양... 4 제 2 장 설치 및 실행... 5 2.1 설치 시 주의사항... 5 2.2 설치 권고 사양... 5 2.3 프로그램 설치... 6 2.4 하드웨 최종 수정일: 2010.01.15 inexio 적외선 터치스크린 사용 설명서 [Notes] 본 매뉴얼의 정보는 예고 없이 변경될 수 있으며 사용된 이미지가 실제와 다를 수 있습니다. 1 목차 제 1 장 inexio Touch Driver소개... 3 1.1 소개 및 주요 기능... 3 1.2 제품사양... 4 제 2 장 설치 및 실행... 5 2.1 설치 시

More information

슬라이드 1

슬라이드 1 전자정부개발프레임워크 1 일차실습 LAB 개발환경 - 1 - 실습목차 LAB 1-1 프로젝트생성실습 LAB 1-2 Code Generation 실습 LAB 1-3 DBIO 실습 ( 별첨 ) LAB 1-4 공통컴포넌트생성및조립도구실습 LAB 1-5 템플릿프로젝트생성실습 - 2 - LAB 1-1 프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new

More information

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집 Modern Modern www.office.com ( ) 892 5 : 1577-9700 : http://www.microsoft.com/korea Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와

More information

Microsoft Word - 안드로이드_개발_매뉴얼1.docx

Microsoft Word - 안드로이드_개발_매뉴얼1.docx 안드로이드개발매뉴얼 2009/11/18 모비젠 TI연구소 MA연구팀허광남 kenu@mobigen.com From: http://www.android.com/goodies/ 목차 들어가며... 1 안드로이드개요... 1 안드로이드 SDK... 5 이클립스설치... 8 Hello Android 프로젝트만들기... 10 안드로이드프로젝트실행... 12 맺으며...

More information

구글안드로이드프로그래밍액티비티, 인텐트수신자, 그리고서비스 안드로이드애플리케이션의구성요소에는액티비티, 인텐트수신자, 서비스, 컨텐트제공자가있다. 이번호에서는사용자인터페이스를위한액티비티와백그라운드서비스를위한인텐트수신자, 그리고서비스의라이프사이클과활용법에대해살펴보도록하자.

구글안드로이드프로그래밍액티비티, 인텐트수신자, 그리고서비스 안드로이드애플리케이션의구성요소에는액티비티, 인텐트수신자, 서비스, 컨텐트제공자가있다. 이번호에서는사용자인터페이스를위한액티비티와백그라운드서비스를위한인텐트수신자, 그리고서비스의라이프사이클과활용법에대해살펴보도록하자. 구글안드로이드프로그래밍액티비티, 인텐트수신자, 그리고서비스 안드로이드애플리케이션의구성요소에는액티비티, 인텐트수신자, 서비스, 컨텐트제공자가있다. 이번호에서는사용자인터페이스를위한액티비티와백그라운드서비스를위한인텐트수신자, 그리고서비스의라이프사이클과활용법에대해살펴보도록하자. 6 연재순서 1 회 2008. 1 애플리케이션구조분석 2 회 2008. 2 GUI 설계,

More information

Chapter 1

Chapter 1 3 Oracle 설치 Objectives Download Oracle 11g Release 2 Install Oracle 11g Release 2 Download Oracle SQL Developer 4.0.3 Install Oracle SQL Developer 4.0.3 Create a database connection 2 Download Oracle 11g

More information

THE TITLE

THE TITLE Android System & Launcher Team 8 목차 Android 1) Android Feature 2) Android Architecture 3) Android 개발방법 4) Android Booting Process Dalvik 1) Dalvik VM 2) Dalvik VM Instance Application 1) Application Package

More information

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을 IDIS Mobile ios 사용설명서 Powered by 사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다.

More information

슬라이드 1

슬라이드 1 헬로, 안드로이드 3 주차 사용자인터페이스디자인하기 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 선언하여디자인을하는방법을이해하고, 실행핛수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행핛수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행핛수있다. 차례 스도쿠예제소개하기 선언하여디자인하기 시작화면만들기 대체리소스사용하기 About

More information

12 주차 인텐트

12 주차 인텐트 12 주차 인텐트 학습내용 1. 서브액티비티 2. 인텐트 3. 액티비티의생명주기 서브액티비티 액티비티 액티비티개요 - 안드로이드응용프로그램을구성하는주요콤포넌트의하나이며, 각예제마다하나씩액티비티를만들었는데각예제의화면하나가바로액티비티임 액티비티 액티비티개요 - 윈도우와유사한개념이지만 하나의화면 이라고이해하는것이옳음 - 즉, 액티비티는사용자와상호작용할수있는하나의윈도우라고생각하면옳음

More information

디지털 공학

디지털 공학 캡스톤디자인 App Inventor 디지털전자정보계열 앱 인벤터란? MIT 대학 미디어 랩 연구실에서 만든 안드로 이드용 스마트폰 앱 제작하는 블록 프로그래 밍 기법의 비주얼 프로그래밍 도구이다. 스마트폰의 화면을 디자인하고 블록들을 조 립하면 우리가 원하는 앱을 만들 수 있다. 인터넷이 연결된 곳에서는 어디서라도 접속 하여 앱 화면을 직접 디자인하고 프로그래밍

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

Google Maps Android API v2

Google Maps Android API v2 Google Maps API 3 조 20080388 김현철 20080748 양태욱 20091493 김이현 Google Maps? 구글에서제공하는지도서비스 걷기, 차량두가지길찾기기능제공 최근, Open API 로현지대중교통과연동하여사용 Google Maps API? 개발자에게 Google Maps 를삽입할수있도록 Google 에서제공하는 Application

More information

슬라이드 1

슬라이드 1 Android Mobile Application Development Part 2 Agenda Part 1 Build Develop Environment Create new Project Composition of Project Simulate Application Part 2 User Interface Activity Toast Preference Log

More information

슬라이드 1

슬라이드 1 IntelliJ IDEA 1. 도구개요 2. 설치및실행 3. 주요기능 1. 도구개요 도구명 IntelliJ IDEA (http://www.jetbrains.com/idea/) 라이선스 Apache 2 소개 Java 용통합개발도구 요구사항을정의하고전체개발과정에서요구사항을추적할수있도록지원. 특징 Java IDE 환경제공 모바일및엔터프라이저개발을위한프레임워크제공

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

Daum 카페

Daum 카페 인쇄하기 인쇄 [22 장 ] 프래그먼트 (1/8) (20140815 완료 ) 책에담지못한장들 슈퍼성근 조회 326 2014/08/10 22:38:46 주의 : 소스내용중 "0nClick", "0nStart" 함수명첫글자가숫자 0 인것은오타가아닙니다. 다움게시판은 o n C l i c k 라는글을입력할수없기때문에어쩔수없이 영문소문자 o 를숫자 0 으로대체하였습니다.

More information

13ÀåÃß°¡ºÐ

13ÀåÃß°¡ºÐ 13 CHAPTER 13 CHAPTER 2 3 4 5 6 7 06 android:background="#ffffffff"> 07

More information

PowerPoint Template

PowerPoint Template 3. 안드로이드개발환경설치 Android Studio 설정 [1/13] [Windows 시작 ]-[ 모든앱 ]-[Android Studio] 의 Android Studio 를실행 Page 34 3. 안드로이드개발환경설치 Android Studio 설정 [2/13] 첫설치이므로다음과같은선택화면이나오면아래쪽 I do not have a previous~ 가 선택된상태에서

More information

07(876-880) CPLV12-35.hwp

07(876-880) CPLV12-35.hwp 876 정보과학회논문지 : 컴퓨팅의 실제 및 레터 제 18 권 제 12 호(2012.12) 안드로이드 애플리케이션의 UI 단위 테스트 방법 (Unit Test Method for UI of Android Applications) 윤 상 필 서 용 진 (Sangpil Yun) (Yongjin Seo) 고 민 혁 김 현 수 (Minhyuk Ko) (Hyeon Soo

More information

01장

01장 CHAPTER1 Camera (MediaStore) EXIF 1 2 CHAPTER 1 SDK (intent) Camera Camera Camera Android Manifest xml Camera Camera

More information

슬라이드 1

슬라이드 1 모바일소프트웨어프로젝트 지도 API 1 조 20070216 김성수 20070383 김혜준 20070965 이윤상 20071335 최진 1 매시업? 공개 API? 2 매시업 웹으로제공하고있는정보와서비스를융합하여새로운소프트웨어나서비스, 데이터베이스등을만드는것 < 최초의매시업 > 3 공개 API 누구나사용할수있도록공개된 API 지도, 검색등다양한서비스들에서제공 대표적인예

More information

03장

03장 CHAPTER3 ( ) Gallery 67 68 CHAPTER 3 Intent ACTION_PICK URI android provier MediaStore Images Media EXTERNAL_CONTENT_URI URI SD MediaStore Intent choosepictureintent = new Intent(Intent.ACTION_PICK, ë

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25

REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25 REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25 문서개정내역 변경일버전변경내용비고 2014.06.30 1.0.0 최초작성 2014.09.30 1.1.0 개인정보항목변경, 개인정보이용약관기능추가 2014.12.01 1.2.0 Proguard 추가 2014.12.16 1.2.0 Android Studio 기준샘플및가이드추가

More information

정부3.0 국민디자인단 운영을 통해 국민과의 소통과 참여로 정책을 함께 만들 수 있었고 그 결과 국민 눈높이에 맞는 다양한 정책 개선안을 도출하며 정책의 완성도를 제고할 수 있었습니다. 또한 서비스디자인 방법론을 각 기관별 정부3.0 과제에 적용하여 국민 관점의 서비스 설계, 정책고객 확대 등 공직사회에 큰 반향을 유도하여 공무원의 일하는 방식을 변화시키고

More information

1

1 2/33 3/33 4/33 5/33 6/33 7/33 8/33 9/33 10/33 11/33 12/33 13/33 14/33 15/33 16/33 17/33 5) 입력을 다 했으면 확인 버튼을 클릭합니다. 6) 시작 페이지가 제대로 설정이 되었는지 살펴볼까요. 익스플로러를 종료하고 다시 실행시켜 보세요. 시작화면에 야후! 코리아 화면이 뜬다면 설정 완료..^^

More information

스마트월드캠퍼스 교육교제

스마트월드캠퍼스 교육교제 LG Smart TV SDK 활용법 Contents 1. Using LG Smart TV SDK 2. Testing & Publishing 3. UX Guideline Using LG Smart TV SDK LG Smart TV SDK 구성 Open API IDE* App 구현을 위한 LG Smart TV 인터페이스 제공 Media playback, TV 제어,

More information

Dialog Box 실행파일을 Web에 포함시키는 방법

Dialog Box 실행파일을 Web에 포함시키는 방법 DialogBox Web 1 Dialog Box Web 1 MFC ActiveX ControlWizard workspace 2 insert, ID 3 class 4 CDialogCtrl Class 5 classwizard OnCreate Create 6 ActiveX OCX 7 html 1 MFC ActiveX ControlWizard workspace New

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

Oracle VM VirtualBox 설치 VirtualBox에서 가상머신 설치 가상머신에 Ubuntu 설치

Oracle VM VirtualBox 설치 VirtualBox에서 가상머신 설치 가상머신에 Ubuntu 설치 Oracle VM VirtualBox 설치 VirtualBox에서 가상머신 설치 가상머신에 Ubuntu 설치 VirtualBox를 사용하기 위해서는 일단 https://www.virtualbox.org/wiki/downloads 사이트에서 윈도우용 버추얼박스 설치화일을 다운로드 해야합니다. Ubuntu를 사용하기 위해서는 Ubuntu 디스크 이미지 화일을 다운로드

More information

쓰리 핸드(삼침) 요일 및 2405 요일 시간, 및 요일 설정 1. 용두를 2의 위치로 당기고 반시계방향으로 돌려 전날로 를 설정합니다. 2. 용두를 시계방향으로 돌려 전날로 요일을 설정합니다. 3. 용두를 3의 위치로 당기고 오늘 와 요일이 표시될 때까지 시계방향으로

쓰리 핸드(삼침) 요일 및 2405 요일 시간, 및 요일 설정 1. 용두를 2의 위치로 당기고 반시계방향으로 돌려 전날로 를 설정합니다. 2. 용두를 시계방향으로 돌려 전날로 요일을 설정합니다. 3. 용두를 3의 위치로 당기고 오늘 와 요일이 표시될 때까지 시계방향으로 한국어 표준 설정안내 서브 초침 시간 및 설정 1. 용두를 2의 위치로 뽑아냅니다. 2. 용두를 시계방향 또는 반시계방향으로 돌려(모델에 따라 다름) 를 전날로 설정합니다. 3. 용두를 3의 위치로 당기고 현재 가 표시될 때까지 시계방향으로 돌립니다. 4. 용두를 계속 돌려 정확한 오전/오후 시간을 설정합니다. 5. 용두를 1의 위치로 되돌립니다. 169 쓰리

More information

750 1,500 35

750 1,500 35 data@opensurvey.co.kr 750 1,500 35 Contents Part 1. Part 2. 1. 2. 3. , 1.,, 2. skip 1 ( ) : 2 ( ) : 10~40 (, PC, ) 1 : 70 2 : 560 1 : 2015. 8. 25~26 2 : 2015. 9. 1 4 10~40 (, PC, ) 500 50.0 50.0 14.3 28.6

More information

Facebook API

Facebook API Facebook API 2조 20071069 임덕규 20070452 류호건 20071299 최석주 20100167 김민영 목차 Facebook API 설명 Android App 생성 Facebook developers App 등록 Android App Facebook SDK 추가 예제 Error 사항정리 Facebook API Social Plugin Facebook

More information

슬라이드 1

슬라이드 1 - 1 - 전자정부모바일표준프레임워크실습 LAB 개발환경 실습목차 LAB 1-1 모바일프로젝트생성실습 LAB 1-2 모바일사이트템플릿프로젝트생성실습 LAB 1-3 모바일공통컴포넌트생성및조립도구실습 - 2 - LAB 1-1 모바일프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new Mobile Project 메뉴를선택한다.

More information

1. 무선 이미지 유틸리티 설명 1-1. 기능 이 Wireless Image Utility 는 안드로이드용 응용 프로그램입니다. 안드로이드 태블릿 또는 안드로이드 스마트폰에서 사용할 수 있습니다. 안드로이드 기기에 저장된 파일을 프로젝터로 무선 전송 컴퓨터에서 USB

1. 무선 이미지 유틸리티 설명 1-1. 기능 이 Wireless Image Utility 는 안드로이드용 응용 프로그램입니다. 안드로이드 태블릿 또는 안드로이드 스마트폰에서 사용할 수 있습니다. 안드로이드 기기에 저장된 파일을 프로젝터로 무선 전송 컴퓨터에서 USB 무선 이미지 유틸리티 버전 1.1 NEC 프로젝터용 안드로이드 응용 프로그램 무선 이미지 유틸리티 작동 설명서 NEC's Image 목차 1. 무선 이미지 유틸리티 설명...2 1-1. 기능...2 1-2. 작동 조건...5 1-3. 작동 순서...6 2. 안드로이드 기기에 Wireless Image Utility 설치...6 3. 안드로이드 기기에 투사할

More information

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 2. 관련연구 2.1 MQTT 프로토콜 Fig. 1. Topic-based Publish/Subscribe Communication Model. Table 1. Delivery and Guarantee by MQTT QoS Level 2.1 MQTT-SN 프로토콜 Fig. 2. MQTT-SN

More information

SproutCore에 홀딱 반했습니다.

SproutCore에 홀딱 반했습니다. Created by Firejune at 2009/10/30 SproutCore에 홀딱 반했습니다. 회사에서 첨여중인 프로젝트의 시제품(prototype)에 SproutCore 자바스크립트 프레임웍을 적용한 것을 시작으로, 아주 조금씩 조금씩 작동원리를 이해해 가면서 즐거운 나날을 보내고 있습니다. 그렇게 약 2개월 정도 작업이 진행되었고 큰 그림이 머리속에

More information

DE1-SoC Board

DE1-SoC Board 실습 1 개발환경 DE1-SoC Board Design Tools - Installation Download & Install Quartus Prime Lite Edition http://www.altera.com/ Quartus Prime (includes Nios II EDS) Nios II Embedded Design Suite (EDS) is automatically

More information

F120S_(Rev1.0)_1130.indd

F120S_(Rev1.0)_1130.indd 01 02 03 04 05 06 07 08 09 10 11 12 기본 구성품 구입 시 박스 안에 들어있는 구성품입니다. 구성품을 확인하세요. 누락된 구성품이 있을 경우, 또는 추가로 기본 구성품 구입을 원할 경우, LG전자 상담실 (T.1544-7777)로 문의하세요. 실제 제품과 그림이 다를 수 있으며 사정에 따라 일부 품목이 사전 통보 없이 변경될 수 있습니다.

More information

,,,,,, (41) ( e f f e c t ), ( c u r r e n t ) ( p o t e n t i a l difference),, ( r e s i s t a n c e ) 2,,,,,,,, (41), (42) (42) ( 41) (Ohm s law),

,,,,,, (41) ( e f f e c t ), ( c u r r e n t ) ( p o t e n t i a l difference),, ( r e s i s t a n c e ) 2,,,,,,,, (41), (42) (42) ( 41) (Ohm s law), 1, 2, 3, 4, 5, 6 7 8 PSpice EWB,, ,,,,,, (41) ( e f f e c t ), ( c u r r e n t ) ( p o t e n t i a l difference),, ( r e s i s t a n c e ) 2,,,,,,,, (41), (42) (42) ( 41) (Ohm s law), ( ),,,, (43) 94 (44)

More information

슬라이드 1

슬라이드 1 3 장안드로이드프로그램의 첫걸음 시작하면서 2 목차 프로젝트의생성하기 프로젝트파읷및소스코드이해 코드로문자열표시하기 문자열출력프로그램응용 프로젝트에새로운파읷 / 속성추가 프로젝트생성하기 프로젝트생성하기 4 < 실습 5-1>: Android 프로젝트의생성과에뮬레이터구동 (1)[ 그림 3-1](a) 처럼안드로이드프로젝트생성아이콘클릭 [ 그림 3-1](b) 처럼이클립스에서메뉴선택

More information

슬라이드 1

슬라이드 1 Android Mobile Application Development Part 1 Agenda Part 1 About Android Build Develop Environment Create new Project Composition of Project Simulate Application Part 2 User Interface Activity Toast Preference

More information

Microsoft Word - Korean_뷰어 메뉴얼_공용_ADVR&SWi_.doc

Microsoft Word - Korean_뷰어 메뉴얼_공용_ADVR&SWi_.doc DVR HDD PC Viewer Guide ADVR6000 / SWI5000 선운정보통신 소개 본 매뉴얼은 DVR의 하드디스크 PC 뷰워의 설명서입니다. 이 프로그램은 DVR에 장착되어 미리 포맷되고 녹화된 HDD에 저장된 영상들을 사용자의 PC에서 직접 보여줄 것입니다. DVR의 하드디스크-랙에서 분리된 하드디크스가 사용자의 PC에 연결됐다면 이 응용프로그램은

More information

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1 디지털 사진 프린터 P-S100 프린터 드라이버 설치 가이드 사용하는 컴퓨터에 따라 제공된 프린터 드라이버를 설치합니다. 설치 절차 에 대한 자세한 내용은 CD-ROM의 Readme 파일을 참조하십시오. 작동 환경 Windows 호환 모델: IBM PC/AT 및 호환품 운영 체제: Windows 98 SE/Me/2000/XP (Windows 98 SE/Me/2000/XP

More information

DocsPin_Korean.pages

DocsPin_Korean.pages Unity Localize Script Service, Page 1 Unity Localize Script Service Introduction Application Game. Unity. Google Drive Unity.. Application Game. -? ( ) -? -?.. 준비사항 Google Drive. Google Drive.,.. - Google

More information

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리 ArcGIS for Desktop 10.4 Single Use 설치가이드 Software: ArcGIS for Desktop 10.4 Platforms: Windows 10, 8.1, 7, Server 2012, Server 2008 ArcGIS for Desktop 10.4 시스템 요구사항 1. 지원 플랫폼 운영체제 최소 OS 버전 최대 OS 버전 Windows

More information

OpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프

OpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프 OpenCV 와함께하는컴퓨터비전프로그래밍캠프 Appx. 안드로이드 OpenCV 프로그래밍 Last Update: 2018/06/07 Visual C++ 영상처리프로그래밍 저자 황선규 / 공학박사 sunkyoo.hwang@gmail.com 모바일컴퓨터비전프로그래밍 목차 Android 개요 Android 개발환경구축 Android Studio 설치 OpenCV

More information

B _00_Ko_p1-p51.indd

B _00_Ko_p1-p51.indd KOS-V000 B64-797-00/00 (MV) KOS-V000 설명서를 보는 방법 이 설명서에서는 삽입된 그림을 통해 작동 방법을 설명합니다. 이 설명서에 나타낸 화면과 패널은 작동 방법을 자세히 설명하는 데 이용되는 예입니다. 따라서 실제 화면이나 패널과 다르거나 일부 디 스플레이 패턴이 다를 수도 있습니다. 찾기 모드 방송국 선택 설정. TUNER

More information

Microsoft PowerPoint - 15주차(최종).pptx

Microsoft PowerPoint - 15주차(최종).pptx 15주차 15주차. 통지, 통지 그리고 안드로이드 마켓 안 켓 학습 내용 1. 백그라운드 알림 2. 통지 출력 3. 커 커스텀 텀 통지 뷰 4. 안드로이드 마켓 백그라운드 알림 사용자와의 통신 - 프로그램의 상태나 특정 사건이 발생했음을 사용자에게 통지하고 다음 동작에 대한 질문을 하거나, 사용자에게 작업 지시를 받을 수 있는 기능이 필요함 - 활성화된 프로그램의

More information

Windows Server 2012

Windows Server  2012 Windows Server 2012 Shared Nothing Live Migration Shared Nothing Live Migration 은 SMB Live Migration 방식과다른점은 VM 데이터파일의위치입니다. Shared Nothing Live Migration 방식은 Hyper-V 호스트의로컬디스크에 VM 데이터파일이위치합니다. 반면에, SMB

More information

리니어레이아웃 - 2 -

리니어레이아웃 - 2 - 4 차시레이아웃 1 학습목표 레이아웃의개념을이해한다. 중복리니어레이아웃의개념이해한다. 2 확인해볼까? 3 레이아웃개념익히기 1) 학습하기 [ 그림 4-1] ViewGroup 클래스계층도 리니어레이아웃 - 2 - [ 예제 4-1]orientation 속성-horizontal 1

More information

Spring Boot

Spring Boot 스프링부트 (Spring Boot) 1. 스프링부트 (Spring Boot)... 2 1-1. Spring Boot 소개... 2 1-2. Spring Boot & Maven... 2 1-3. Spring Boot & Gradle... 3 1-4. Writing the code(spring Boot main)... 4 1-5. Writing the code(commandlinerunner)...

More information

CD-RW_Advanced.PDF

CD-RW_Advanced.PDF HP CD-Writer Program User Guide - - Ver. 2.0 HP CD-RW Adaptec Easy CD Creator Copier, Direct CD. HP CD-RW,. Easy CD Creator 3.5C, Direct CD 3.0., HP. HP CD-RW TEAM ( 02-3270-0803 ) < > 1. CD...3 CD...5

More information

B2B 매뉴얼

B2B 매뉴얼 오디오북 모바일앱 사용자 매뉴얼 (안드로이드) 오디언 도서관 안드로이드용 - 오디오북 모바일앱은 안드로이드 OS 버전 2.1 이상을 지원합니다. (대표 기종 : 갤럭시 S, 갤럭시 S II, 갤럭시탭, 모토로이, 넥서스원 등) - OS 버전은 홖경설정(설정) > 휴대폰정보 > 펌웨어버전(Android 버전)에서 확인하실 수 있습니다.. - 하위 버전의 OS는

More information