HOME > 상세정보

상세정보

(나홀로 개발자를 위한) 안드로이드 프로그래밍의 모든 것 (20회 대출)

자료유형
단행본
개인저자
김지훈, 저 이지훈, 저 이현우, 저 김도균, 저
서명 / 저자사항
(나홀로 개발자를 위한) 안드로이드 프로그래밍의 모든 것 / 김지훈 [외] 지음
발행사항
의왕 :   에이콘,   2013  
형태사항
1220 p. : 삽화 ; 26 cm
총서사항
에어콘 모바일 프로그래밍 시리즈 = Mobile programming series ; 48
ISBN
9788960774018 9788960770836 (set)
일반주기
공저자: 이지훈, 이현우, 김도균  
색인수록  
000 00941camcc2200313 c 4500
001 000045748632
005 20130418204042
007 ta
008 130417s2013 ggka 001c kor
020 ▼a 9788960774018 ▼g 94560
020 1 ▼a 9788960770836 (set)
035 ▼a (KERIS)BIB000013084814
040 ▼a 211062 ▼c 211062 ▼d 211009
082 0 4 ▼a 005.268 ▼2 23
085 ▼a 005.268 ▼2 DDCK
090 ▼a 005.268 ▼b 2013z2
245 2 0 ▼a (나홀로 개발자를 위한) 안드로이드 프로그래밍의 모든 것 / ▼d 김지훈 [외] 지음
246 1 1 ▼a Android programming
260 ▼a 의왕 : ▼b 에이콘, ▼c 2013
300 ▼a 1220 p. : ▼b 삽화 ; ▼c 26 cm
440 0 0 ▼a 에어콘 모바일 프로그래밍 시리즈 = ▼x Mobile programming series ; ▼v 48
500 ▼a 공저자: 이지훈, 이현우, 김도균
500 ▼a 색인수록
700 1 ▼a 김지훈, ▼e
700 1 ▼a 이지훈, ▼e
700 1 ▼a 이현우, ▼e
700 1 ▼a 김도균, ▼e
945 ▼a KLPA

소장정보

No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.268 2013z2 등록번호 121224756 도서상태 대출가능 반납예정일 예약 서비스 B M

컨텐츠정보

책소개

오늘날 안드로이드는 가장 많이 사용되는 스마트폰 운영체제로 확고히 자리매김했고, 자바에 대한 지식만 있으면 누구나 쉽게 스마트폰 앱을 개발할 수 있다. 이 책은 초보자부터 전문가까지 모두 활용할 수 있도록 구글의 안드로이드 4.x의 모든 API와 유용한 예제들을 담았다. 이 책에서는 안드로이드 기초 위젯, 레이아웃, 이벤트, 액티비티와 프래그먼트, 구글 맵 같은 기초 주제부터 구글 앱 엔진 사용, GCM, SNS 연결 같은 고급 주제들을 곧바로 사용할 수 있는 뛰어난 예제로 자세하게 설명한다.

GoDev 사이트: http://www.godev.kr
페이스북 공식 페이지: http://facebook.com/AllThatAndroidProgramming

안드로이드 독립 개발자의 성공을 위한 첫걸음
앱을 직접 개발하고 수익을 창출한 저자진의 노하우가 녹아있는 실전 학습서


이 책에서는 안드로이드 개발의 기본 개념부터 실전 프로그래밍, 수익을 창출하는 방법까지 다룸으로써 학습한 내용이 단순 지식에만 그치지 않고 실제로 적용하고 응용할 수 있는 친절한 설명으로 가득 차 있다.

안드로이드의 초보자들이 접하는 가장 기본적인 개념부터 다양하게 응용할 수 있는 고급 기법과 대중적인 주요 IT 기술을 연동하는 방법을 망라했다.

이 책의 각 과정을 통해 독자는 안드로이드 개발의 필수 지식과 테크닉을 익히며, 안드로이드 독립 개발자의 성공을 위한 첫걸음을 내딛게 된다.

★ 이 책에서 다루는 내용 ★

■ 안드로이드 개념과 환경설정
■ 예제를 통한 안드로이드 기본 기능과 고급 기능의 학습
■ 실전 애플리케이션의 리뷰를 통한 애플리케이션 개발
■ 안드로이드 이외의 연관성이 있는 서버 사이드 개발 예제
■ 페이스북과 트위터의 SNS 개발 방법
■ 수익을 내기 위한 여러 가지 방법


★ 이 책의 특징 ★

■ 안드로이드 개발의 필수 노하우에 대한 친절하고 명쾌한 단계적 설명
■ 안드로이드 이외의 구글 앱 엔진, SNS 등 모바일 전반에 대한 학습
■ 예제를 통한 이론 학습과 주요 소스 제공
■ 단계마다 결과물과 함께 성취감을 자극하고 동기를 부여하는 학습
■ 최신 안드로이드 버전 젤리빈은 물론 이후 버전까지 고려한 생생한 지식
■ 페이스북 페이지와 저자 블로그를 통한 독자 지원


★ 이 책의 대상 독자 ★

이 책은 자바는 알지만 안드로이드는 모르는 사람을 대상으로 한다. 무엇보다도 안드로이드 기반 앱을 개발하고자 할 때 단지 안드로이드뿐 아니라 그를 둘러싼 환경도 알아야 하는데, 이 책은 이에 대한 정보도 제공한다. 예를 들면 서버를 위한 구글 앱 엔진과 SNS 연동, 광고 플랫폼 연계 등이 그것이다. 단지 디바이스단의 안드로이드 프로그램만을 작성해서는 원하는 프로그램을 작성하는 데 제약이 있다. 서버나 SNS 연동 등을 알아야 기술적인 제약 없이 원하는 대로 프로그램을 작성할 수 있다. 자바는 익숙하지만 안드로이드와 그 주변 환경에 관련된 제반 지식은 없는 초보자를 대상으로 하는 안드로이드 완벽 가이드다.


