<4D F736F F D20BEC8B5E5B7CEC0CCB5E520BCBCB9CCB3AA>

Size: px
Start display at page:

Download "<4D F736F F D20BEC8B5E5B7CEC0CCB5E520BCBCB9CCB3AA>"

Transcription

1 제 2 회안드로이드세미나 2009 년 12 월 05 일토요일 주최 : 안드로이드사이드서강대게임교육원 후원 : 한국콘텐츠진흥원안드로이드퍼브 협찬 : 케이앤피북스출판사 ITC 출판사제이펍출판사

2

3 제 2 회안드로이드세미나 진행 : 한동호 ( 안드로이드사이드운영자 ) 1. 세미나소개 한동호 2. 안드로이드응용프로그램교육과정로드맵 최승관 3. 안드로이드의미래 이학준 4. 안드로이드에서의 OpenGL 최호생 5. 안드로이드앱과마켓 박성서 6. 안드로이드기초실습 김태호 7. 테트리스게임템플릿실습 권욱빈 8. 사용자가본스마트폰, 그리고안드로이드폰의가능성 문형철 9. 자유질문시간

4

5 세미나소개 한동호 강사소개한동호 nhn에내부플랫폼교육및큐브리드강의를담당. SCJP, 자바서적등을출간하였으며 Java Programming Language 4 th 등의원서번역. 현재안드로이드에많은관심을가지고있으며안드로이드정보공유커뮤니티인안드로이드사이드를운영하고있음.

6

7 안드로이드응용프로그램교육과정로드맵 최승관 강사소개최승관 현재서강대학교게임교육원게임소프트웨어개발학과세종대학교디지털콘텐츠학과 ( 박사수료 ) 호서대학교전자계산학과 ( 석사 ) 호서대학교전자계산학과 ( 학사 ) ( 주 ) 지디온서버프로그래머

8

9 Android d Curriculum Android Business Environment Android dodsystem Architecture tectue Android Curriculum

10 Open Handset Alliance Open Eco-System Open Service Open Network Open Device Open Application 상생과협력의정신으로생태계내의모든구성원들이유기적결합으로시너지를창출하여지속가능한성장을실현 Open Eco-System 어느파트에서개발할것인가? Open Service Open Network Open Application Open Device

11 Java C / C++ Applications Java Application Framework JNI(Java Native Interface) NDK C / C++ Libraries Linux Kernel Android Runtime Native Developer Kit

12 Java Applications Application Framework 1 그룹 : 응용프로그램개발중심 - Android Market을타깃으로 2 그룹 : Native Lib 형태의개발 - 게임엔진등의자체프레임워크 3 그룹 : 자체 OS 시스템개발중심 - 제조사 ( 핸드폰, IPTV 등 ) 중심으로 JNI(Java Native Interface) NDK C / C++ Libraries Linux Kernel Android Runtime Native Developer Kit 단지, 자바만배우면? 1 st Term 2 nd Term 3 rd Term 4 th Term Project 10w 4w 10w 4w 10w 4w 10w 26w C & C++ Grammar. Language 6 C & C++ 1 OOP Interface Programming. Multiple Inheritance & Mixin. Design Patterns. Template & STL Basic Windows Programming Concept of OS.(1) File System Programming.(1) Process & Thread System (2)Programming. MMS & Registery Computer Science Platform Linear algebra Vector & Matrix Vector space & transform 공간도형 (line, plane, sphere, box) Basic Dynamics 2 Data Structures Array & Linked List. Stack & Queue. Trees & Graph Hashing. 4 WIN32 1 Algorithms 1 Analysis of Algorithms. Sort Algorithms. Search Algorithms & Etc 1 System Progr.(I) () 1 1 DB Programming. 2 Network Prog. Software Engineering 1 MFC Programming System Progr. (II) Out Door System(Quad Tree) Terrain System. Out Door Items In-Door Systems (BSP, Oct Tree) Portal System. DLL COM Active-X Service Programming 2 Network Engine Prog. Network Programming 2 P2P Network System 3D Programming D3D API Initialization(2) Rendering Pipeline & Mesh Rendering(8) Lighting & Material & Texturing(4) 3D Data Export.(From 3D Studio Max)(4) Animation & Skinning.(6) Particle Programming.(4) Billboard & Transformed Vertex.(2) View-frustum Culling.(2) Collusions(4) Project 1 3DMathematics 1 3D Game Physics 1 6 3D Studio Max 3D API & 3D System Shader Programming & HLSL Skinning with Shader PPL(Per Pixel Lighting) Environment Mapping Light Mapping Normal Mapping Commercial Engine Programming (Render ware, XNA) 1 3D Engine Project 5 3D Game System 1 3D Rendering Tech I 5 3D Engine Prog. 1 3D Rendering Tech II Post Effect( Glow, DOF, and so on) Instancing. Fog & Light Gathering Etc P1 P2 P3 P4 Main Project Basic Software Engineering. Agile Process & XP Refactoring & TDD Network Engine System Thread-safe Programming Pool System Object Management System Executor System Socket Design & Implementation Acceptor System Packet Processing Group System UDP Programming Reliable UDP NAT System P 2P Framework Security of UDP Network Data Communicate Socket Accept /Connect Process Send/Receive process Disconnect Process Overlapped & IOCP 3D Application Framework Resource Management System Builder System Rendering System Scene System UI System Out Door System(Quad Tree) Terrain System. Out Door Items In-Door Systems (BSP, Oct Tree) Portal System. 2D Project Individual Project 3D Project Joint Team Project 3D Engine Project Joint Team Project Main Project Joint Team Project

13 프로그램교과과정의특징 다양한컴퓨터관련전문지식을수반하는교과과정이요구됨 - 운영체제, 데이터베이스, 이미지프로세스, 네트워크등 단계적프로그래밍스킬향상을위한교과과정이요구됨 - Java(C/C++), 자료구조, 고급 OOP, 디자인패턴등 이론적인학습과자가학습의노력이요구됨 - 숙달된코딩및다양한경험, 컴파일러사용법 ( 디버그 ) 등 Android Course 1 Android Course 2 Project Course 1 Project Course 2 1 Java 1 Advanced OOP Android Project Language 1 Multi-media 2 Android 2 Censors Computer Science 2 Data Structures 3 Algorithms 4 DB Programming. g 3 Network 4 Location Platform 5 System Progr 5 OpenGL(ES) Network Programming 6 Network Progr1. 6 Network Progr2. 3D Programming 1 3DMathematics 2 3D Game Physics Android 필수교과 Android 보조핵심교과 프로젝트에따른선택적분야 3D 프로그래밍을위한핵심교과

14 Android 필수교과 Java - Android 운영프로그램개발을위한필수교과 Android - Android SDK에서제공하는 API를이용한응용프로그램개발교과 - Activities, Services, Broadcast receivers, Content providers Android 보조핵심교과 컴퓨터관련교과들에대한이해가필요하며, 최소다음과같은교과들이선행혹은병행되어야함 Advanced OOP / Data Structure Algorithm / DB Programming System Programming / Network Programming 3D 게임프로그래밍을위한핵심교과 3D Mathematics - 행렬, 벡터, 삼각함수등 OpenGL(ES) - (3D Graphics) - Mesh, Light, Camera, Rendering Process 등 3D Game Physics - 유연한형태의고급게임프로그래밍을위해서는역학등의물리학은필수 프로젝트교과과정의도입 이론적수업의한계 ( 실무중심의실습적교과의필요성이대두 ) 프로젝트중심의교과과정이등장프로젝트구성및진행에따라학습성취도의차이가두드러짐

15 차세대게임교육기관지정사업 추진목표 산학체계 게임교육원외교육과정 Vision 실무형중심의전문개발자양성및안드로이드개발환경의저변확대 2010 년 2011 년 2012 년 추진목표 - 안드로이드기반결과물 10개이상개발 - 안드로이드 2D-Game엔진개발 - 안드로이드기반결과물 20개이상개발 - 안드로이드게임교육과정개발 - 안드로이드교육시스템안정화 - 안드로이드상용게임개발 추진전략 안드로이드게임개발을위한교육환경조성 주요항목 안드로이드교육과정표준화 프로젝트중심의교육과정 개발환경저변확대 시행사항 - 안드로이드교육기간내의기초안드로이드교육과정의표준화 - 안드로이드전문개발자들과의교류를통한안드로이드전문교육과정의개발 - 이론적강의를기반으로결과물산출이기본인실무중심의프로젝트교육 - 책임감및동기부여를위한소규모팀구성과프로젝트교육과정개설 - 기존안드로이드커뮤니티와의적극적인교류형성 - 온라인커뮤니티를보완하여오프라인커뮤니티의지원을통한전문인력의교류의장마련 - 실무개발자양성을위한공동세미나및스터디그룹육성

16 개발자저변확대기술인력지원원프로젝트지참여기관과의협력 Off-line 세미나 강사수급 서강대게임교육원 Android 정규과정 Study Group 심화학습단계전문가배출 게임업체 CJ, 이노디스 환경제공교육생지원공동개발 Online 커뮤니티안드로이드 핵심교육시스템 게임교육원외교육과정 안드로이드오프라인스터디커리큘럼운영 매주토요일정규교육과정외오프라인스터디운영 게임교육원학생및안드로이드관심개발자를대상으로운영 강의식수업을배제한스터디형식의프로젝트중심의교육과정운영 수준별스터디그룹조성을통한유연한교육과정운영 코스오픈시기교육내용정원 1 단계 안드로이드응용프로그램개발 15 2 단계 안드로이드응용프로그램개발 15 3 단계 안드로이드심화프로그램개발 15 안드로이드오프라인세미나운영 오프라인세미나진행을통한안드로이드개발환경의저변확대유도 다양한협의체들과의협력을통해안드로이드개발교육의허브센터역할

17 기술지인력안드로이드개발환경의저변확대 실무형중심의전문개발자양성 Off-line 세미나 지원강사수급 서강대게임교육원 Android 정규과정 환경제공 Study Group 산학협력업체 공동개발원심화학습단계전문가배출 교육생지원 Online 커뮤니티 프로젝트 Q&A

18

19 안드로이드의미래 이학준 강사소개이학준 현재 ( 주 ) 마크애니에서모바일보안솔루션을개발하고있으며 IT 이슈를다루는개인블로그인 " 학주니닷컴 을운영하고있음. 모바일솔루션및 UX, 서비스등에많은관심을갖고있으며특히스마트폰플랫폼에대해많은관심을갖고있음.

20

21 이학준학주니닷컴 (poem23.com) 운영자 구글이제작, 공개한오픈소스모바일운영체제 스마트폰용운영체제로공개되었으나다양한방면에서응용되고있음 리눅스커널기반의운영체제 자바기반의개발언어를제공이클립스등의공개 IDE를이용한개발환경제공 OHA(Open Handset Alliance) 를중심으로안드로이드확산을시도하는중 애플의앱스토어와같은안드로이드마켓이존재 2007년 11월 : 안드로이드 1.0 발표 2008 년 10 월 : htc 에서첫번째구글폰인 G1 출시 Motorola의 Droid에 Android 2.0이처음으로탑재 스마트폰이외에넷북등의 MID에개량되어탑재되고있음

22 Motorola의 Droid에최초탑재됨 SonyEricsson 의 Xperia X10 에탑재될예정 안드로이드 의특징 멀티터치지원 블루투스 지원 HTML5 정식지원 화면가상키보드성능향상 카메라지원기능향상 멀티미디어재생기능향상 많은제조사들이아이폰의대항마로안드로이드플랫폼을채택하고있음 가장나중에나온모바일플랫폼 ( 아이폰, 윈도모바일의장점을모두흡수 ) 완성도가높은 UI 솔루션탑재 라이선스에따라하드웨어에맞도록플랫폼커스터마이징이가능 오픈소스로개발에들어가는비용이절감됨 ( 아이폰 OS 는아이폰, 아이팟터치에만적용되고윈도모바일은유료라이선스를채택하고있음 ) 개발환경이접근하기쉬워다양한어플리케이션개발이가 능함 안드로이드마켓이라는오픈마켓이존재함