★ 이 책의 구성 ★

이 책은 4개의 부와 39개의 장으로 구성됐으며, 각 장에서 다루는 내용은 다음과 같다.

1장, 안드로이드 개요: 안드로이드의 기초 개념을 소개한다. 안드로이드의 기본 개념, 안드로이드 아키텍처, 아이스크림 샌드위치의 특징, 스마트폰과 태블릿의 차이점, 개발자 등록과 개발자 사이트 학습 등을 소개한다.

2장, 안드로이드 개발 환경: 안드로이드를 개발하기 위한 다양한 도구를 설치하고 설정하는 방법을 살펴본다. 이런 도구에는 JDK(Java Development Kit), 이클립스, ADT(Android Development Toolkit), AVD(Android Virtual Device) 등이 있다.

3장, 헬로 안드로이드: 쉽게 따라 할 수 있는 간단한 예제를 실습해보고, 추가 예제를 통해 안드로이드 프로젝트의 구조에 대해 학습한다.

4장, 기본 사용자 인터페이스: 안드로이드 프레임워크는 디바이스의 화면과 사용자가 상호작용할 수 있는 유용한 컴포넌트를 제공해준다. 또한 이 컴포넌트들을 화면에 배치할 수 있는 방법도 함께 제공한다. 따라서 안드로이드 개발을 위한 필수적이고 기본적인 화면 컴포넌트와 이를 배치하는 방법을 배운다.

5장, 레이아웃: 레이아웃은 위젯과 뷰를 화면에 배치하기 위한 객체로서, 뷰의 파생 클래스인 뷰 그룹의 하위 클래스다. 선형 레이아웃(Linear Layout), 상대 레이아웃(Relative Layout), 프레임 레이아웃(Frame Layout), 테이블 레이아웃(Table Layout) 등 안드로이드가 사용하는 기본 레이아웃을 소개한다.

6장, 이벤트 처리: 안드로이드에서는 사용자가 입력한 액션을 받아 처리하기 위한 여러 가지 방법이 있다. 시스템은 터치 등의 사용자 액션이 발생한 뷰 객체에서 이벤트를 받아 이를 뷰 객체에게 다시 전달해서 이벤트를 처리한다. 이와 같은 이벤트 처리에 대해 알아본다.

7장, 대화상자: 대화상자는 일반적으로 현재 활성화된 액티비티(Activity) 앞에 나타나는 조그마한 윈도우 창을 일컫는 말이다. 프로그램의 실행 중에 사용자로부터 즉시 받아야 할 피드백이나 응답을 받아 진행해야 하는 경우, 기존 화면을 비활성화시키고 대화상자를 띄워 응답을 기다린다. 이런 대화상자를 활용하는 방법을 알아본다.

8장, 노티피케이션: 특정 상황에서는 프로그램이 사용자에게 어떤 이벤트를 알려 줘야 할 경우가 발생한다. 어떤 이벤트들은 사용자로부터 피드백을 받아야 할 때도 있고 피드백이 불필요할 경우도 있다. 이렇게 사용자에게 이벤트를 알려줘야 하는 기능을 제공하는 노티피케이션에 대해 알아본다.

9장, 메뉴: 메뉴는 화면에서 사용자가 어떤 액션을 취하는 데 있어서 사용자에게 친숙한 인터페이스다. 안드로이드에서는 옵션 메뉴와 컨텍스트 메뉴, 서브 메뉴의 세 가지 기본적인 메뉴 형태를 제공한다. 9장에서는 이와 같은 메뉴를 만들고 활용하는 방법을 알아본다.

10장, 고급 뷰와 위젯: 날짜나 시간을 선택할 수 있는 날짜 피커, 타임 피커, 진도나 순위를 표시해 줄 수 있는 프로그레스 바(Progress Bar), 시크 바(Seek Bar), 레이팅 바(Rating Bar)와 탭 뷰(Tab View), 맵 뷰(Map View), 웹 뷰(Web View) 등을 설명한다.

11장, 액션 바: 액션 바는 애플리케이션과 사용자가 보고 있는 현재 화면의 위치를 구별할 수 있게 해주고, 사용자 액션과 내비게이션을 지원해준다. 유저 액션이나 글로벌 내비게이션이 필요할 경우에는 모든 액티비티에 액션 바를 달 수 있다. 액션 바는 애플리케이션이 아닌 시스템에서 제공되는 인터페이스를 사용한다. 이런 액션 바를 다는 방법을 알아본다.

12장, 드래그앤드롭: 안드로이드 드래그앤드롭(Drag and Drop) 프레임워크를 통해 현재 레이아웃에 있는 뷰에서 다른 뷰로 드래그앤드롭 제스처로 데이터를 옮길 수 있다. 이 프레임워크는 드래그 이벤트 클래스, 드래그 리스너, 기타 도우미 메소드를 제공한다. 드래그앤드롭 프레임워크의 목적은 데이터의 이동이긴 하지만 이를 다른 곳에 응용이 가능하다. 10장에서는 그에 관련된 방법을 알아본다.

13장, 스타일과 테마: 스타일은 뷰와 윈도우의 외관과 형태를 지정하는 속성의 모음이라고 볼 수 있다. 스타일은 너비, 높이, 폰트, 패딩, 폰트 색깔, 폰트 크기, 백그라운드 컬러를 지정하는 속성이다. 스타일은 xml 리소스를 이용해 정의한다. 안드로이드의 스타일에 대한 개념은 HTML의 CSS와 유사한 것으로, 콘텐트와 디자인을 분리했다. 이러한 스타일과 테마에 대해 알아본다.

14장, 어댑터 뷰: 어댑터 뷰는 데이터를 바인딩하는 어댑터(Adapter)를 가진 뷰 그룹의 서브 클래스다. 어댑터 뷰는 저장된 데이터를 보여줄 때 아주 유용하다. 어댑터는 어댑터 뷰와 데이터를 중개해주는 역할을 한다고 보면 된다. 14장에서는 어레이 어댑터(ArrayAdapter), 커서 어댑터(CursorAdatper), 심플 커서 어댑터(SimpleCursorAdapter) 등에 대해 알아본다.

15장, 애플리케이션 리소스: 안드로이드의 애플리케이션 코드에서 사용하는 이미지나 문자열 등의 리소스들은 모두 별도로 저장해야 한다. 리소스 타입과 리소스를 관리하는 방법, 기본 리소스와 대체 리소스 관리 방법, 리소스를 자바 코드상에서 접근하고 사용하는 방법, 런타임 시에 리소스를 변경하는 방법, 지역화하는 방법 등을 알아본다.

16장, 프로세스와 스레드: 기본적으로는 동일한 애플리케이션의 모든 컴포넌트는 동일한 프로세스나 스레드에서 수행되는데, 경우에 따라 애플리케이션 컴포넌트를 다른 프로세스나 추가 스레드에서 실행하게 할 수 있다. 안드로이드에서의 프로세스의 개념과 생명주기, 안드로이드에서의 스레드 개념과 종류에 대해 알아본다.

17장, 그래픽: 애플리케이션을 만들 때 그래픽은 요구 사항의 중요한 부분을 차지한다. 안드로이드에서 그래픽은 이미지, 도형, 애니메이션 등을 의미한다. 일반적인 애플리케이션의 그래픽과 애니메이션, 게임 애플리케이션의 그래픽과 애니메이션은 구현 방법이 달라진다. 캔버스와 뷰를 이용해 그리기, 서피스(Surface) 뷰를 이용해 그리기, 드로우어블(Drawable) 객체와 나인패치, 하드웨어 가속의 개념에 대해 알아본다.

18장, 안드로이드 매니페스트 파일: 매니페스트 파일(AndroidManifest.xml)은 애플리케이션의 구성 요소와 관련된 정보를 담고 있는 파일이다. 실행에 필요한 권한과 실행 방식, 애플리케이션의 진입점, 테마 등 다양한 정보를 매니페스트 파일에 정의한다. 매니페스트 파일의 구조, 매니페스트 파일의 규약, 매니페스트 파일의 특징에 대해 알아본다.

19장, 액티비티와 프래그먼트: 액티비티는 애플리케이션의 중요 구성 요소 중 하나로, 사용자에게 보이는 화면을 제공한다. 액티비티는 코드가 순차적으로 실행되는 것이 아니라 사용자의 액션에 따른 이벤트 및 상황이 각 역할을 할 수 있게 구성돼 있는 시스템이다. 또한 허니콤 버전부터 등장한 프래그먼트도 빠질 수 없는 내용이다. 액티비티 생명주기, 프래그먼트 개요, 예제를 통해 액티비티와 프래그먼트를 실습해본다.

20장, 콘텐트 프로바이더: 콘텐트 프로바이더(Content Provider)는 애플리케이션의 데이터를 외부로 공개하고 공유하는 기능이다. 20장에서는 콘텐트 프로바이더 개요, 콘텐트 프로바이더 사용법, 콘텐트 프로바이더 작성법, 캘린더 프로바이더에 대해 알아보고, 마지막으로 예제를 통해 마무리한다.

21장, 서비스: 서비스는 사용자 인터페이스를 제공하지 않으면서 긴 시간이 걸리는 작업을 백그라운드에서 수행하는 애플리케이션의 구성 요소다. 서비스의 개요와 서비스 생성에 대해 알아본다.

22장, 브로드캐스트 리시버: 안드로이드는 디바이스의 변화가 있을 때마다 브로드캐스트 신호를 보낸다. 애플리케이션에서는 필요한 경우 브로드캐스트 리시버(Broadcast Receiver)를 구현해 브로드캐스트를 수신하고 적절하게 대응할 수 있다. 인텐트와 인텐트 필터, 인텐트 처리, 브로드캐스트 리시버의 사용법과 사용 예에 대해 알아본다.

23장, 음성 통화, 문자 메시지: 스마트폰 상태 정보 조회, 전화 걸기, 전화 수신 시 처리, 통화 및 문자 이력 조회, 문자 메시지 보내기, 문자 메시지 캡처, 주소록 관리 등에 대해 알아본다.

24장, 멀티미디어: 간단한 소리 내기, 오디오와 비디오 재생, 오디오 녹음, 카메라를 이용한 사진 및 동영상 촬영, 텍스트를 음성으로, 음성을 텍스트로 변환하기, 미디어스토어(MediaStore) 등에 대해 알아본다.

25장, 데이터 관리: 안드로이드에서 데이터는 파일과 프레퍼런스Preference, 데이터베이스 등에 저장된다. 데이터베이스를 사용한 데이터 관리, 프레퍼런스를 사용한 데이터 관리, 파일을 사용한 데이터 관리에 대해 알아본다.