23 아이폰과윈도모바일을제치고스마트폰시장을선도할수있는플랫폼으로성장할가능성이매우큼 htc, 모토롤라, 델, 삼성, LG 등다양한제조사들이안드로이드탑재구글폰을출시하기시작함 오픈소스플랫폼의강점과강력한확장성등으로수많은제조사들의물량공세로성장가능성이매우큼 많은전문가들이 2012년이후에는아이폰보다더높은점유율을차지할것이라고예상하고있음 접근하기쉬운개발환경덕분에안드로이드용어플리케이션이안드로이드마켓에등록되기용이함 앱스토어이상의규모로성장할가능성이큼 MS의윈도모바일의점유율이점차적으로감소하는추세 상대적으로안드로이드에대한기대감이올라가고있음 스마트폰이외의다양한방면에서활용시도중 ( 넷북에서는안드로이드가적용된버전이출시되기시작했음 ) 향후다음의분야에서안드로이드가적용될가능성이큼 스마트북 : 오히려넷북보다더가능성이있어보임 ebook 리더 : 전자책표준포멧이외에다양한형식의문서를읽을수있게확장이용이함 PMP, 네비게이션 : 현재 WinCE가대세를이루지만안드로이드로충분히대체가가능함 그이외에, ATM 등의외부임베디드디바이스플랫폼등으로확장

24 구글이데스크탑디바이스 (PC, 노트북, 넷북등 ) 를대상으로만든웹기반의오픈소스 OS 리눅스커널에구글크롬웹브라우저를탑재한웹 OS 컨셉플랫폼 (MS 의가젤도같은컨셉 ) 웹어플리케이션, 클라우드컴퓨팅기반의솔루션구동을위한플랫폼 안드로이드는모바일기반의소형화디바이스및독립형임베디드디바이스에에적용될가능성이크기에직접적인충돌은적을것이라예상됨 ( 구글크롬 OS가스마트북으로진출할경우에는서로경쟁할가능성이있음 ) 2012년이후에는다양한제조사들의구글폰출시로아이폰, 윈도모바일보다더높은점유율을가져갈것 스마트폰이외에다양한분야에서안드로이드가활용될것이며모바일분야말고도독립형임베디드분야에서도두각을나타낼것 구글크롬 OS 와의경쟁은불가피하지만데스크탑플랫폼인크롬 OS와모바일플랫폼인안드로이드는서로경쟁하며발전할것 내년이후에는국내에서도다양한안드로이드탑재구글폰을구경할수있을것으로예상됨 ( 내년상반기에 htc의 Hero가나온다는소식이있음 )

25

26

27 안드로이드에서의 OpenGL 최호생 강사소개최호생 현재그림소프트대표현재서강대학교게임교육원전임강사한서대학교자문위원예원대학교산업체겸임교수주식회사단다소프트개발이사주식회사놀랑대표이사

28

29 안드로이드에서의 OpenGL 서강대학교게임교육원최호생 OpenGL ES 의소개 * OpenGL ES 는데스크탑및워크스테이션에사용되는업계표준의 2D/3D 그래픽 API인 OpenGL의서브셋으로임베디드 (Embedded) 장비를위한간단하고효율적인그래픽 API *OpenGL13 스펙을기준으로개발됨 * OpenGL 1.3 스펙을기준으로개발됨 SIGGRAPH 2003 에서 OpenGL ES(Embedded Systems) 1.0 스펙발표

30 Embedded System 특정한제품이나솔루션에서주어진작업을수행할수있도록추가로탑재되는시스템 그래픽소프트웨어에대한수요와기회가점점커져가는가운데, 3D 그래픽에대한수요는거의모든영역에서일어나고있다. 특히모바일단말기상에서의 3D 게임을위한하드웨어 IP화가급속히진행되어 2004 년에는상당수의휴대단말기에탑재될것으로전망된다 * 소형화, 경량화 => 저사양현재보다향상된그래픽을요구하는애플리케이션들의기반이되는 Lowlevel 단상의적합한그래픽 API 가부재한상황으로이는마치 Direct3D 나 OpenGL 이없는데스크탑윈도우즈와도같은현실이다. 그렇다고기존의 OpenGL을사용하기에는너무큰사이즈가문제가되며, Direct3D를채용하기에는플랫폼종속적인성격이문제가된다. 이에따라사이즈가작고플랫폼독립적인 Low-level단의그래픽 API의필요성이대두된다. OpenGL ES 의필요성 스크린사이즈반비례의법칙 스크린사이즈가작아질수록보다향상된그래픽처리성능을요구한다. 제한된스크린환경에서가장효율적인픽셀당그래픽처리능력을요구하며, 최신 API 에의해정의된보다진보된그래픽기술을요구한다. 안티알리아싱 (Anti-aliasing), i 다단계 UI 구성 (Multi-level l l compositing), 다양한미디어표시 (Rich media), 3D 등이그예라할수있다. * 일반적인 API 들의무거운비용 * 호환성유지 * 크로스플랫폼을위한 API 에대한요구 현재휴대단말기에는여러개의메이저급모바일및임베디드플랫폼들이존재한다. 따라서이들의다양한플랫폼상에서플랫폼에구애됨이없이어디에서나각종 3D 그래픽및게임등을제공할수있도록해주는표준 3D 그래픽 API가요구되어지고있다

31 OpenGL ES 의장점 * 산업로열티 free * 적은메모리 & 저전력소비 * 확장성및발전가능성 * 용이한사용성 * 풍부한문서자료 OpenGL ES 의구조 임베디드장비의 3D 구현을목적으로하드웨어위에임베디장비의구현을목적로하웨어위에소프트웨어접근가능한 3 개의층을가짐

32 OpenGL ES 의구조 OpenGL ES Profile 은 Common Profile 과 Critical Safety Profile로나뉨 OpenGL-ES 의스펙은몇개의프로파일로구성된정의를포함하며, 각프로파일은 OpenGL-ES 에특화된몇몇추가 Extension 이추가된 OpenGL 1.3 의서브셋이다. 프로파일정의는 OpenGL 1.3 스펙과호환되며, 기능성에있어서는향후시장의요구나플랫폼의수용성에따라서추가될수있도록제외되어있다. 현재스펙은 OpenGL 1.3의 Subset으로 OpenGL의장점은유지하고, 모바일환경에요구되는기능만을제공하며, 중복성과고비용을회피하며사용되지않는기능은제거한간소화된 3D 규격인 Common Profile과 Common-Lite Profile 의두가지 Profile 형태를지원한다. Command profile과더작은메모리가할당된플랫폼을위한 Command-Lite profile은 Core Addition과 Extension을통해더많은기능을추가적으로제공할수있도록구성되어있다. - Common Profile : PDA, STB나키오스크같은같은광범위한디바이스에사용 - Common-Lite : 핸드셋과같은최소화된모바일디바이스에사용 Common Profile * 휴대폰, PDA, 게임기와같은가정시장이타겟 * 텍스쳐매핑을포함한최대한의기능지원 * float, short, byte만사용가능

33 Common Lite * 좀더용량이작은휴대기기에서도사용가능 * floating point로표현되던것을전부 fixed point로변환 Critical Safety Profile * 신뢰성, 보증성이요구되는장비를타겟신뢰성, 증성이구되는장비를타겟 * 쉽게안정성을보장할수있는최소한의 3D 기능 * 항공및자동차디스플레이에사용

34 OpenGL ES 의발전단계 * 1.0 OpenGL 1.3 기반소프트웨어실행가능에중점 * 1.1(2003) OpenGL 1.5기반 API 의하드웨어가속화지원가능전력소모줄임자동 mipmap, 강화된텍스쳐프로세싱지원 OpenGL 1.3 기반소프트웨어실행가능에중점 * 1.2 & 2.0(2005) 2005년현재스펙나옴 OpenGL ES 1.x 와 2.x 1.x 는고정소수점을사용하는모바일 3D 가속칩을타겟으로발전 2.x 는현재발전하고있는프로그래밍가능한 3D 파이프라인지원

35 OpenGL ES Roadmap OpenGL ES 의변경점 기본적으로는크게변하지않음. Display list 사용불가 Approximating curve( 근사치커브 ) 와 surface geometry 에관한 pipeline 제거 GLError 지원 GLBegin, GLEnd구조삭제 float, short, byte 자료형만사용가능.

36 OpenGL ES 의변경점 Transform 은 double 사용하는것만제거 Clipping 사용가능 Coloring 기능다수사용가능 그외기타무겁거나자주쓰이지않는명령어삭제 OpenGL ES 의변경점 Antialiasing 지원 Point 관련명령지원 Line Stipple 삭제, 나머지명령은지원 aliase & antialiased line 지원 Quad Polygon 명령삭제 Quad, Polygon 명령삭제 Triangle 로대체

37 OpenGL ES 의중요특징 중복된 API 의삭제 OpenGL은많은다른함수들을포함한형태 OpenGL ES 는많은변수들을제거했다 더작은 data type 을지원저장공간과 embedded 장치에서 bandwidth의제한을인식하는 OpenGL ES 는 OpenGL 1.3 에서지원하는것보다더작은 data type을받아들이는여러새로운 API 를정의한다 OpenGL ES 의중요특징 고정소수점연산을지원하는새로운 API * 부동소수점 (Floating Point) 연산 : 일반적으로사용하는가변소수점연산표현범위 * 좀더큰숫자의연산가능 float, double 이해당됨 * 7000 => 0.7e+4, 0.07 => 0.7e-1 * 좀더정확한연산가능 * 소비전력이많다 * 비싸다, 느리다

38 OpenGL ES 의중요특징 고정소수점연산을지원하는새로운 API * 정수형을이용한소수점연산 7000 => 7000, => * FPU 유닛이없는 CPU에적합 * 숫자의크기에한계있음 * 보통 16bit:16bit 의 int형을사용 * 형변환시에오버플로우, 언더플로우, 유효숫자상실에주의 * 소비전력낮음, 저렴함, 조금더빠름 OpenGL ES 의중요특징 Geometry Specification * immediate mode 지원안함 glbegin(gl_triangles); glvertex3f(-2.0, 0.5, 0.0); glvertex3f(0.0, 0 4.0, -2.0); glvertex3f(1.5, 2.5, -0.5); glend(); * vertex array mechanism 만지원 GLfl i [] { } GLfloat vertices[] = {-2.0, 0.5, 0.0, 0.0, 4.0, -2.0, 1.5, 2.5, -0.5}; glvertexpointer(3, GL_FLOAT, 0, vertices); gldrawarrays(gl_triangles, 0, 3);

39 OpenGL ES 의중요특징 Transformation 변환은근본적인부분이므로제거거의없으나고정소수점파라미터지원 Materials와 Lighting * 빛과관련된대부분의기능은계속유지 * OpenGL에서처럼적어도 8개의빛을지원 * material 는지원되고있으나, polygon 의앞면과뒷면에분리된 material을가지는것은불가능 * Color Material 관련 API 삭제 * glshademodel() 은수정없이유지 OpenGL ES 의중요특징 점, 선, 면 * 점, 선은두께를 1로제한하여지원 * 면은 fill mode에서만렌더링지원 Clippingi 과 Culling 렌더링의필수적인요소로거의지원하나사용자정의 Clip planes 는지원안함 Texturing 어떤기능은완전제거되었고, 모든남은기능은제한을둠 2D texture만지원다중텍스쳐링지원 Image type 종류제한 Filter는모두지원 Compressed Texture 지원

40 OpenGL ES 의중요특징 Imaging 거의모든이미지화 API가제거됨다른쓸곳이있는 PixelStore명령만유지나머지 pixel 관련명령어는모두삭제 Bitmap 지원안함 DrawPixel명령이없으므로불가 FOG 무겁고타기능으로도구현이가능하지만여러곳에편리하게쓰일수있음. 대부분의기능지원 OpenGL ES 의중요특징 Per Fragment Operations(pixels) Dithering 가능 Read Buffer 삭제 CopyPixels 삭제 ReadPixels는제한적으로사용가능 Special Functions Select & Feedback mode 삭제 Display List 삭제

41 OpenGL ES 의중요특징 Finish & Flush 화면강제전환에자주쓰이므로포함 Hints speed 와 quality 에대한 trade off 에필요하므로포함 State Query 에대한 state 반환함. 없어진기능에대한 state삭제자주쓰지않는기능에대한 state삭제 EGL (Embedded System Graphic Library) EGL 이란 OpenGL 과기본적인특정플랫폼윈도우시스템사이의인터페이스를함 Microsoft Windows(WGL), UNIX(GLX) 등과같은개념

42 EGL의역할 * OpenGL ES graphics pipeline 의상태는 EGL 이유지하는 context 에저장 * Frame buffer 와다른 drawing surfaces 는 EGL API 를사용함으로써창조되고, 관리되고, 파괴된다 * device displays 와 device 의가능한 rendering 환경에접근할수있도록조절하고제공 EGL 설정순서 * Get the main native display * Initialize EGL * Choose an EGL configuration * Create an EGL window surface * Create an EGL graphics context

43 Java 와의연동 *Java 를포함한각언어는 OpenGL ES 언어바인딩존재 * 자바언어바인딩은 JSR(Java Specification Request) 239 에서정의 ( 안드로이드는 JSR 구현 ) * 다음사항을 java 소스파일에포함하여개발 Import javax.microedition.khronos.egl.egl10; Import javax.microedition.khronos.egl.egl11; Import javax,microedition.khronos.egl.eglconfig; Import javax,microedition.khronos.egl.eglcontext; Import javax,microedition.khronos.egl.egldisplay; egl Import javax,microedition.khronos.egl.eglsurface; Import javax.microedition.khronos.opengles.gl10; Import android.opengl.glu; 안드로이드에서개발시유의점 * EGL 사용한 OpenGL ES 구동 * 안드로이드 2D 라이브러리사용시화면갱신위해뷰의 OnDraw() 메소드를호출하는것과달리그리는스레드직접구현해야함 * SurfaceView 를 OpenGL 을사용하는모든뷰로확장해서사용 * OpenGL Surface 가생성되면그리기를담당할새로운 Thread시작, Surface가제거지면 Thread 종료 * Material 을안드로이드형식에서 OpenGL 형식으로변환

44 안드로이드에서개발시유의점 * Camera 수고하셨습니다

45

46 안드로이드앱과마켓 박성서 강사소개박성서 안드로이드퍼브 (androidpub) 커뮤니티운영자회색의구글안드로이드개발블로그운영 Google Android Developers Challenge 1 Top 50 입상 Google Android Developers Challenge 2 Top 200

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

72

73

74

75

76 안드로이드기초실습 김태호 강사소개김태호 커니의안드로이드이야기 (androidhuman.tistory.com) 운영중 안드로이드를접한지는얼마되지않았지만, 자료가부족해서안드로이드를처음배울때느꼈던절망감 (?) 을다른사람들이또다시느끼게해서는안된다는각오로블로그에공부한내용들을강좌형식으로정리하여, 더많은사람들에게 " 안드로이드이야기 " 를들려줄수있도록노력하고있습니다

77

78 제 2 회안드로이드세미나 _ TRACK B 안드로이드어플리케이션기초실습 김태호 ( 커니의안드로이드이야기 ) Contents Android Fundamentals - 안드로이드어플리케이션의구성요소 - 액티비티의생애주기 (Activity Lifecycle) Exercises - 새프로젝트생성 / 생성파일분석 - Layout 파일을이용한액티비티화면구성 - Java Code를이용한액티비티화면구성 - 새로운액티비티생성하기 - 인텐트를이용하여액티비티호출하기 Android Fundamentals : 안드로이드어플리케이션의구성요소 안드로이드어플리케이션을만들기전에안드로이드어플리케이션은과연어떤구조를가지고있을까? 에대해서알아보도록하겠습니다. 안드로이드어플리케이션이어떤구조를가지고있는지알고있어야만앞으로진행할강좌도무리없이소화할수있고, 무엇보다도처음부터어느정도의기본바탕을잡고공부를하면앞으로배우는것들을이해하는속도도빠르고, 좀더머릿속에체계적으로정리할수있기때문에좀지루한감이있더라도잘읽고이해하도록해주세요. 가능하다면그냥외우세요! 정말중요한겁니다!!

79 안드로이드어플리케이션의구성요소는다음과같이사용자가직접눈으로보며상호작용을하는컴포넌트 ( 액티비티, 알림 ;Notification) 와사용자의눈으로볼수없거나백그라운드에서실행되는컴포넌트 ( 컨텐트프로바이더, 서비스, 브로드캐스트리시버 ) 로나눌수있습니다. 사실인텐트 (Intent) 와 Notificat ion 은어플리케이션컴포넌트라고할수없지만, 각컴포넌트들과깊은연관을가지고있기에여기에서함께다뤄보도록하겠습니다. 어플리케이션을구성하는컴포넌트는액티비티, 컨텐트프로바이더 (Content Provider), 서비스 (Service), Broadcast Receiver 가있습니다. 어플리케이션은이들컴포넌트중여러컴포넌트로구성되며, 각구성요소를사용하기위해서는각구성요소를호출해야하는데, 이를위해인텐트 (Intent) 를사용합니다. 인텐트도어플리케이션내에포함되는것이아니냐? 할수도있지만, 엄연히따지면 " 인텐트 " 자체는어플리케이션컴포넌트들을호출해주는역할을할뿐, 어플리케이션내에존재한다고보기는어렵습니다. 하지만, 각컴포넌트가호출될수있는조건을담고있는인텐트필터 (Intent-Filter) 는해당각컴포넌트내에존재합니다. 이글에서는어플리케이션의 ' 얼굴 ' 역할을하는액티비티에대해자세히알아보도록하겠습니다. 액티비티 (Activity) 는어플리케이션의 " 한화면 " 을뜻합니다, 전화번호부어플리케이션을예로들자면전화번호부를조회하는화면, 전화번호를새로추가하는화면, 입력된데이터를수정하는화면등등이하나의액티비티가됩니다.

80 전화번호부조회화면전화부편집화면전화부선택화면 액티비티는어플리케이션컴포넌트중가장중요한역할, 사용자의입력을받고사용자에게그결과를보여주는등실질적으로사용자와상호작용을하는역할을맡고있습니다. 따라서, 액티비티구성은어플리케이션개발에서가장신경써야할부분이기도합니다. 기본적으로안드로이드가휴대용기기에서돌아가는것을목적으로하는플랫폼이다보니, PC 와비교해메모리가부족할수밖에없습니다. 그러다보니, 한번에여러가지의작업을하다가메모리가부족해지면우선순위가낮은작업은메모리를반환하여다른작업을수행할수있도록합니다. 메모리관리를위해액티비티는액티비티생애주기 (Activity Lifecycle) 에따라사용자와상호작용을하지않는액티비티를비활성화시키거나종료시킬수있습니다. 이러한특성때문에액티비티를구성할때각액티비티의상태변화에따라적절한처리를해주는것이중요합니다. 서비스 (Service) 는화면에표시되며사용자와직접상호작용을하는액티비티와는달리, 화면에표시되지않고백그라운드에서실행되는컴포넌트입니다. 앞서언급했듯이, 액티비티는액티비티생애주기에의해사용자와상호작용을하지않는액티비티는비활성화되거나소멸될수있습니다. 예를들면, 음악을재생하는어플리케이션에서음악재생을담당하는부분이액티비티에구현되어있다면액티비티가화면에서없어짐과동시에해당액티비티는더이상사용자와상호작용을하지못하므로액티비티생애주기에따라비활성화상태 (Inactive) 가되므로음악재생이중지됩니다.

81 음악을재생하는어플리케이션은해당어플리케이션이화면에표시되고있지않을때, 즉사용자와상호작용을하지않고있더라도백그라운드에서계속음악을재생할수있어야합니다. 따라서, 일반적으로음악재생어플리케이션에서음악을재생하는부분은서비스부분에구현하여사용자와상호작용이중단되더라도지속적으로음악을재생할수있게합니다. 컨텐트프로바이더 (Content Provider) 는어플리케이션내의데이터 ( 전화번호부, 메모등..) 를다른어플리케이션과공유할수있도록해줍니다. 어플리케이션내의데이터들은기본적으로해당어플리케이션에서만접근할수있고, 다른어플리케이션은접근할수없습니다. 그래서특정어플리케이션내의데이터 ( 예 : 전화번호부데이터 ) 에다른어플리케이션에서도접근할수있게하려면컨텐트프로바이더를정의하여다른어플리케이션에서해당데이터에접근할수있는범위, 방식등을정의해주어야합니다. 즉, 컨텐트프로바이더가어플리케이션의데이터에접근하는통로가되는셈이죠. 일반적으로컨텐트프로바이더를이용하여데이터를공유할어플리케이션에서공유를하고싶은데이터만을선택하여공유를할수있도록지정하게됩니다. 이과정에서해당컨텐트프로바이더로접근할수있는고유의주소를정의하게되며, 컨텐트리졸버 (Content Resolver) 에이주소를넘겨서공유된데이터에접근할수있습니다.

82 컨텐트프로바이더는마치싸이월드미니홈피와비슷하다고할수있습니다. 요즘은사진등을올릴때최소일촌공개로사진을올리는경우가많습니다. 물론일촌공개인사진외에자신만볼수있는비공개사진들도있겠구요. 즉, 일촌공개도결국은비공개인사진중일부를볼수있도록공개해주는것이라볼수있습니다. 이와같이컨텐트프로바이더도어플리케이션의데이터에접근할수있는중재자역할을하며, 그범위까지지정해주는역할을수행합니다. 브로드캐스트리시버 (Broadcast Receiver) 는주로시스템의상태에관련된메시지 ( 배터리부족, 언어변경됨등..) 혹은어플리케이션의메시지 ( 파일다운로드완료등..) 에응답하는역할을합니다. 브로드캐스트리시버는해당이벤트가발생하였을경우그를잡아내는능력만있을뿐, 이를사용자에게알릴방법은없습니다. 때문에, 사용자에게해당이벤트를알리기위해알림 (Notification) 혹은토스트 (Toast) 을사용합니다. 알림 (Notification) 은 NotificationManager 를통해상태표시줄및 Notification Panel 을통해알림메시지를띄워주거나, LED 를점멸시키거나, 진동발생혹은벨소리를울리게하여사용자에게해당이벤트를알립니다. 이러한알림 (Notification) 은문문자메시지도착, 다운로드완료등을사용자에게알리는데사용됩니다.

83 토스트 (Toast) 는 Notification 과달리간단한내용을사용자에게알리기위해사용합니다. 특별한기능없이단지메시지를화면에잠깐띄워주고, 곧사라집니다. 마지막으로, 인텐트 (Intent) 에대해알아보도록하겠습니다. 인텐트 (Intent) 는어플리케이션의컴포넌트, 구체적으로말하자면액티비티, 서비스, 브로드캐스트리시버를호출하거나해당컴포넌트를호출함과동시에필요한데이터를전달해주는역할을합니다. 일종의 " 전달매체 " 라고하면적절하겠네요. 인텐트내부에는대상컴포넌트에대한정보가담겨있습니다. 인텐트는담고있는정보의유형에따라명시적인텐트 (Explicit Intent) 와암시적인텐트 (Explicit Intent) 로나뉩니다. 명시적인텐트 (Explicit Intent) 는호출하거나데이터를전달한컴포넌트가정확히명시되어있는인텐트입니다. 대상컴포넌트가명확할경우컴포넌트의이름을인텐트에넣어주면인텐트에의해해당컴포넌트가호출되거나해당컴포넌트에데이터가전달되게됩니다. 정확한주소가나와있군요!