26장, 애니메이션: 안드로이드 프레임워크는 세 종류의 애니메이션 시스템을 제공한다. 프로퍼티 애니메이션(안드로이드 3.0 이상)과 뷰 애니메이션이 주로 사용된다. 프로퍼티 애니메이션을 사용한 애니메이션 효과, 뷰 애니메이션을 사용한 애니메이션 효과, 인터폴레이터(Interpolator) 사용과 작성, 프레임 애니메이션을 사용한 애니메이션 효과 등을 소개한다.

27장, 센서와 전원 관리: 센서와 전력 관리 부분을 다룬다. 안드로이드 SDK를 제공하는 입장에서는 서로 다른 성질의 주제라고 간주해 포함하는 패키지가 다르지만, SDK를 사용하는 입장에서는 하드웨어 조작이라고 간주해 하나의 장으로 묶었다. 센서 공통 개념과 프레임워크, 개별 센서에서 제공하는 데이터의 의미, 전력 관리를 다룬다.

28장, 위치 서비스와 지도: android.location 패키지와 구글 맵 라이브러리를 사용해 위치 기반 애플리케이션을 작성한다. android.location 패키지는 안드로이드 디바이스에 기본적으로 포함돼 있는 라이브러리이고, 구글 맵 라이브러리는 애플리케이션과 함께 배포해야 하는 외부 라이브러리다. 사용자 위치 파악하기, 근접 경보 이용하기, 지도를 사용한 위치 표시하기 등을 알아본다.

29장, 앱 위젯과 라이브 월 페이퍼: 앱 위젯과 라이브 월 페이퍼가 외부적으로는 일반 애플리케이션과 다르게 보이지만, 내부적으로는 각각 브로드캐스트 리시버와 서비스로 구현된다. 앱 위젯은 홈 화면의 일부분을 사용하는 애플리케이션이고, 라이브 월 페이퍼는 라이브 배경 화면이라고도 하는데, 홈 화면의 거의 전체를 사용한다. 앱 위젯 작성하기, 라이브 월 페이퍼 작성하기에 대해 알아본다.

30장, 디바이스 간 통신: 블루투스(Bluetooth)와 근거리 무선 통신(NFC), 그리고 와이파이 다이렉트(Wi-Fi Direct)에 대해 다룬다. 블루투스 개념과 블루투스를 사용한 데이터 주고받기, NFC 개념과 NFC를 사용한 데이터 주고받기, 와이파이 다이렉트 개념과 와이파이 다이렉트를 사용한 데이터 주고받기에 대해 알아본다.

31장, 구글 앱 엔진과 디바이스 간 통신: 구글 앱 서버와 디바이스 간 통신을 다룬다. 앱 엔진 개발 환경 준비하기, 앱 엔진에 올라가는 웹 모듈 작성하기, 앱 엔진의 웹 모듈 테스트 하기, 안드로이드 디바이스의 통신 모듈 작성하기, 통신 모듈을 사용해 서버 호출하기에 대해 알아본다.

32장, GCM 서비스: GCM(Google Cloud Message) 서비스는 서버가 안드로이드 디바이스를 직접 호출할 수 있게 해주는 구글의 서비스다. GCM 서비스를 사용하기 위한 사전 준비 작업, GCM 기능과 아키텍처, GCM을 위한 클라이언트 작성하기, GCM을 위한 써드파티 서버 모듈 작성하기에 대해 알아본다.

33장, SNS 활용: SNS(Social Network Service) 연동에 대해 알아본다. 일단 대표적 SNS인 페이스북(facebook)과 트위터(twitter)에 대해 살펴보고 안드로이드와 연동하는 방법을 알아본다. SNS의 개요, 트위터 연동, 페이스북 연동에 대해서도 알아본다.

34장, 앱 엔진과 LBS를 이용한 아이 지킴이: C2DM(Cloud to Device Message)과 위치 기반 서비스, C2DM의 써드파티 서버가 되는 구글 앱 엔진(Google app engine)을 활용한 '아이 지킴이' 애플리케이션을 실전 예제로 설명한다.

35장, 선형 가속도계와 애니메니션 효과를 사용한 BabyShake: 선형 가속도 센서는 디바이스에 적용되는 가속도를 측정한다. 프로퍼티 애니메이션은 안드로이드 3.0(API level 11)에서 소개됐다. 안드로이드는 간단한 소리 재생을 위해 SoundPool 클래스를 제공하고, 이는 대략 1MB 이하의 음성 파일을 재생하는 데 적합하다. 화면이 자동으로 꺼지는 것을 방지하기 위해 PowerManager 클래스를 사용한다. 이 네 가지 안드로이드 장치를 기반으로 유아용 앱을 실전 예제로 설명한다.

36장, NFC와 블루투스를 이용한 음악 공유 앱: NFC는 주로 결제나 태그 정보를 읽기 위해 사용되고, 블루투스는 기기 간에 근거리에서 데이터를 주고받는 용도로 주로 이용한다. 블루투스의 경우 기기 간에 연결을 위해 블루투스 맥주소를 주고받는 페어링이 수작업으로 선행돼야 한다. 36장에서는 안드로이드 시스템에서 제공하는 NFC를 이용해 자동으로 블루투스 페어링을 하고, 기기 간에 음악을 스트리밍으로 전송하는 앱을 실전 예제로 설명한다.

37장, 앱스토어: 작성된 앱은 앱스토어라고 불리는 마켓들을 통해 배포가 가능하다. 아이폰의 경우에는 애플에서 전 세계에 단 하나의 앱스토어를 운영한다. 그러나 안드로이드의 경우에는 수많은 마켓이 있다. 글로벌 마켓을 생각한다면 구글 플레이, 국내시장을 공략하려면 SK텔레콤의 T스토어를 추천한다. 구글 플레이와 SK텔레콤 T스토어에 대해 알아본다.