84 암시적인텐트 (Implicit Intent) 는호출하거나데이터를전달할컴포넌트를정확히명시하지않고, 대상컴포넌트의특징들만나열한인텐트입니다. 예를들면, 메모를수정하는인텐트에는메모를수정하는기능을가진컴포넌트의이름이아닌 [ 메모를수정할수있는기능 ] 이들어가게됩니다. 목적지의특성이나열되어있군요 -_-^ 이러한암시적인텐트를처리하려면각컴포넌트에해당컴포넌트가처리할수있는작업을명시해주어야호출대상컴포넌트가인텐트를받아호출될수있습니다. 이렇게인텐트를해석하여적절한컴포넌트를찾는과정을인텐트해석 (Intent resolving) 이라합니다. 인텐트해석 (Intent resolving) 에필요한정보는메니페스트파일인 AndroidManifest.xml 의각컴포넌트태그내의인텐트필터 (Intent-filter) 내에명시되며, 이곳에는각컴포넌트가처리할수있는작업의유형뿐만아니라해당컴포넌트에서처리할수있는데이터의유형까지명시되어있습니다. Android Fundamentals : 액티비티생애주기 (Activity Lifecycle) 안드로이드는모바일기기에서구동되는것을목적으로하고있기에 PC 에서구동되는프로그램들에비해더효율적인메모리관리가필요합니다. 안드로이드어플리케이션을구성하는구성요소중하나인액티비티 (Activity) 도효율적인메모리관리를위해액티비티가생성되고소멸되는조건인생애주기 (Lifecycle) 을가지고있습니다. 액티비티뿐만아니라브로드캐스트리시버 (Broadcast Receiver), 서비스 (Service) 도일정한생애주기를갖고있지만, 가장자주쓰이는구성요소인액티비티의생애주기부터알아보도록하겠습니다. 액티비티의상태는크게활성 (Active), 일시정지 (Paused), 정지 (Stopped) 이 3가지로나눌수있으며, 각상태에해당하는생애주기들이존재합니다. 우선, 액티비티의상태에대해알아보도록하겠습니다. 활성 (Active) 현재화면에액티비티가표시되는상태이며, 사용자와상호작용 ( 버튼을누르거나글자를입력하는등..) 을할수있는상태를말합니다. 일반적으로액티비티가화면에표시되고있을때액티비티는활성상태입니다.

85 액티비티내의 EditText 위젯에텍스트를입력하는등, 사용자와상호작용이가능합니다. 일시정지 (Paused) 화면에서액티비티가보이지만, 사용자와상호작용은할수없는상태입니다. 즉, 배경이투명한액티비티나화면전체를가리지않는다른액티비티에의해액티비티의일부가가려진경우가해당됩니다. 다이얼로그또한액티비티의일부를가리지만, 다이얼로는액티비티의일부이기때문에이때에는일시정지상태로바뀌지않습니다. 다이얼로그가화면을가린경우에는 Paused 상태가되지않습니다. 배경이투명한액티비티가화면을가린경우가려진액티비티는 Paused 상태가됩니다.

86 정지 (Stopped) 다른액티비티에의해완전히가려진상태입니다. 액티비티 A 가액티비티티 B 를호출해서액티비티 B가화면에표시된경우, 액티비티 A 의모습은화면에서더이상보이지않게되겠지요? 따라서액티비티티 A는정지상태가됩니다. 액티비티의상태는위와같이크게 3 가지로나뉘지만, 안을살펴보면아래와같이 7 개의상태로나눠지게됩니다. 아래의메소드들이호출됨에따라액티비티의상태들이바뀌게되며, 액티비티를구현할때해당메소드를오버라이드한후각상태에따라처리해줄작업을지정해주면됩니다. void oncreate(bundle savedinstancestate) void onstart() void onrestart() void onresume() void onpause() void onstop() void ondestroy()

87 액티비티생애주기 (Activity Lifecycle) 위메소드들의이름을통해 oncreate, onstart.. 등이메소드들이호출되는조건들을어렴풋이짐작할수있습니다. 하지만어렴풋이아는것만으로는안되겠죠? 액티비티는액티비티의생애주기에따라상태가변하게되는데, 액티비티의상태를변화시키기위해각상태에해당하는메소드가호출됩니다. 따라서, 어플리케이션을작성할때액티비티의생애주기에따라알맞는작업을처리해주기위해각상태에해당하는메소드를오버라이드하여처리할작업을넣어주게됩니다. 예를들면, 데이터베이스를사용하는어플리케이션에서는메인액티비티가실행될때데이터베이스를열고

88 사용할준비를해야합니다. 그리고, 데이터베이스를사용하는액티비티가소멸될때에는사용하던데이터베이스를닫아줘야합니다. 만약이러한작업을적절히처리해주지않으면데이터베이스를닫아주지않아에러가발생하는등여러가지문제가생길것입니다. 그럼, 액티비티의생애주기내에서액티비티의상태가어떻게변하는지, 어떤메소드가호출되면액티비티의상태가변하게되는지알아보도록합시다. 액티비티의시작액티비티를처음시작하려면, 액티비티를만들어줘야겠지요? 객체를사용하려면객체의생성자를이용하여새로운인스턴스를만들어주듯이, 액티비티또한이러한과정이필요합니다. 액티비티의생성은 oncreate(bundle savedinstancestate) 메소드가호출을통해이루어집니다. 액티비티가생성되니까 oncreate() 메소드가호출되는것은알겠는데, 인자로받는 savedinstancestate 는뭔지잘모르겠다구요? - 요놈은잠시후에설명할테니, 궁금해도조금만참아주세요. ^^; oncreate() 메소드에서는액티비티의 " 초기화 " 를담당하는코드들을처리해줍니다. 액티비티에서는기본적으로각종버튼이나리스트, 체크박스, 입력표시줄 (EditText) 위젯들이배치되어있는레이아웃을구성하므로, 그러한위젯들이사용자와상호작용을할수있도록해주는코드들을담고있어야합니다. 예를들면, 버튼을누르면다른액티비티가뜨게하거나, 아니면입력표시줄 (EditText) 에서받은데이터를처리하는것등이될수있겠죠. oncreate() 메소드를통해액티비티를시작하기위한준비를모두끝마쳤다면, 액티비티를시작해야겠지요? 액티비티의시작은 onstart() 메소드를통해이루어집니다. 하지만, 이상태는완전히액티비티가시작된상태가아니라액티비티가화면에표시되기 " 직전 " 의상태입니다. 이어서 onresume() 메소드가호출되면액티비티가화면에표시되고, 사용자와상호작용을하기직전의상태가됩니다. 액티비티가생성된후바로액티비티를실행하면간단할것같은데, 왜굳이복잡하게 onstart() 와 onresume() 으로나누었을까요? onstart() 와 onresume() 의비교

89 액티비티생애주기그림을다시보도록하죠. onstart() 와 onresume() 의위치가다른것을볼수있습니다. onstart() 는액티비티가실행되다가다른액티비티가화면에표시되어정지상태가되면서 onstop() 이호출되었다가, 메모리에서사라지기전에다시정지되었던액티비티가호출되어 onrestart() 를거쳐오거나, 혹은메모리가부족하여프로세스가종료되었다가다시액티비티를생성하고, (oncreate() 호출 ) 액티비티를화면에표시하면서 onstart() 를호출하게됩니다. 즉, onstart() 에서는정지 (Stopped) 상태에서액티비티가복귀될때호출된다고할수있습니다. 이는한마디로액티비티가화면에서보이지않다가다시나타나는것을의미합니다. 반면, onresume() 은액티비티가일시정지 (Paused) 상태에서복귀될때호출됩니다. 즉, 이는액티비티가사용자와상호작용을하지못하다가다시상호작용을할수있게되는것을의미합니다. 이렇게, 액티비티가대기상태에있다가복귀되는시점및복귀되는기능이다르기때문에 onstart() 와 onresume() 처럼시작과정이복잡하게나누어져있는것입니다. 액티비티의정지 / 일시정지액티비티가화면에표시되고, 사용자와상호작용을할수있는활성 (Active) 상태에서다른액티비티에의해가려지거나, 화면에서사라지게되면그액티비티는정지 (Stopped) 상태가됩니다. onstop() 메소드가호출되면해당액티비티는정지상태가며, 이곳에서부터액티비티의운명은갈리게됩니다.

90 일반적으로정지된액티비티는사용자가다시사용할것을대비하여메모리서바로사라지지않고올라가있다가메모리가부족하게되면메모리확보를위해강제로종료되게되죠. 그후, 사용자가다시그액티비티를실행시키게되면다시액티비티를생성한후 (oncreate() ) 액티비티를실행시키게됩니다. 반면에, 메모리부족등이발생하지않아액티비티가대기상태로메모리에올려져있을때다시그액티비티를호출하게되면액티비티를다시만들필요없이다시화면에표시하면 (onrestart()) 되므로, 액티비티를다시시작하기만하면됩니다. 액티비티가일시정지 (Paused) 되는것은액티비티가화면에는표시되고있지만, 사용자와상호작용을하지않아서입니다. 일시정지상태에는이것외에도중요한것이하나더있습니다. 위의생애주기에서도확인할수있듯이, 일시정지상태에서도메모리가부족하면액티비티가종료될수있습니다. 일시정지상태에서는대부분사용자가어떤내용을입력하고있는등, " 어떠한작업이진행중 " 일가능성이높습니다. 그런데, 메모리가부족해액티비티를종료시키게된다면사용자가입력했던데이터들 ( 예 : 작성중이던메시지등..) 이손실됩니다. 이를방지하기위해메모리부족등으로 " 어쩔수없이 " 액티비티를종료해야하는경우 onsaveinsstancestate() 메소드가호출되며액티비티의상태를 Bundle 형태로저장하게됩니다. 따라서, onsavedinstancestate() 메소드는항상호출되지않으며, 만약호출된다면프로세스가종료되기전, onpause() 이후혹은 onstop() 이후에호출될수있습니다. onsaveinstancestate() 메소드를통해저장된상태는 Bundle 객체형태로저장되어있다가, 나중에해당액티비티를다시실행할때 oncreate() 메소드및 onrestoreinstancestate() 메소드에서액티비티가강제로종료될때의상태로액티비티를복원하게됩니다. oncreate() 메소드와 onrestoreinstancestate() 모두 Bundle 객체를인자로받고있으며, 실제로액티비티가강제종료될때저장된상태정보가담겨있는 Bundle 객체의정보를동일하게전달받게됩니다. 따라서액티비티상태의복구는두메소드모두에서처리해줄수있으며, 상황에따라적합한메소드에서상태를복원해주는코드를넣어주면됩니다. onrestoreinstancestate() 메소드역시항상호출되는메소드는아니며, 호출된다면 oncreate() 메소드이후에호출되게됩니다. 즉, 위의두메소드는액티비티가 " 강제로 " 종료되었을때혹은그후액티비티를다시실행시킬때만실행되므로, 만약액티비티가시작하고나종료될때해주어야할작업이있다면저두메소드를오버라이드하는대신 oncreate(), onstop() 및 ondestroy() 메소드를오버라이드한후그안에코드를구현해야안정적으로해당작업을처리해줄수있습니다. 아래에액티비티생애주기를구성하는주요메소드의역할을간단히정리해보았습니다.

91 Exercises : 새안드로이드프로젝트생성 안드로이드 SDK 도설치하고, 이클립스도설치하고,ADT 까지다설치했다면? -> 이제본격적으로개발에들어가는것만남았겠죠? 이글에서는최근출시된안드로이드 SDK 2.0 과이클립스용안드로이드개발플러그인인 ADT 버전을기준으로하여새로운프로젝트를만드는과정에대해알아보도록하겠습니다. 자, 우선새로운프로젝트를생성하려면... 이클립스부터켜야겠지요? (...) 이클립스를켠후, New Android Project 버튼을누릅니다.

92 새로운프로젝트를생성하는창이나오면, 내용들을하나하나씩 (?) 입력해주면됩니다. 그리어려운내용이아니니... 하나하나보도록하죠. Project Name : 이름그대로프로젝트이름을입력해주시면됩니다. Build Target : 해당프로젝트에서사용할 SDK 의버전을지정합니다. 좀더정확히말하면 AVD(Android Virtual Device) 의버전을선택하는것입니다. Android 1.5/1.6 은해당버전의시스템이미지를의미하고, Google APIs 는해당버전의시스템이미지에 Google maps 가포함되어있음을뜻합니다. Application name : 어플리케이션이름을지정합니다. Package name : 패키지명을지정합니다. 패키지명을짓는원리에대해서는 2009/01/12 - [ 프로그래밍이야기 / 끄적끄적 ] - 자바 패키지이름을짓는원리?? 를참고하세요.

93 Create Activity : 체크표시를한후, 액티비티명을입력하면프로젝트생성과동시에액티비티가만들어집니다. Min SDK Version : 프로젝트의최소 SDK 요구버전입니다. SDK 의업데이트가계속되고있으므로, 최신기술을사용하는경우구버전의시스템이미지에서는정상적으로동작을보장하지않기에이곳에최소버전을명시하여야합니다. 이정보는 Target 을설정하게되면자동으로입력됩니다. 모든정보를입력한후, Finish 버튼을누르면프로젝트가생성됩니다. 프로젝트생성과동시에같이생성된파일들은다음과같습니다. 위에서생성된파일들을크게구분한다면소스파일과리소스파일로구분할수있습니다. 소스파일은우리가실제로어플리케이션에서행해야할동작들을명시하게되고, 리소스파일들은여러가지데이터 ( 그림, 음악, 레이아웃, 문자열등등...) 의데이터를가지고있습니다. 하나의어플리케이션을만드려면이두가지가적절히조합되어야하죠.

94 Exercises : 프로젝트생성파일분석 새프로젝트를생성하게되면, 위와같은폴더와파일들이생성됩니다. 폴더는 src, gen, assets, res 로나누어지고, 그외에어플리케이션에대한전반적인정보를담고있는 AndroidManifest.xml 파일및안드로이드라이브러리를볼수있습니다. 안드로이드어플리케이션을이론적관점에서보면액티비티, 서비스, 컨텐트프로바이더, Broadcast Receiver 로나눠지지만, 실제개발환경관점에서보면크게 [( 자바 ) 소스코드 ], [ 리소스 ], [ 메니페스트 ] 로나눌수있습니다. 개발환경관점에서본안드로이드어플리케이션의구조

95 위의그림에서는리소스에 drawable, layout, values, assets 만표시하였지만, 실제로안드로이드어플리케이션에서사용할수있는리소스의종류는이보다더많습니다. SDK 폴더의예제에포함된안에있는 ApiDemos 어플리케이션의리소스구조만봐도알수있죠. 엄청복잡합니다. -ㅁ-... 한눈에봐도복잡하기만한 ApiDemos 의폴더구조.. 폴더들을보면, values, drawable 폴더도있지만 values-large 나 drawable-hdpi 등다소수상한 (?) 제목을가지고있는폴더들도보이는군요. 이러한폴더들은단말의환경 ( 고해상도액정, 저해상도액정, 단말로케일등등..) 에따라다른리소스를사용하기위해각환경에맞는리소스들을별도로가지고있는것들입니다. 리소스에대한자세한설명은추후에하기로하고, 일단은새로만든프로젝트에서생성한파일들에대해알아보도록하겠습니다. 소스코드 (/src, /gen) 1. 어플리케이션컴포넌트 / 기타클래스의소스코드 (/src) 일반소스코드는액티비티, 서비스, 컨텐트프로바이더혹은기타어플리케이션구성에필요한클래스들의

96 소스파일들로구성되어있습니다. 새프로젝트를생성한경우, 일반적으로자동으로생성된액티비티의소스코드가포함되죠. 우리가만든 HelloAndroid 프로젝트를보면, 자동으로생성된액티비티의소스코드인 HelloAndroid.java 가있는것을확인할수있습니다. HelloAndroid 액티비티의소스코드가담긴 HelloAndroid.java 파일 2. 자동생성파일 (/gen) 안드로이드어플리케이션은소스코드뿐만아니라레이아웃, 그림, 문자열등여러가지리소스들로구성됩니다. 소스코드를작성하다보면레이아웃파일에정의된위젯 ( 예 : TextView 등..) 에접근하여작업을수행 ( 예 : 표시될텍스트내용을변경 ) 하는등리소스에접근해야하는경우가생깁니다. 소스코드에서리소스파일에접근하기위해이클립스 ADT 플러그인에서는리소스에변동이있을때마다리소스의주소를업데이트하여 R.java 파일에기록해줍니다. 이러한과정은리소스가추가 / 삭제되거나변경된후해당리소스가 " 저장 " 될때이루어지게됩니다. 주의할것은, 이러한과정은모두자동으로이루어지며, R.java 파일에는리소스들의주소가담겨있으므로 R.java 파일의내용을임의로변경해서는안됩니다. R.java 파일의내부모습

97 리소스 (/drawable, /layout, /values) 1. 그려질수있는객체 (/drawable) 이폴더에는어플리케이션에서사용할그림파일등을보관합니다. jpg, png 등의파일형식을지원합니다. 우리가위에서만든 HelloAndroid 프로젝트에는어플리케이션의아이콘인 icon.png 만들어가있습니다. 리소스를추가시키게되면해당파일의이름을리소스명으로등록하게되는데, 리소스이름으로소문자및일부한정된특수문자만지원하기에그림파일이름은모두소문자및일부한정된특수문자로만이루어져야 ([a-z0-9_.]) 합니다. 이는비단그림파일에만해당되는것이아니라, 리소스전체 ( 레이아웃등 ) 에해당됩니다, 2. 레이아웃 (/layout) 어플리케이션의화면을구성하는레이아웃파일들을포함하고있습니다. HelloAndroid 프로젝트에는 HelloAndroid 액티비티의레이아웃인 main.xml 파일이있는것을확인할수있습니다. 이클립스 ADT((Android Development Tools) 를통해레이아웃파일이화면에어떻게표시되는지볼수도있으며, Outline 및속성창을이용하여레이아웃을쉽게구성할수도있습니다. 아래는 main.xml 레이아웃파일을 ADT 를통해열어본모습입니다. 안드로이드 SDK 가 2.0 으로업데이트됨에따라, ADT 의버전도 로업데이트면서레이아웃에디터의모습이조금달라졌습니다. 기존의잡다한옵션들 ( 사실어떻게쓰는지도잘모르겠...) 은싹사라지고, 각장치및환경에해당레이아웃이적용된모습을미리볼수있도록바뀌었습니다. 현재는 ADP1 (Android Dev Phone 1) 과 Ion (HTC Magic) 만있습니다. ADT 의레이아웃에디터

98 레이아웃의구조가표시되는 Outline 창 각객체의속성을표시해주는 Properties 창 안드로이드레이아웃에디터ㅜ래부분의탭의 [Layout] 탭을클릭하면레이아웃미리보기를, [main.xml] 탭을클릭하면해당레이아웃의코드를볼수있습니다.

99 main.xml 탭을클릭하면나오는코드편집창 3. 기타여러가지값들 (/values) values 폴더에는문자열, 배열등기타어플리케이션에서사용하는여러가지값들이보관됩니다. HelloAndroid 프로젝트에는문자열을저장하는파일인 strings.xml 파일만있는것을확인할수있습니다. strings.xml 파일을열어보면아래와같이현재리소스에등록되어있는문자열과함께문자열들을추가하거나삭제할수있는화면이표시됩니다.

100 또한, 레이아웃과마찬가지로아래의 strings.xml 탭을선택하면직접 XML 코드를작성할수있는화면이표시됩니다. 리소스폴더에구체적으로어떤파일들이저장되는지자세한내용이궁금하신분은여기를참조하세요. 4. 메니페스트파일 (AndroidManifest.xml) 메니페스트파일인 AndroidManifest.xml 파일은각어플리케이션에필수로있어야하는파일입니다. 이파일은어플리케이션의이름, 버전부터시작하여사용권한, 컴포넌트정의등어플리케이션의뼈대를구성하는정보를포함하고있습니다.

101 Exercises: Layout 파일을이용한액티비티화면구성 [HelloAndroid.java] 01.import android.app.activity; 02.import android.os.bundle; public class HelloAndroid extends Activity { 05./** Called when the activity is first created. */ 06.@Override 07.public void oncreate(bundle savedinstancestate) { 08.super.onCreate(savedInstanceState); 09.setContentView(R.layout.main); 10.} 11.} 위의코드는 HelloAndroid 프로젝트를만들면서기본으로만들어진코드입니다. 위의코드를실행하면아래와같은화면이표시되게됩니다. 어떻게해서위와같은화면이나오는지아직은어리둥절할지도모릅니다. 하지만그리어렵지않으니, 한줄한줄차근차근알아가보도록하죠.

102 1.public class HelloAndroid extends Activity HelloAndroid 클래스가 Activity 클래스를상속하는것을볼수있습니다. 새프로젝트를만들게되면기본적으로액티비티가하나생성되게되는데, 그액티비티가여기에서는 HelloAndroid 입니다. 따라서, HelloAndroid 클래스는 Activity 클래스를상속받게됩니다. 2.public void oncreate(bundle savedinstancestate) { 3.super.onCreate(savedInstanceState); 4.setContentView(R.layout.simplelayout); 5.} Activity 클래스내의메소드중하나인 oncreate() 메소드를오버라이드합니다. 2009/09/18 - 액티비티의생애주기 (Lifecycle) 에서다뤘듯이, oncreate() 메소드가호출되면서액티비티를생성하게됩니다. 따라서, 이곳에서 Hello, Android 액티비티의초기화작업, 텍스트를화면에표시해주는작업을수행해주어야합니다. 액티비티클래스의 oncreate() 메소드를오버라이드하여기본적인 oncreate() 에서하는일외에우리가하고자하는일을추가하는것이기때문에, 상위클래스의 oncreate() 메소드를호출 (super.oncreate(savedinstancestate)) 하여상위클래스의메소드내에정의된작업을먼저수행하게됩니다. 상위클래스메소드의호출이끝난후에, setcontentview() 메소드를사용한것을볼수있습니다. 이메소드는리소스 ( 레이아웃파일 ) 를이용하여액티비티의화면을구성할때필수적인메소드이며, 인자로레이아웃리소스혹은 View 객체를받을수있습니다. 이메소드에서는인자로받은레이아웃혹은 View 객체를액티비티의화면에표시해주는역할을수행합니다. View( 뷰 ) (android.view.view) 뷰는액티비티, 즉화면을구성하는기본단위입니다. 텍스트를표시하는 TextView, 이미지를표시하는 ImageView, 리스트를표시하는 ListView 등특정데이터를화면에표시해주는객체, Button, RadioButton 등사용자의동작에반응할수있는객체, LinearLayout, RelativeLayout 등각자가포함하고있는 View 객체들이어떻게표시할지를결정해주는레이아웃객체들로구성됩니다. 위에서는액티비티의화면에레이아웃파일을표시하도록하고있으며, 소스코드내에서레이아웃파일에접근하기위해리소스들의주소가담긴 R 클래스 (R.java) 를이용하는것을볼수있습니다.

103 각리소스를참조할수있는주소들이담겨있다. 그럼, 이제액티비티의화면을구성하게될 main.xml 레이아웃파일이어떻게구성되어있는지보도록하겠습니다. 01.<?xml version="1.0" encoding="utf-8"?> 02.<LinearLayout xmlns:android=" 03.android:orientation="vertical" 04.android:layout_width="fill_parent" 05.android:layout_height="fill_parent" 06.> 07.<TextView 08.android:layout_width="fill_parent" 09.android:layout_height="wrap_content" 11./> 12.</LinearLayout> 레이아웃파일의구조를보면, LinearLayout 이 TextView 를감싸는구조를하고있음을볼수있으며, 이는 LinearLayout 이포함하는다른 View 들이어떻게화면에배치될지를담당하기때문입니다. LinearLayout 의속성중하나, orientation 에따라레이아웃내부의 View 수평혹은수직으로배치하며, LinearLayout 외에도포함하는 View 들간의위치관계들을정의한후, 그에따라각객체들을표시해주는 RelativeLayout, 레이아웃의왼쪽위를기준으로포개듯이객체들을배치해주는 FrameLayout 등여러레이아웃이존재합니다. layout_height 및 layout_width 속성은 LinearLayout 뿐만아니라 TextView 에도있는속성으로, 액티비티화면내에서표시될뷰의너비및높이를지정해줍니다. fill_parent 속성은화면에꽉차게끔 View 를배치하고, wrap_content 속성은각 View 를그리는데필요한만큼만그 View 가화면을차지함을뜻합니다. 여기에서유의해야할것은 fill_parent 는해당 View 가

104 속하는 View, 즉여기에서 TextView 의경우 View 들을담고있는 View(LinearLayout) 이화면에서차지하는만큼화면을차지할수있습니다. 아래에서 TextView 의 layout_height 가 fill_parent 일때, LinearLayout 의높이 (layout_height) 에따라 TextView 가차지하는영역이달라지는것을볼수있습니다. <LinearLayout android:layout_height = "fill_parent"... <LinearLayout android:layout_height = "wrap_content"... TextView 는텍스트를표시하기위해 text 속성을통해화면에표시할텍스트를지정합니다. 이곳에화면에표시할텍스트를직접넣어줄수도있고, 리소스에저장된문자열의주소를넣어리소스에저장된값을표시하도록할수도있습니다. 위의코드에서는이름이 hello 인문자열의값을참조하는모습을볼수있습니다. 소스코드에서리소스파일을참조할수있는것처럼, 리소스파일에서도다른리소스파일의값을참조하도록할수있습니다. 리소스종류 ]/[ 리소스이름 ] 형식의주소를사용합니다.