38장, 광고 플랫폼: 스마트폰 시장이 급격하게 성장함에 따라 통신사, 포털 업체에서 앞 다퉈 모바일 네트워크 광고 상품을 출시하고 있다. 이러한 광고 플랫폼 중 구글의 애드몹(Admob)과 다음의 아담(Ad@m)을 활용하는 방법을 알아본다.

39장, 개인 앱 비즈니스: 모바일 애플리케이션에서 수익을 내는 방법과, 사용자의 거부감 및 부담을 최소화하면서 수익을 낼 수 있는 모바일 광고에 대해 알아본다. 광고 플랫폼은 구글의 애드몹을 사용해 설명한다. 수익을 내기 위한 방법과 모바일 광고 구현 방법에 대해 구체적으로 알아본다.


★ 저자 서문 ★

"책을 출간하기로 했는데 같이 하실래요?" 후배 현우의 이 한마디로 책을 쓰는 데 동참하게 됐다. 대부분의 시간을 SI 프로젝트에 기술 지원으로 떠돌아다니다 보니 책을 쓰기는커녕 부실한 몸이 삐거덕거려도 자리를 비우기가 눈치 보여 더 망가지는 시간을 보냈다. 겨우 책을 쓸 수 있는 환경과 기회를 갖게 됐음에도, 결과물을 보니 아쉬움이 또 마음을 채운다. 변명을 하자면 모바일 분야가 변동이 많아 책을 쓰는 와중에도 원고 내용을 수시로 바꿔야 했다. 또 나름대로 규율이 있는 대기업에서 책을 쓰다 보니 시간적 제약이 많아 리소스를 충분히 투입하지 못했다. 그럼에도 좋은 분들과 같이 책을 쓰게 돼 감사할 뿐이다.

이 책을 보는 독자들에게 전하고 싶다. 이 책을 보면 정말 안드로이드의 모든 것을 다 알게 될까? 솔직히 말하면, 그렇지는 않다. 물론, 시중에 나와 있는 저서에 비해 좀 더 많은 주제를 다룬 것은 사실이다. 하지만 책 한 권으로 모든 것을 다 알기를 원한다면 이는 도둑 심보다. 무엇보다도 다 알 필요가 없으며, 출발할 수 있는 시작점만 잡을 수 있으면 된다. 이 책은 안드로이드부터 그 주변 환경, 예를 들면 서버 연결까지 총망라해 다루기 때문에 이 책을 이해한다면 대부분의 안드로이드 애플리케이션을 개발할 때 어디서부터 출발해야 하는지, 어떤 기술을 사용해야 하는지 막막해 하는 경우는 없게 될 것이다.

글을 마무리하며, 시를 하나 소개하고자 한다.

Once more into the fray
Into the last good fight I'll ever know
Live and die on this day
Live and die on this day

다시 한 번 싸움 속으로
내가 맞이할 최후 최고의 싸움 속으로
오늘 살고 또 죽을 것이다.
오늘 살고 또 죽을 것이다.

영화 ?더 그레이?의 마지막 장면에서 배우 리암 니슨이 읊는 시다. 밥벌이의 지겨움이란 밥벌이를 못하게 됐을 때 사라지게 될까? 오늘 살고 또 죽을 싸움(?)을 찾는 날 밥벌이의 지겨움도 사라질 것이다.

나도 그리고 이 책을 읽는 독자도 그러한 자신에게 의미 있는 일을 찾을 수 있기를 바란다.

- 김지훈


지난 10여 년 동안 자바를 이용해 프로그램을 작성해 왔지만, 책을 쓰는 것은 결코 쉽지 않은 작업이었다. 안드로이드의 버전이 매우 빠르게 변하고 있어 필요한 모든 것을 책에 담아내기에는 거의 불가능할 정도로 어려운 일이었다. 거의 모든 안드로이드 SDK의 API를 살펴보고 2년 동안 앱을 만들던 경험을 살려, 이 책에 안드로이드 앱 개발에 필요한 내용을 모두 수록했다.

2011년 겨울 집필 아이디어를 구상해 이를 실천에 옮기고, 모두 한마음이 돼 이번 프로젝트를 진행한 GoDev 멤버들에게 감사를 전하고 싶다. 함께 열정적으로 프로젝트를 진행한 시간들은 미래를 위한 값진 시간으로 기억될 것이다.

- 이지훈


이 책을 기획하고 집필하면서 단순히 API만 전달하는 이상의 것을 독자들에게 전달하고 싶었다. 책을 집필하면서 많은 사건과 시련이 있었지만, 안드로이드 앱을 만들고 마켓에 선보이고 광고를 심어 수익을 냈던 경험을 충분히 전달하기 위해 많은 노력을 한 듯하다. 물론 내 생각을 책으로 옮긴다는 것이 쉬운 일은 아니었다. 애초의 생각과 다르게 내용이 전달됐을지도 모르겠다. 그런 경우는 GoDev(www.godev.kr) 사이트나 페이스북 페이지를 통해 독자들과 의견을 나누고 필요하면 토론도 해보고 싶다.

- 이현우


처음 이 책에 대한 아이디어가 떠올라 이현우 감리사와 대화를 나눴던 시간이 떠오릅니다. 제 아이디어에 너무나 빨리 동의해버린 턱에 우리는 바로 기초 자료를 들고 에이콘 출판사의 김희정 부사장님과 마주했습니다. 우리의 생각을 전하고, 오랫동안 출판의 경험을 가진 부사장님의 피드백이 신랄하게 오고가면서 바로 그날 이 책의 출판이 결정됐습니다. 이제 출간을 앞두고 저자 서문을 쓰고 있는 지금 그때, 그 시간에 한 결정으로 인해 지금의 저자들을 어떻게 결속시켜왔는지, 그리고 서로를 격려해왔는지 다시금 돌아보게 됩니다.

시중에 이미 많은 안드로이드 관련 서적들이 나와 있지만, 우리는 안드로이드의 버전 변경에 영향을 덜 받고 좀 더 실제적인 책을 쓰고 싶었습니다. 그래서 기존에 봤던 많은 안드로이드 책에서 어떤 점이 좋았고, 어떤 점이 불편했는지, 또 부족했는지를 알아내려고 함께 많이도 모였던 것 같습니다. 이 책은 분명 독자들의 가려운 부분을 긁어줄 수 있으리라 생각합니다. 저희는 공부하는 개발자와 같이 함께 동행하고자 하는 꿈을 꾸고 있습니다. 이 책을 통해 안드로이드 프로그래밍에 한걸음 더 쉽게 다가갈 수 있기를 기대해 봅니다.

- 2013년 인생의 새로운 봄을 맞이하며
김도균


정보제공 : Aladin

저자소개

김도균(지은이)

2012년 회사 조직 일원으로서의 15년 삶을 정리한 뒤, 독립 IT 기술자가 되어 6년째 자기 시간의 주인으로 포트폴리오 인생을 살고 있다. 2003년, 처음 『Beginning Direct3D 게임 프로그래밍』을 번역한 이후로 지금까지 30여 권의 책을 번역했다. 에이콘출판사에서 출간한 『Azure와 도커를 활용한 마이크로서비스 구현』(2017) , 『Essential C# 6.0 한국어판』(2016), 『Essential C# 5.0 한국어판』(2014), 『처음 배우는 C#』(2015), 『MOS 2013 Microsoft PowerPoint』(2015), 『MOS 2013 Microsoft Word Expert』(2015), 『The C# Programming Language (Fourth Edition) 한국어판』(2012) , 『윈도우 7 완벽 가이드』(2010)를 번역했다. 개발자를 위한 IT 매거진 [마이크로소프트웨어]에 오랫동안 기술자와 삶에 관해 칼럼을 써오고 있으며, 『나홀로 개발자를 위한 안드로이드 프로그래밍의 모든 것』(2013)을 비롯해 여러 권의 저서에 참여했다. 17년 차 마이크로소프트의 공인 강사(MCT)이며, 마이크로소프트 MVP를 6회 수상했다. 마이크로소프트 기술 교육 전문 기업인 LearningWay의 대표 강사로 활동하고 있고, 독립 IT 기술자의 저술?번역.강연 상호부조 네트워크인 GoDev(www.godev.kr)에서 해적들을 이끌고 있는 선장이다.

김지훈(지은이)

동국대학교 컴퓨터공학과를 나왔으며, 홍익대학교 대학원 컴퓨터공학과에서 시스템 프로그래밍을 전공해 석사 학위를 받았다. LG CNS에서 SW 아키텍트를 수행했으며, KT ds에서 연구원을 지냈고 현재는 정보기술감리원에서 감리사로 근무 중이다. 안드로이드, HTML5, 빅데이터, 보안 분야에서 저술과 번역 작업을 수행했으며, 정보시스템 감리에서 주로 수행하는 분야는 시스템 구조 및 보안 분야이다.

이지훈(지은이)

기계공학을 전공했지만 자바 웹 개발을 시작으로 안드로이드/iOS 기반의 앱을 개발했으며, 최근 몇 년간은 하둡과 스파크 및 딥러닝에 관련된 소프트웨어를 개발해왔다. 또한 IT 관련 서적의 저자 및 번역가로도 활동한다. 『나홀로 개발자를 위한 안드로이드』(에이콘, 2013), 『Java 프로그래밍 입문』(북스홀릭퍼블리싱, 2013)을 저술했고, 『프로그래머를 위한 안드로이드』(정보문화사, 2015), 『Android Internals Vol.1』(에이콘, 2016), 『스위프트로 하는 iOS 9 프로그래밍』(에이콘, 2016), 『대용량 머신 러닝과 스파크』(에이콘, 2018) 등 수십 권의 책을 번역했다.

이현우(지은이)

대한민국 공군 장교로 방공전산서버 운영을 하면서 IT 관련 경력을 시작했다. 이후 LG CNS에서 차세대 응용개발 프로그램을 수행했으며, 모바일 개발에 관심을 가지고 KT ds 연구소의 모바일 플랫폼 개발을 수행했다. 이후 정보시스템감리사 자격증을 취득한 후 한국 공공기관의 정보시스템 감리업무를 수행하고 있으며, IBK기업은행, 삼성생명, 산업은행, 한국전력 등의 많은 공공기관의 감리 업무를 수행했다. IT 강의를 하는 것을 좋아하며 시큐어코딩 및 데이터베이스, 자바프로그램에 대한 강의를 한국전력 및 한국소프트웨어 기술진흥협회(KOSTA), 한국ICT융합협동조합 등에서 수행했다. 최근 화제가 되고 있는 워라벨을 중시하며, 매번 어제보다 나은 오늘이 되기 위해서 노력하지만 매번 부족함을 느끼고 있는 개발자이다.

정보제공 : Aladin

목차