105 Exercises : Java Code 를이용한액티비티화면구성 안드로이드액티비티의화면구성방법은크게두가지가있습니다. 하나는앞에서알아보았던것처럼레이아웃을이용하여화면을구성하는방법이고, 다른하나는이번글에서살펴볼자바코드를통해화면을구성하는방법입니다. 일반적으로정적인레이아웃을구성할때는레이아웃파일을이용하고, 동적인레이아웃을구성할경우자바코드를통해레이아웃을구성하게되며이두가지방법을모두사용하여레이아웃을구성하는것또한가능합니다. ( 기본레이아웃을구성한후, 사용자의동작에따라 View 들을추가해주는등의레이아웃 ) 이번글에서는자바코드만을이용하여저번강좌의 Hello, Android 와동일한화면을구성하는방법에대해알아보도록하겠습니다. 아래는저번강좌에서사용했던레이아웃파일입니다. 01.<?xml version="1.0" encoding="utf-8"?> 02.<LinearLayout xmlns:android=" 03.android:orientation="vertical" 04.android:layout_width="fill_parent" 05.android:layout_height="fill_parent" 06.> 07.<TextView 08.android:layout_width="fill_parent" 09.android:layout_height="wrap_content" 10.android:text="@string/hello" 11./> 12.</LinearLayout> Hello, Android 의레이아웃은 LinearLayout 을바탕으로하고있으며, 그안에텍스트를표시해주는뷰인 TextView 가들어가있습니다. TextView 를감싸고있는 LinearLayout 의너비 (layout_width) 및높이 (layout_height) 는각각 fill_parent, 즉화면을꽉채우게설정되어있습니다. fill_parent 속성은해당뷰를포함하는부모객체가가진너비혹은높이만큼의크기를가진다는것인데, 여기에서 LinearLayout 은그자체가최상위객체, 루트 (root) 객체이므로액티비티의화면을꽉채우게됩니다. 한번, 화면에표시되는레이아웃이어떤구조를가지고있는지알아보도록하겠습니다. [SDK 설치경로 ]/tools 폴더의 Hierarchy Viewer 를실행시켜보면, 액티비티의레이아웃이어떤구조를가지고있는지더잘알수있습니다. HelloAndroid 어플리케이션이실행된상태에서 Hierarchy Viewer 를실행시킨후, Load View Hierarchy 버튼을누르면아래와같이현재화면의 View 에대한정보들이표시됩니다.

106 아래는 Hello, Android 의뷰구조입니다. Hierarchy Viewer 의모습

107 우리가생각했던구조는 LinearLayout 이 TextView 를감싸고있는구조였는데, 생각보다복잡해보이는군요. 이는화면에표시되는모든 View 의구조가다표시되었기때문입니다. 별로어렵지않으니하나하나씩보도록합시다. 우선, 가장상위에위치한개체, 루트개체인 PhoneWindow$DecorView 는상태표시줄을제외한실질적으로액티비티화면이표시되는모든영역을뜻합니다. 이는크게타이틀바 ( 액티비티이름이표시되는영역 ) 과실제액티비티의내용들이표시되는영역으로나뉩니다.

108 루트객체의바로아래에는타이틀바와컨텐트영역을포함하는 LinearLayout 이있습니다. 각영역은 FrameLayout 을바탕으로구성됩니다. FrameLayout 은레이아웃이포함하는뷰들을왼쪽가장윗쪽을기준으로차곡차곡쌓아주는형식으로배치합니다. 이러한각영역안에실질적으로타이틀바에표시되는텍스트및액티비티화면에표시될레이아웃객체들이들어가게됩니다.

109 id 가 content 인 FrameLayout, 즉컨텐트영역의하위에우리가작성했던 LinearLayout 및 TextView가있는것을볼수있습니다. 이처럼, 간단해보이는화면도사실은이렇게여러구조를가지고있습니다. fill_parent 속성이부모객체의크기만큼의크기를갖는것이니, 여기에서는 LinearLayout 의부모객체, FrameLayout 의크기만큼의크기를갖고이 FrameLayout 은화면에서가로세로로타이틀바및상태표시줄을제외한모든화면을차지하도록되어있으므로이 FrameLayout 하위의객체들은최대이레이아웃의크기만큼을차지할수있게됩니다. 이제자바실제코드를통해레이아웃을구성해보도록하겠습니다. 우선, 아래의코드에서부터시작합니다. 1.public class HelloAndroid extends Activity { 2./** Called when the activity is first created. */ 3.@Override 4.public void oncreate(bundle savedinstancestate) { 5.super.onCreate(savedInstanceState); 6. 7.} 8.} 우리가구성할화면은 LinearLayout 내부에 TextView 가들어가있는구조이므로, 우선 LinearLayout 객체를생성해주도록합시다. 1.LinearLayout root = new LinearLayout(this);

110 그다음은 LinearLayout 이어떻게화면에표시될것인지를지정해주어야합니다. 이러한속성을지정해주기위해 LinearLayout 클래스내의내부클래스인 LayoutParams 객체를사용하여 LinearLayout 의어떻게화면에표시될지그속성을담고있는객체를생성합니다. 1.LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( 2.ViewGroup.LayoutParams.FILL_PARENT, 3.ViewGroup.LayoutParams.FILL_PARENT, 4.0.0F); [API] public LinearLayout.LayoutParams (int width, int height, float weight) 주어진너비, 높이및 weight 를갖는새레이아웃속성을생성합니다. LinearLayout 이컨텐트영역에꽉차게나오도록 width 및 height 에모두 fill_parent 속성을지정해줍니다. weight 는화면에여러뷰들이표시될때해당 View 가화면에서차지하는비율로, 여기에서는사용하지않으므로 0 을넣어줍니다. 1.root.setLayoutParams(params); 2.root.setOrientation(LinearLayout.VERTICAL); 다음으로, LinearLayout 의레이아웃속성으로우리가만든앞서만들어준속성을사용하기위해 setlayoutparams() 메소드의인자로우리가만들어준레이아웃속성 ( 객체 ) 을넣어줍니다. 그리고, LinearLayout 에서 View 를표시할방향을지정하기위해 setorientation() 메소드를사용합니다. 여기에서는 Vertical, 레이아웃내의 View 들을수직으로 ( 위-> 아래 ) 표시하도록하였습니다. 이제는 TextView 를 LinearLayout 에추가할차례입니다. TextView 객체를생성한후, settext() 를통해 TextView 에표시될문자열을지정합니다. 여기에서는리소스에저장되어있는문자열을불러왔습니다. 그다음, LinearLayout 과마찬가지로 TextView 의레이아웃속성을지정합니다. 1.TextView tv = new TextView(this); 2.tv.setText(R.string.hello); 3.LinearLayout.LayoutParams tvparams = new LinearLayout.LayoutParams( 4.ViewGroup.LayoutParams.WRAP_CONTENT, 5.ViewGroup.LayoutParams.WRAP_CONTENT, 6.0.0F); 7.tv.setLayoutParams(tvParams); TextView 객체의설정이완료되었으므로, 이 TextView 를 LinearLayout 에추가시켜줍니다. 그후, LinearLayout 을액티비티의화면으로표시하도록설정합니다. 1.root.addView(tv); 2.setContentView(root); 완성된코드는아래와같습니다.

111 01.package com.androidhuman.helloandroid; import android.app.activity; 04.import android.os.bundle; 05.import android.view.viewgroup; 06.import android.widget.linearlayout; 07.import android.widget.textview; public class HelloAndroid extends Activity { 10./** Called when the activity is first created. */ 11.@Override 12.public void oncreate(bundle savedinstancestate) { 13.super.onCreate(savedInstanceState); 14.LinearLayout root = new LinearLayout(this); 15.LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( 16.ViewGroup.LayoutParams.FILL_PARENT, 17.ViewGroup.LayoutParams.FILL_PARENT, F); root.setLayoutParams(params); 21.root.setOrientation(LinearLayout.VERTICAL); TextView tv = new TextView(this); 24.tv.setText(R.string.hello); 25.LinearLayout.LayoutParams tvparams = new LinearLayout.LayoutParams( 26.ViewGroup.LayoutParams.WRAP_CONTENT, 27.ViewGroup.LayoutParams.WRAP_CONTENT, F); 29.tv.setLayoutParams(tvParams); root.addView(tv); setContentView(root); 34.} 35.} 이코드를실행시키면우리가저번에레이아웃파일을통해구성했던화면과동일한화면이표시되게됩니다. 여기까지자바코드를통해액티비티의화면을구성하는것에대해알아보았습니다. 사실, 레이아웃을구성할때자바코드를통해구성하는것보다는레이아웃파일을이용하여구성하는것이일반적으로더효율적입니다. 하지만, 동적으로화면을구성하는경우 ( 사용자의입력에반응하여 View 에요소들이추가되어야한다는둥...) 자바코드를이용하여레이아웃을구성해야합니다. 이러한특성때문에보통기본바탕이되는레이아웃은레이아웃파일을통해, 그이후는자바코드를통해레이아웃을구성하게됩니다. 따라서레이아웃파일을이용하는방법과자바코드를이용하여레이아웃을구성하는방법모두꼭알고있어야합니다.

112 Exercises : 새로운액티비티생성하기 액티비티를추가해주기위해서는아래의두가지작업을수행해주어야합니다. - 메니페스트파일 (AndroidManifest.xml) 에액티비티등록하기 - 액티비티소스코드만들기 1. 메니페스트파일에액티비티등록하기 안드로이드에서액티비티를호출하기위해서는먼저메니페스트파일에액티비티가등록되어있어야합니다. 메니페스트파일에액티비티를등록해주기위해, 먼저메니페스트파일 (AndroidManifest.xml) 파일을연후, Application 탭을클릭합니다. 이클립스 ADT 로열어본 AndroidManifest.xml 여러가지속성을설정할수있는화면들과함께어플리케이션의여러구성요소들을등록할수있는 Application Nodes 화면이화면좌측하단에있습니다. 이곳에서액티비티뿐만아니라다른액티비티구성요소 ( 서비스, 컨텐트프로바이더등 ) 도추가해줄수있습니다. 액티비티를추가하기위해 Application Nodes 부분의 Add... 버튼을클릭합니다.

113 Add.. 화면을클릭하면다음과같은대화상자가나타나는데, 이곳에서 "Activity" 를클릭합니다. "OK" 버튼을클릭한후, 추가된 Activity 를선택한후오른쪽의 Attributes 화면을보면다음과같은화면이보일것입니다.

114 2. 액티비티소스코드만들기 메니페스트파일에액티비티를선언하였으니, 이액티비티의실질적인동작을구현할자바소스코드를만들어야합니다. 파란색으로되어있는 Name* 을클릭하여새클래스를만들어줍시다. 위와같은대화상자가뜨게될것입니다. 다른것은특별히건드릴필요가없고, 클래스의이름 ( 일반적으로액티비티의이름과동일하게설정합니다 ) 을입력합니다. 이름을입력했으면, Finish 버튼을누릅시다.