목차
지은이 소개 = 4 
지은이의 말 = 6 
들어가며 = 29 
Ⅰ부 안드로이드 기초 = 37 
 1장 안드로이드 개요 = 39  
  1.1 안드로이드의 특징 = 39  
  1.2 안드로이드 아키텍처 = 42  
  1.3 안드로이드 기초 지식 = 45  
  1.4 새로운 기능 = 51  
  1.5 스마트폰과 태블릿 = 59  
  1.6 개발자 등록 = 64  
  1.7 개발자 사이트 = 70  
  1.8 정리 = 75  
 2장 안드로이드 개발 환경 = 77  
  2.1 JDK 설치와 구성 = 78  
  2.2 안드로이드 SDK 설치와 구성 = 80  
  2.3 이클립스 설치 = 82  
  2.4 ADT와 AVD = 86  
  2.5 편리한 개발을 위한 설정 = 91  
  2.6 정리 = 93  
 3장 헬로 안드로이드 = 95  
  3.1 안드로이드 프로젝트 = 95  
  3.2 HelloAndroid 프로젝트 분석 = 103  
  3.3 빌드와 실행 = 116  
  3.4 정리 = 118  
Ⅱ부 기본 API = 119
 4장 기본 사용자 인터페이스 = 121  
  4.1 뷰 = 121  
  4.2 뷰의 속성 = 124  
  4.3 텍스트 뷰 = 129  
  4.4 이미지 뷰 = 135  
  4.5 스크롤 뷰 = 137  
  4.6 기본 위젯 = 139  
  4.7 정리 = 150  
 5장 레이아웃 = 151  
  5.1 선형 레이아웃 = 151  
  5.2 상대 레이아웃 = 157  
  5.3 테이블 레이아웃 = 159  
  5.4 프레임 레이아웃 = 163  
  5.5 레이아웃 인플레이션 = 165  
  5.6 정리 = 172  
 6장 이벤트 처리 = 173  
  6.1 이벤트 구조 = 173  
  6.2 클릭 이벤트(OnClick) = 179  
  6.3 키 이벤트(OnKey) = 181  
  6.4 터치 이벤트(OnTouch) = 183  
  6.5 롱 클릭 이벤트(OnLongClick) = 188  
  6.6 포커스 이벤트(OnFocusChange) = 190  
  6.7 정리 = 193  
 7장 대화상자 = 195  
  7.1 주요 대화상자 서브클래스 = 195  
  7.2 알림 대화상자 = 198  
  7.3 프로그레스 대화상자 = 211  
  7.4 커스텀 대화상자 = 213  
  7.5 대화상자 프래그먼트 = 216  
  7.6 AlertDialog 프래그먼트 = 223  
  7.7 정리 = 226  
 8장 노티피케이션 = 227  
  8.1 노티피케이션의 종류 = 228  
  8.2 토스트 노티피케이션 = 229  
  8.3 상태 바 노티피케이션 = 233  
  8.4 커스텀 노티피케이션 = 237  
  8.5 리치 노티피케이션 = 239  
  8.6 정리 = 246  
 9장 메뉴 = 247  
  9.1 메뉴 리소스 = 247  
  9.2 옵션 메뉴 = 250  
  9.3 컨텍스트 메뉴 = 252  
  9.4 서브메뉴 = 254  
  9.5 메뉴의 부가 기능 = 255  
  9.6 정리 = 258  
 10장 고급 뷰와 위젯 = 259  
  10.1 날짜 피커 = 259  
  10.2 타임 피커 = 264  
  10.3 프로그레스 바 = 269  
  10.4 맵 뷰 = 274  
  10.5 웹 뷰 = 286  
  10.6 정리 = 289  
 11장 액션 바 = 291  
  11.1 액션 바 개요 = 291  
  11.2 액션 바 디자인 가이드라인 = 293  
  11.3 액션 바 설정과 액션 아이템 = 298  
  11.4 태스크와 백 스택 = 303  
  11.5 액션 뷰 추가 = 308  
  11.6 액션 프로바이더 추가 = 310  
  11.7 내비게이션 탭 추가 = 314  
  11.8 드롭다운 내비게이션 추가 = 320  
  11.9 액션 바 스타일 = 323  
  11.10 정리 = 326  
 12장 드래그앤드롭 = 327  
  12.1 드래그앤드롭 액션 = 327  
  12.2 복사와 붙여넣기 = 328  
  12.3 드래그앤드롭 프로세스 = 333  
  12.4 드래그 이벤트 다루기 = 334  
  12.5 정리 = 341   
 13장 스타일과 테마 = 343
  13.1 스타일 개요 = 344  
  13.2 스타일과 테마의 사용법 = 347  
  13.3 시스템 테마 = 350  
  13.4 정리 = 353  
 14장 어댑터 뷰 = 355  
  14.1 어댑터 뷰 = 355  
  14.2 리스트 뷰 = 357  
  14.3 그리드 뷰 = 360  
  14.4 스피너 = 365  
  14.5 갤러리 = 369  
  14.6 자동 완성 = 373  
  14.7 정리 = 375  
 15장 애플리케이션 리소스 = 377  
  15.1 리소스 관리 = 377  
  15.2 리소스 사용 = 389  
  15.3 실행 중 설정 변경 = 393  
  15.4 지역화 = 397  
  15.5 정리 = 403  
 16장 프로세스와 스레드 = 405  
  16.1 프로세스 = 405
  16.2 스레드 = 408   
  16.3 스레드 예제 = 411  
  16.4 정리 = 417  
 17장 그래픽 = 419 
  17.1 캔버스와 그리기 객체 = 419  
  17.2 하드웨어 가속 = 443  
  17.3 정리 = 448  
 18장 안드로이드 매니페스트 파일 = 449  
  18.1 매니페스트 파일의 구조 = 449  
  18.2 매니페스트 파일 규약 = 482  
  18.3 매니페스트 파일의 특징 = 484  
  18.4 정리 = 485  
 19장 액티비티와 프래그먼트 = 487  
  19.1 액티비티 = 487  
  19.2 프래그먼트 = 504  
  19.3 정리 = 515  
 20장 콘텐트 프로바이더 = 517  
  20.1 콘텐트 프로바이더 개요 = 518  
  20.2 콘텐트 프로바이더 사용 = 519  
  20.3 콘텐트 프로바이더 예제 = 524  
  20.4 콘텐트 프로바이더 작성 = 527  
  20.5 캘린더 프로바이더 = 531  
  20.6 프로바이더 실습 예제 = 559  
  20.7 정리 = 567  
 21장 서비스 = 569  
  21.1 서비스 개요 = 569  
  21.2 서비스 생성 = 571  
  21.3 바운드 서비스 = 582  
  21.4 정리 = 592  
 22장 브로드캐스트 리시버 = 593  
  22.1 인텐트와 인텐트 필터 = 593  
  22.2 브로드캐스트 개요 = 601  
  22.3 정리 = 608  