115 Finish 버튼을누르면, 다음과같이새로운코드파일이생성이됩니다. 처음프로젝트를만들때와동일하게 oncreate() 메소드까지추가되어있습니다. :) 단, 액티티의화면을표시해주는메소드인 setcontentview() 메소드가추가되어있지않으므로, 이상태로이액티비티를호출하면화면에는아무것도표시되지않게됩니다. 여기까지하셨다면, 호출대상을명확히지정하는명시적인텐트 (Explicit Intent) 를이용하여이액티비티를호출할수있습니다. 하지만, 인텐트필터를정의하지않았기에암시적인텐트 (Implicit Intent) 를통해호출될수는없습니다.

116 Exercises : 인텐트를이용하여액티비티호출하기 강좌를따라오기전에, 준비해야할것들은다음과같습니다. - 새로운프로젝트 - 두개의소스코드및레이아웃코드 ( 액티비티를두개만들어야하니, 당연히두개필요하겠죠??) 이번강좌에서예제로만드는어플리케이션의구성은다음과같습니다. * 첫번째액티비티 (IntentExample) 에서버튼을누르면두번째액티비티가호출됨 * 두번째액티비티 (Activity2) 에서종료버튼을누르면두번째액티비티가종료됨 우선, 첫번째액티비티의레이아웃코드와소스코드를보겠습니다. [ 레이아웃 ] 01.<Linearlayout xmlns:android=" 02.android:orientation="vertical" 03.android:layout_width="fill_parent" 04.android:layout_height="fill_parent"> 05.<Textview android:layout_width="fill_parent" 06.android:layout_height="wrap_content" 07.android:text=" 첫번째액티비티화면입니다."/> 08.<Button android:layout_width="fill_parent" 09.android:layout_height="wrap_content" 10.android:text=" 두번째액티비티호출 " 11.android:id="@+id/launchActivity"></Button> 12.</Linearlayout> [ 소스 ] 01.package com.androidhuman.intentexample; 02.import android.app.activity; 03.import android.content.intent; // 인텐트사용위해 import 합니다. 04.import android.os.bundle; 05.import android.view.view; 06.import android.widget.button; public class IntentExample extends Activity { 09./** Called when the activity is first created. */ 10.@Override 11.public void oncreate(bundle savedinstancestate) { 12.super.onCreate(savedInstanceState); 13.setContentView(R.layout.main); 14.Button launch = (Button)findViewById(R.id.launchActivity); 15.launch.setOnClickListener(new Button.OnClickListener(){ 16.public void onclick(view v) { 17.// TODO Auto-generated method stub 18.Intent intent = new Intent(IntentExample.this, Activity2.class); // 두번째액티비티를실행하기위한인텐트 19.startActivity(intent); // 두번째액티비티를실행합니다. 20.} 21.}); 22.} 23.}

117 다른것들은대부분앞에서다루었던것들이고, 생소한것은단연인텐트 (Intent) 일것입니다. 인텐트에관한것을설명하자면엄청길어지지만, 항상그래왔던것처럼 (!) 하나하나씩다루어보도록하겠습니다. 이번예제에서사용한인텐트의생성자는 " 다른액티비티를호출할때 " 사용하는생성자입니다. 참고로인텐트를사용하여다른네이티브액티비티 ( 전화번호입력기, 주소록, 브라우저등..) 도호출할수있습니다. 하지만일단그런것은나중에다루도록하고, 이번강좌에서는사용자액티비티를호출하는것에대해다루도록하겠습니다. 그럼, 생성자의원형을분석해보도록합시다. public Intent(Context packagecontext, Class<?>cls) * packagecontext : 한마디로말하면호출하는액티비티를뜻합니다. 여기에서는 IntentExample 이되겠습니다.(IntentExample.this) *cls : 호출할클래스를뜻합니다. 여기에서는 Activity2 액티비티를호출해야하므로, Activity2 의클래스인 Activity2.class 를입력합니다. 이렇게인텐트설정이끝났으면, 인텐트를실행해야겠지요? 사실, 인텐트자체를생성함으로써인텐트가실행되는것이아니라, 인텐트는하나의 " 실행하는방법 " 만을담고있고, 실제로그일을수행하는것은 startactivity() 메소드가담당합니다. 인텐트를실행하는메소드도이것말고도여러가지가있지만, 일단은요거하나만다뤄보도록하겠습니다. public void startactivity(intent intent) 파라미터로받은 intent 인텐트를실행합니다. 자, 그럼첫번째액티비티에대한코딩은끝났으니두번째액티비티에대한소스와레이아웃을설계해보도록하죠. [ 레이아웃 ] 01.<Linearlayout xmlns:android=" 02.android:orientation="vertical" 03.android:layout_width="wrap_content" 04.android:layout_height="wrap_content" 05.android:id="@+id/LinearLayout01"> <Textview android:layout_width="fill_parent" 08.android:layout_height="wrap_content" 09.android:text=" 두번째액티비티화면입니다. 아래버튼을누르시면액티비가종료됩니다." 10.android:id="@+id/Activity_2_text"></Textview> <Button android:layout_width="fill_parent" 13.android:layout_height="wrap_content" 14.android:text=" 액티비티종료하기 " 15.android:id="@+id/terminateActivity"></Button> 16.</Linearlayout> [ 소스 ] 01.package com.androidhuman.intentexample; 02.import android.app.activity;

118 03.import android.os.bundle; 04.import android.view.view; 05.import android.widget.button; 06.public class Activity2 extends Activity { 07./** Called when the activity is first created. */ 08.@Override 09.public void oncreate(bundle savedinstancestate) { 10.super.onCreate(savedInstanceState); 11.setContentView(R.layout.layout2); 12.Button terminate = (Button)findViewById(R.id.terminateActivity); 13.terminate.setOnClickListener(new Button.OnClickListener(){ 14.public void onclick(view v) { 15.// TODO Auto-generated method stub 16.finish(); // 액티비티를종료합니다. 17.} }); } 22.} 두번째액티비티는사실더별거없습니다. 버튼에리스너다는건이제아무것도아니고, 인텐트도없구요. 대신에, 액티비티를종료하는메소드인 finish() 메소드를볼수있습니다. 사용자가액티비티를종료하고싶을땐, 이 finish() 메소드를사용하면됩니다. public void finish() 액티비티를종료합니다. 여기까지잘따라오셨다면, 다음과같은화면을보실수있을것입니다. 첫번째액티비티에서버튼을누르면두번째액티비티가실행되고, 두번째액티비티의버튼을누르면두번째액티비티는종료됩니다.

119

120 테트리스게임템플릿실습 권욱빈 강사소개권욱빈 강원대학교컴퓨터공학과졸업하고 C/C++ 및 Java로보험영업지원, 재무설계및업무지원시스템등을개발하였으며, 현재 ING 생명운영전산본부에서 Front-end 시스템및 EAI 개발업무를수행하고있다. 새롭고다양한컴퓨팅환경에대한관심을가지고안드로이드를공부중이다.

121

122 테트리스를만들며배우는안드로이드어플리케이션제작 제 2 회안드로이드세미나 2009 년 12 월 5 일권욱빈 ( 목표 개발환경의설치 어플리케이션기본구성의이해 어플리케이션개발실습 ( 테트리스 )

123 설치와사용이편리한개발환경 개발환경의설치 필요한것들 PC or Mac (Windows, Linux, OS X) JDK 6.0 Android SDK 2.0 Eclipse Galileo RCP Eclipse Plugin ADT (Android Development Tools)

124 (( 설치과정동영상 )) 새로운프로젝트생성

125 기본어플리케이션프로젝트생성 설치된개발환경의확인 기본적인프로젝트생성 Hello, World. 에뮬레이터실행 (( 프로젝트생성동영상 ))

126 어플리케이션프로젝트의구성 기본프로젝트의구성 src gen (Generated Java Files) res (string, layout, drawable) AndroidManifest.xml

127 어플리케이션기본구성의이해 Activity 어플리케이션구성의가장기본요소 하나의스크린또는화면 Activity Life Cycle 화면이보여지는상태여부에따라안드로이드에의해 Activity의상태가전이됨 전이될때적절하게통보됨

128 Activity Life Cycle oncreate() onstart() onresume() onpause() onstop() onrestart() ondestroy() Process Life Cycle 안드로이드프로세스의상태 Foreground process Visible Process Service Process Background Process Empty Process 제한된메모리를효율적으로사용하기위해안드로이드는사용빈도가적은프로세스를죽일수있음

129 구성요소 ( 계속 ) View 유저인터페이스를구성하는기본요소 View Group View 나다른 View Group 을포함 View Attribute View 가가지는속성 Layout View 를화면에배치 / 구성 Real Development Lab Android Tetris

130 개요및목표 간단한어플리케이션을단계적으로제작 어플리케이션기본골격의이해 개발환경을이해 어플리케이션기본구성요소구현 (Android Application Life Cycle) 디버깅등의개발방법습득 Activity, Layout, View - 화면구성 Hello, World 를수정하여게임화면을구성 setcontentview() Activity( 화면 ) 의내용을지정설정 Layout main.xml 내용을수정 FrameLayout, RelativeLayout View & View Group TetrisView 추가

131 Lab 1 화면중앙에문자열출력 게임시작, 게임종료 과같은문자열이화면중앙에나오도록제작 Layout 은어디에있는것이좋을까? res/main.xml Activity.onCreate() setcontentview(r.layout.main); TextView tv = new TextView(this); tv.settext( Hello,World! ); setcontentview(tv); XML 에정의 코드에정의

132 Tetris 기본로직구현 기본게임알고리즘구현 초기화 OnSizeChanged() 새로운블럭생성 이동과회전 충돌확인 화면에그리기 화면에그리기 ondraw(canvas) Paint Paint.setColor(int) Canvas.drawRect(Rect, Paint) Canvas.drawRoundRect(RectF, float, float, Paint)

133 Lab 2 실행추적하기디버깅모드로실행하여단계적으로수행한다 Lab 3 게임화면구성하기화면에임의의블록을생성하여그린다

134 Tetris 기본로직구현 ( 계속 ) 떨어트리기 class RefreshHandler extends Handler public void handlemessage(message msg) {} }; public void sleep(long delaymillis) {} Lab 4 게임화면구성하기 2 생성한블록을떨어뜨린다

135 사용자입력처리 키입력처리 public boolean onkeydown(int keycode, KeyEvent msg) {} Lab 5 게임화면구성하기 3 떨어지는블록을키입력에따라이동 / 회전시킨다

136 Lab 6 게임의완성기본적인테트리스게임을완성한다 Life Cycle 지원 소형모바일장비의특성 oncreate() onpause() onresume()

137 Lab 7 안드로이드어플리케이션의완성지금까지작성된것에 Life Cycle 처리요소를첨가 Q & A

138 사용자가본스마트폰, 그리고안드로이드폰의가능성 문형철 강사소개문형철 IT 및모바일가젯블로그 [bruce, 와이프몰래오븐을지르다 ] ( 운영 PC 미디어 [Play PC] 컬럼니스트

139

140

141

142

143

144

145

146

147

148

149

150 협찬소개 케이앤피북스출판사 제이펍출판사 ITC 출판사

151

152 케이앤피북스 IT 단행본소개 자바프로그래밍언어, 한글 4 판 자바하우투프로그램, 한글 7 판 지은이 : 켄아놀드, 제임스고슬링, 데이비드홈즈옮긴이 : 한동호정가 : 35,000원출간일 : 2009년 11월 13일페이지 : 864쪽판형 : 182*235 ISBN: 유닉스쉘바이블, 개정 4판 지은이 : 하비디텔, 폴디텔옮긴이 : 김수동정가 : 53,000원출간일 : 2009년 7월 16일페이지 : 1,732쪽판형 : 188*257 ISBN: C++ 하우투프로그램, 한글 6판 지은이 : 엘리퀴글리옮긴이 : 황대환정가 : 40,000원출간일 : 2008년 12월 26일페이지 : 1,256쪽판형 : 182*235 I S B N: 지은이 : 하비디텔, 폴디텔옮긴이 : 이태용정가 : 51,000원출간일 : 2009년 9월 4일페이지 : 1,640쪽판형 : 188*257 ISBN:

153 Java FX : 예제로쉽게배우는짐클라크, 짐코너스, 에릭브루노공저이진행, 이아정, 정다정공역 프로페셔널안드로이드애플리케이션개발 리토마이어저 조성만역 2009년 11월 25,000원 2009년 07월 30,000원 24시간 365일서버 / 인프라를지탱하는기술 클라우드의충격 이토나오야저 시로타마코토저 진명조역 진명조역 2009년 04월 25,000원김태용의리눅스쉘스크립트프로그래밍입문김태용저 2009년 10월 18,000원프로페셔널 ASP.NET MVC : 예제로쉽게배우는롭코너리, 스콧핸슬만, 필해크, 스콧구스리공저 장현희역 2009 년 09 월 32,000 원 2009 년 10 월 28,000 원

154 도서출판 ITC 의 IT 단행본

155 감사합니다. 안드로이드사이드한동호 서강대게임교육원최승관

( )부록

( )부록 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

[ 그림 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

안드로이드기본 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 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

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

서현수

서현수 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

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

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 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

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

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

(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

[ 그림 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

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

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. 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

리니어레이아웃 - 2 -

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

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

어댑터뷰

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

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

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

슬라이드 1

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

More information

슬라이드 1

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

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

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

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요 . 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요소로써안드로이드시스템에서는 Activities, Services, Content Providers,

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

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

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

MVVM 패턴의 이해

MVVM 패턴의 이해 Seo Hero 요약 joshua227.tistory. 2014 년 5 월 13 일 이문서는 WPF 어플리케이션개발에필요한 MVVM 패턴에대한내용을담고있다. 1. Model-View-ViewModel 1.1 기본개념 MVVM 모델은 MVC(Model-View-Contorl) 패턴에서출발했다. MVC 패턴은전체 project 를 model, view 로나누어

More information

2_안드로이드UI

2_안드로이드UI 03 Layouts 레이아웃 (Layout) u ViewGroup의파생클래스로서, 포함된 View를정렬하는기능 u 종류 LinearLayout 컨테이너에포함된뷰들을수평또는수직으로일렬배치하는레이아웃 RelativeLayout 뷰를서로간의위치관계나컨테이너와의위치관계를지정하여배치하는레이아웃 TableLayout 표형식으로차일드를배치하는레이아웃 FrameLayout

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

을풀면된다. 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

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

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

Studuino소프트웨어 설치

Studuino소프트웨어 설치 Studuino 프로그래밍환경 Studuino 소프트웨어설치 본자료는 Studuino 프로그래밍환경설치안내서입니다. Studuino 프로그래밍 환경의갱신에따라추가 / 수정될수있습니다. 목차 1. 소개... 1 2. Windows... 2 2.1. 프로그래밍환경설치... 2 2.1.1. 웹설치버전설치방법... 2 2.2. Studuino 프로그래밍환경실행...

More information

TipssoftAppActivity.java // 기본소스파일 main.xml // 배치와구성에관련된리소스파일 string.xml // 프로그램에서사용할문자열에관련된리소스파일 컴파일을하고나면 r.java 라는소스파일이하나추가되는데이파일은리소스파일을소스파일에서이용할수있도

TipssoftAppActivity.java // 기본소스파일 main.xml // 배치와구성에관련된리소스파일 string.xml // 프로그램에서사용할문자열에관련된리소스파일 컴파일을하고나면 r.java 라는소스파일이하나추가되는데이파일은리소스파일을소스파일에서이용할수있도 1. " 소스파일 " 과 " 리소스파일 " 에대하여 소스파일은우리가흔히알고있듯이프로그래밍언어를사용해서자신이만들고자하는프로그램을구현한파일입니다. 예전에작성된프로그램들은소스파일만으로이루어진프로그램도많았습니다. 하지만, 프로그램환경이점점더복잡해지고사용자인터페이스가다양해지면서인터페이스구성을서술식으로나열해서소스파일에표현하는것은한계가왔고작업효율을떨어트리게되어해결책이필요하게되었습니다.

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

슬라이드 1

슬라이드 1 Android App 개발기초 & Activity, Intent 세미나 2012. 03. 26 ING 팀여상권, 이용균, 최상욱, 권지해 목차 프로젝트생성과정설명 안드로이드동작, 구조설명 Activity 설명 Intent 설명 질문 1 프로젝트생성과정설명 1. Eclipse의메뉴바에서 File 선택 2. New선택후 Android Project 선택 3. Project

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

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API WAC 2.0 & Hybrid Web App 권정혁 ( @xguru ) 1 HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API Mobile Web App needs Device APIs Camera Filesystem Acclerometer Web Browser Contacts Messaging

More information

PowerPoint Template

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

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

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

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

슬라이드 1

슬라이드 1 핚국산업기술대학교 제 14 강 GUI (III) 이대현교수 학습안내 학습목표 CEGUI 라이브러리를이용하여, 게임메뉴 UI 를구현해본다. 학습내용 CEGUI 레이아웃의로딩및렌더링. OIS 와 CEGUI 의연결. CEGUI 위젯과이벤트의연동. UI 구현 : 하드코딩방식 C++ 코드를이용하여, 코드내에서직접위젯들을생성및설정 CEGUI::PushButton* resumebutton

More information

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault 사용자매뉴얼 JetFlash Vault 100 ( 버전 1.0) 1 목차 1. 시스템요구사항... 3 2. 암호및힌트설정 ( 윈도우 )... 3 3. JetFlash Vault 시작하기 ( 윈도우 )... 7 4. JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault 찾아보기... 10 JetFlash

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

04_오픈지엘API.key

04_오픈지엘API.key 4. API. API. API..,.. 1 ,, ISO/IEC JTC1/SC24, Working Group ISO " (Architecture) " (API, Application Program Interface) " (Metafile and Interface) " (Language Binding) " (Validation Testing and Registration)"

More information

Microsoft PowerPoint Android-구조.애플리케이션 기초(1.0h).pptx

Microsoft PowerPoint Android-구조.애플리케이션 기초(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 안드로이드정의및아키텍처 안드로이드커널접근 애플리케이션기초및컴포넌트 2 안드로이드는운영체제 (operating system), 미들웨어 (middleware), 핵심애플리케이션들 (key applications) 을포함하고있는모바일디바이스를위한소프트웨어스택 (software stack)

More information

슬라이드 1

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

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

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

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

12 주차 인텐트

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

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

Endpoint Protector - Active Directory Deployment Guide

Endpoint Protector - Active Directory Deployment Guide Version 1.0.0.1 Active Directory 배포가이드 I Endpoint Protector Active Directory Deployment Guide 목차 1. 소개...1 2. WMI 필터생성... 2 3. EPP 배포 GPO 생성... 9 4. 각각의 GPO 에해당하는 WMI 연결... 12 5.OU 에 GPO 연결... 14 6. 중요공지사항

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Basic Widgets Jo, Heeseung Contents 뷰의개요 기본위젯다루기 기본위젯활용하기 2 뷰의개요 안드로이드화면에서실제로사용되는것은모두 View 클래스에서상속 이러한클래스를모두 ' 위젯 ' ( 또는뷰 ) 이라고도부름 위젯중에서다른위젯을담을수있는것들은주로 ViewGroup 클래스의하위에존재 이렇게다른위젯을담을수있는클래스를레이아웃이라고함 위젯

More information

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

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

More information

SBR-100S User Manual

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

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

01장

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

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

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

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

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이

Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이 모바일웹 플랫폼과 Device API 표준 이강찬 TTA 유비쿼터스 웹 응용 실무반(WG6052)의장, ETRI 선임연구원 1. 머리말 현재 소개되어 이용되는 모바일 플랫폼은 아이폰, 윈 도 모바일, 안드로이드, 심비안, 모조, 리모, 팜 WebOS, 바다 등이 있으며, 플랫폼별로 버전을 고려하면 그 수 를 열거하기 힘들 정도로 다양하게 이용되고 있다. 이

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

SIGIL 완벽입문

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

More information

NTD36HD Manual

NTD36HD Manual Upnp 사용 D7 은 UPNP 를지원하여 D7 의네크워크에연결된 UPNP 기기에별다른설정없이연결하여, 유무선으로네트워크상의연결된 UPNP 기기의콘텐츠를재생할수있습니다. TV 화면의 브라우저, UPNP 를선택하면연결가능한 UPNP 기기가표시됩니다. 주의 - UPNP 기능사용시연결된 UPNP 기기의성능에따라서재생되지않는콘텐츠가있을수있습니다. NFS 사용 D7

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt

이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt 1. 리스트뷰의구조 리스트뷰는어떤데이터그룹에대한각각의정보들을항목별로출력시키고사용자에게원하는항목을검색하거나선택할수있도록해주는컨트롤객체입니다. 그래서다른컨트롤처럼정해진형태의정보를저장하는것이아니기때문에리스트뷰가데이터를직접관리하기는힘들었을것입니다. 그래서효과적인데이터관리를위해 "ArrayAdapter" 라는클래스가추가되었고리스트뷰는이클래스를이용해서사용자가지정한데이터에접근하도록구현되어있습니다.

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

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

Microsoft Word - Armjtag_문서1.doc

Microsoft Word - Armjtag_문서1.doc ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor

More information

(Microsoft PowerPoint - \301\24613\260\255 - oFusion \276\300 \261\270\274\272)

(Microsoft PowerPoint - \301\24613\260\255 - oFusion \276\300 \261\270\274\272) 게임엔진 제 13 강 ofusion 씬구성 이대현교수 한국산업기술대학교게임공학과 학습목차 Ofusion 을이용한 export Export 된씬의재현 씬노드애니메이션을이용한수동카메라트래킹 ofusion OGRE3D 엔진용 3D MAX 익스포터 http://www.ofusiontechnologies.com ofusion 의특징 Realtime Viewport 3D

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

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

Install stm32cubemx and st-link utility

Install stm32cubemx and st-link utility STM32CubeMX and ST-LINK Utility for STM32 Development 본문서는 ST Microelectronics 의 ARM Cortex-M 시리즈 Microcontroller 개발을위해제공되는 STM32CubeMX 와 STM32 ST-LINK Utility 프로그램의설치과정을설명합니다. 본문서는 Microsoft Windows 7

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

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2> 게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc Visual Studio 2005 + Intel Visual Fortran 9.1 install Intel Visual Fortran 9.1 intel Visual Fortran Compiler 9.1 만설치해서 DOS 모드에서실행할수있지만, Visual Studio 2005 의 IDE 를사용하기위해서는 Visual Studio 2005 를먼저설치후 Integration

More information

Microsoft PowerPoint - 04기본위젯(Ver 1.0)

Microsoft PowerPoint - 04기본위젯(Ver 1.0) 04. 기본위젯익히기 IT CookBook, 안드로이드프로그래밍 학습목표 뷰와뷰상속을이해한다. 기본위젯을다루는방법을익힌다. 안드로이드앱의기본적인프로그래밍을숙달한다. Page 3 차례 Page 4 1. 뷰의개요 뷰와뷰그룹 안드로이드화면에서실제로사용되는것은모두 View 클래스에서상속을받으며, 이러한클래스를모두 ' 위젯 '( 또는뷰 ) 이라고도부름. 위젯중에서다른위젯을담을수있는것들은주로

More information

Microsoft PowerPoint - Windows CE Programming_2008 [호환 모드]

Microsoft PowerPoint - Windows CE Programming_2008 [호환 모드] Programming 고재관 Microsoft Mobile Device MVP Speaker 고재관 myaustin@korea.com Microsoft MVP 2006-2008 2008 Mobile Devices 분야 500 시간세미나 / 강의 실무경력 15 년메신저 Portable Device since 1995 집필도서 커뮤니티 http://myaustin.egloos.com

More information

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

13ÀåÃß°¡ºÐ

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

More information

[Brochure] KOR_TunA

[Brochure] KOR_TunA LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

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

노트북 IT / 모바일 데스크탑 34 올인원PC 35 PC 소프트웨어 포터블SSD / SSD / 메모리카드 36 태블릿 37 휴대폰 39 PC 솔루션 IT / 모바일 IT / 모바일 노트북 29 삼성전자는 Windows 를 권장합니다. 삼성전자만의 편리하고 다양한 소프트웨어를 통해 초보자도 보다 쉽고 빠르게 이용 가능합니다. Easy Settings 삼성 패스트

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

슬라이드 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

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information