Ⅲ부 고급 API 활용 = 609  
 23장 음성 통화, 문자 메시지 = 611  
  23.1 핸드폰 상태 정보 조회 = 611  
  23.2 전화 걸기 = 621  
  23.3 전화 수신 처리 = 623  
  23.4 통화, 문자 이력 조회 = 627  
  23.5 문자 보내기 = 633  
  23.6 문자 캡처 = 638  
  23.7 주소록 관리 = 642  
  23.8 정리 = 657  
 24장 멀티미디어 = 659  
  24.1 간단한 소리내기 = 660  
  24.2 오디오와 비디오 재생 = 666  
  24.3 오디오 녹음 = 679
  24.4 사진과 동영상 촬영 = 685  
  24.5 텍스트와 음성 간 상호 변환 = 699  
  24.6 미디어스토어 = 709  
  24.7 정리 = 710  
 25장 데이터 관리 = 711  
  25.1 데이터베이스 = 712  
  25.2 프레퍼런스 = 726  
  25.3 파일 = 741  
  25.4 정리 = 748  
 26장 애니메이션 = 749  
  26.1 프로퍼티 애니메이션 = 750  
  26.2 뷰 애니메이션 = 788  
  26.3 인터폴레이터 = 799  
  26.4 프레임 애니메이션 = 801  
  26.5 정리 = 803  
 27장 센서와 전원 관리 = 805 
  27.1 센서 = 805  
  27.2 전원 관리 = 833  
  27.3 정리 = 839  
 28장 위치 서비스와 지도 = 841  
  28.1 위치 서비스 = 841  
  28.2 지도 = 856  
  28.3 정리 = 871  
 29장 앱 위젯과 라이브 월 페이퍼 = 872  
  29.1 앱 위젯 = 873  
  29.2 라이브 월 페이퍼(라이브 배경 화면) = 899  
  29.3 정리 = 909  
 30장 디바이스 간 통신 = 911  
  30.1 블루투스 = 911  
  30.2 NFC = 952  
  30.3 와이파이 다이렉트 = 972  
  30.4 정리 = 987  
 31장 구글 앱 엔진과 디바이스 간 통신 = 989  
  31.1 구글 앱 엔진 사용 = 989  
  31.2 클라이언트 모듈 작성 = 1016  
  31.3 정리 = 1025  
 32장 GCM 서비스 = 1027  
  32.1 GCM 사전 준비 작업 = 1027  
  32.2 GCM 서비스의 주요 기능 = 1030  
  32.3 GCM 아키텍처 = 1031  
  32.4 GCM의 생명주기 흐름 = 1032  
  32.5 GCM을 사용하는 안드로이드 애플리케이션 작성 = 1035  
  32.6 써드파티 애플리케이션 서버 = 1043  
  32.7 구글 gcm 데모 분석 = 1046  
  32.8 GCM과 C2DM 차이점 = 1049  
  32.9 정리 = 1049  
 33장 SNS 활용 = 1051  
  33.1 SNS의 개요 = 1051  
  33.2 트위터 연동 = 1052  
  33.3 페이스북 연동 = 1064  
  33.4 정리 = 1080 
Ⅳ부 실전 편 = 1081 
 34장 앱 엔진과 LBS를 이용한 아이 지킴이 = 1083 
  34.1 스토리 보드 작성 = 1084 
  34.2 애플리케이션 설계 = 1085 
  34.3 애플리케이션 구현 = 1087 
  34.4 정리 = 1100 
 35장 선형 가속도계와 애니메이션 효과를 사용한 BabyShake = 1101 
  35.1 스토리 보드 작성 = 1101 
  35.2 애플리케이션 설계 = 1103 
  35.3 애플리케이션 구현 = 1105 
  35.4 정리 = 1113 
 36장 NFC와 블루투스를 이용한 음악 공유 앱 = 1115 
  36.1 스토리보드 작성 = 1115 
  36.2 애플리케이션 설계 = 1116 
  36.3 애플리케이션 구현 = 1118 
  36.4 정리 = 1145 
 37장 앱스토어 = 1147
  37.1 구글 플레이 = 1147 
  37.2 SK텔레콤 T스토어 = 1155 
  37.3 정리 = 1164 
 38장 광고 플랫폼 = 1165 
  38.1 구글 애드몹 = 1165 
  38.2 다음 아담 = 1171 
  38.3 정리 = 1176 
 39장 개인 앱 비즈니스 = 1177 
  39.1 무료 애플리케이션과 유료 애플리케이션 = 1177 
  39.2 광고 연동 = 1179 
  39.3 수익금 가져오기 = 1187 
  39.4 정리 = 1192 
찾아보기 = 1193

관련분야 신착자료