Top

나홀로 개발자를 위한 안드로이드 프로그래밍의 모든 것

  • 지은이김지훈, 이지훈, 이현우, 김도균
  • ISBN : 9788960774018
  • 50,000원
  • 2013년 02월 22일 펴냄 (절판)
  • 페이퍼백 | 1,232쪽 | 188*250mm
  • 시리즈 : 모바일 프로그래밍

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

오늘날 안드로이드는 가장 많이 사용되는 스마트폰 운영체제로 확고히 자리매김했고, 자바에 대한 지식만 있으면 누구나 쉽게 스마트폰 앱을 개발할 수 있다. 이 책은 초보자부터 전문가까지 모두 활용할 수 있도록 구글의 안드로이드 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) 프레임워크를 통해 현재 레이아웃에 있는 뷰에서 다른 뷰로 드래그앤드롭 제스처로 데이터를 옮길 수 있다. 이 프레임워크는 드래그 이벤트 클래스, 드래그 리스너, 기타 도우미 메소드를 제공한다. 드래그앤드롭 프레임워크의 목적은 데이터의 이동이긴 하지만 이를 다른 곳에 응용이 가능하다. 12장에서는 그에 관련된 방법을 알아본다.


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년 인생의 새로운 봄을 맞이하며
김도균


[ 저자 소개 ]

김지훈
동국대학교 컴퓨터공학과를 졸업했으며, 홍익대학교 대학원 컴퓨터 공학과에서 석사 학위(시스템 프로그래밍 전공)를 받았다. LG CNS SW 아키텍트로 8년 정도 지낸 후 KTDS 연구원으로 2년을 보냈다. 현재는 KCA에서 감리사로 근무 중이며, IT 기술 전문가 그룹 GoDev (www.godev.kr)의 서버 사이드 아키텍트로 활동 중이다.

이지훈
컴퓨터시스템응용기술사이자 정보시스템 수석감리원이다. 12년차 자바 개발자로, SDS와 SK C&C에서 근무했으며, 현재 LG전자에서 스마트TV 관련 시스템을 운영 중이다. 안드로이드와 아이폰 앱 개발자로 활동하고, 파이썬, 하둡, NoSQL 등 다양한 기술을 접하길 좋아한다. 또한 GoDev의 아키텍트로 활동 중이다.

이현우
공공 차세대 프로젝트 분석설계 개발자로 LG CNS에서 개발을 시작했으며, 이후 모바일 혁명과 함께 모바일 분야 개발에 뛰어들어 모바일 오피스 및 다수의 모바일 프로젝트를 진행했다. 현재 정보시스템 감리사로 활동 중이며, 게임엔진을 이용한 게임 개발에 관심을 가지고 개발에 전념 중이다. GoDev의 모바일 전문가다.

김도균
1996년 하이닉스(당시 현대전자)에서 처음 유닉스를 다루며 IT를 시작했고, 이후 한국 항공에서 지금의 T-50 개발 프로젝트에 참여했으며, 도담 시스템스에서 T-50의 블랙박스 분석 소프트웨어, 기체 분석 소프트웨어, 최초로 닷넷 기반 엔진 수명 관리 시스템을 개발하고, KT와 KTDS에서 그룹웨어 개발과 운영, 연구소에서 신기술 개발을 담당했다.
현재 GoDev의 기술창의성 리더이며, 최근 출간된 『애자일 테스팅』을 비롯해 20여 권의 역서를 출간한 기술 전문 번역가다. 자신의 기술 블로그(프리지아랩, www.dokyun.pe.kr)를 통해 강철 벼룩이라는 필명으로 기술적 관심사를 공유하고 있으며, 「마이크로소프트웨어」에 IT 트렌드와 이슈 등의 다양한 주제로 고정 칼럼을 기고 중이다.

목차

목차
  • I부 안드로이드 기초
  • 1장 안드로이드 개요
    • 1.1 안드로이드의 특징
    • 1.2 안드로이드 아키텍처
    • 1.3 안드로이드 기초 지식
      • 1.3.1 필수 구성 요소
      • 1.3.2 매니페스트 파일
    • 1.4 새로운 기능
    • 1.5 스마트폰과 태블릿
      • 1.5.1 화면 구성의 호환성
      • 1.5.2 태블릿의 UI 구성 전략
    • 1.6 개발자 등록
      • 1.6.1 개발자 기본 정보 등록
      • 1.6.2 구글 플레이 등록과 결제
      • 1.6.3 개발자 등록 완료
    • 1.7 개발자 사이트
      • 1.7.1 개발자 사이트 메인
      • 1.7.2 Design
      • 1.7.3 Develop
      • 1.7.4 Distribute
    • 1.8 정리
  • 2장 안드로이드 개발 환경
    • 2.1 JDK 설치와 구성
    • 2.2 안드로이드 SDK 설치와 구성
    • 2.3 이클립스 설치
    • 2.4 ADT와 AVD
      • 2.4.1 ADT 설치와 구성
      • 2.4.2 AVD 설정
    • 2.5 편리한 개발을 위한 설정
    • 2.6 정리
  • 3장 헬로 안드로이드
    • 3.1 안드로이드 프로젝트
      • 3.1.1 프로젝트 생성
      • 3.1.2 프로젝트 실행
    • 3.2 HelloAndroid 프로젝트 분석
      • 3.2.1 프로젝트 구조
      • 3.2.2 동작 원리
      • 3.2.3 AndroidMenifest.xml
      • 3.2.4 자바 소스코드
      • 3.2.5 레이아웃 파일
      • 3.2.6 strings.xml
      • 3.2.7 R.java
      • 3.2.8 리소스 처리 방법
    • 3.3 빌드와 실행
      • 3.3.1 빌드
      • 3.3.2 빌드 트러블 슈팅
      • 3.3.3 실행
    • 3.4 정리
  • II부 기본 API
  • 4장 기본 사용자 인터페이스
    • 4.1 뷰
    • 4.2 뷰의 속성
      • 4.2.1 아이디
      • 4.2.2 포지션
      • 4.2.3 레이아웃
      • 4.2.4 이벤트 처리
    • 4.3 텍스트 뷰
    • 4.4 이미지 뷰
    • 4.5 스크롤 뷰
    • 4.6 기본 위젯
      • 4.6.1 에디트텍스트
      • 4.6.2 버튼
      • 4.6.3 체크 박스
      • 4.6.4 라디오 버튼
      • 4.6.5 토글 버튼
    • 4.7 정리
  • 5장 레이아웃
    • 5.1 선형 레이아웃
    • 5.2 상대 레이아웃
    • 5.3 테이블 레이아웃
    • 5.4 프레임 레이아웃
    • 5.5 레이아웃 인플레이션
      • 5.5.1 레이아웃 인플레이터
      • 5.5.2 레이아웃 파라미터
    • 5.6 정리
  • 6장 이벤트 처리
    • 6.1 이벤트 구조
    • 6.1.1 이벤트 처리 구성 요소
      • 6.1.2 onClick 이벤트 기본 처리 예제
      • 6.1.3 다중 객체에서의 클릭 이벤트 처리 예제
    • 6.2 클릭 이벤트(OnClick)
    • 6.3 키 이벤트(OnKey)
    • 6.4 터치 이벤트(OnTouch)
    • 6.5 롱 클릭 이벤트(OnLongClick)
    • 6.6 포커스 이벤트(OnFocusChange)
    • 6.7 정리
  • 7장 대화상자
    • 7.1 주요 대화상자 서브클래스
    • 7.2 알림 대화상자
      • 7.2.1 선택형 대화상자(팝업)
      • 7.2.2 라디오 버튼을 가진 선택형 대화상자
      • 7.2.3 체크 박스 선택형 알림 대화상자
    • 7.3 프로그레스 대화상자
      • 7.3.1 기본 사용법
      • 7.3.2 예제 코드 익히기
    • 7.4 커스텀 대화상자
      • 7.4.1 예제 프로그램 구성
      • 7.4.2 예제 코드 익히기
    • 7.5 대화상자 프래그먼트
      • 7.5.1 기본 사용법
      • 7.5.2 예제 프로그램 구성
      • 7.5.3 예제 코드 익히기
    • 7.6 AlertDialog 프래그먼트
      • 7.6.1 기본 사용법
      • 7.6.2 예제 프로그램 구성
      • 7.6.3 예제 코드 익히기
    • 7.7 정리
  • 8장 노티피케이션
    • 8.1 노티피케이션의 종류
    • 8.2 토스트 노티피케이션
      • 8.2.1 기본 토스트 메시지 만들기
      • 8.2.2 커스텀 토스트 메시지 만들기
    • 8.3 상태 바 노티피케이션
      • 8.3.1 노티피케이션 가이드라인
      • 8.3.2 상태 바 노티피케이션 만들기
    • 8.4 커스텀 노티피케이션
    • 8.5 리치 노티피케이션
      • 8.5.1 BigPicture 노티피케이션
      • 8.5.2 BigText 노티피케이션
      • 8.5.3 InboxStyle 노티피케이션
      • 8.5.4 예제 코드
    • 8.6 정리
  • 9장 메뉴
    • 9.1 메뉴 리소스
    • 9.2 옵션 메뉴
    • 9.3 컨텍스트 메뉴
    • 9.4 서브메뉴
    • 9.5 메뉴의 부가 기능
    • 9.6 정리
  • 10장 고급 뷰와 위젯
    • 10.1 날짜 피커
      • 10.1.1 날짜 피커 레이아웃 설정
      • 10.1.2 날짜 피커 생성과 날짜 설정
      • 10.1.3 날짜 피커를 이용한 날짜 출력
    • 10.2 타임 피커
      • 10.2.1 타임 피커 레이아웃 설정
      • 10.2.2 타임 피커 생성과 시간 설정
      • 10.2.3 타임 피커를 이용한 시간 출력
    • 10.3 프로그레스 바
      • 10.3.1 프로그레스 바 레이아웃 설정
      • 10.3.2 액티비티 내에서 프로그레스 바 사용
    • 10.4 맵 뷰
      • 10.4.1 구글 맵 라이브러리 설치
      • 10.4.2 구글 맵 기본 사용법
      • 10.4.3 구글 맵 응용
    • 10.5 웹 뷰
    • 10.6 정리
  • 11장 액션 바
    • 11.1 액션 바 개요
    • 11.2 액션 바 디자인 가이드라인
    • 11.3 액션 바 설정과 액션 아이템
      • 11.3.1 액션 아이템
      • 11.3.2 액션 아이템의 선택
      • 11.3.3 스플릿 액션 바
      • 11.3.4 앱 아이콘에 내비게이션 추가
    • 11.4 태스크와 백 스택
      • 11.4.1 동일 액티비티 다중 생성 문제 다루기
      • 11.4.2 액션 바에서의 내비게이션 위로 가기
    • 11.5 액션 뷰 추가
    • 11.6 액션 프로바이더 추가
      • 11.6.1 ShareProvider 사용
      • 11.6.2 사용자 지정 액션 프로바이더 만들기
    • 11.7 내비게이션 탭 추가
    • 11.8 드롭다운 내비게이션 추가
    • 11.9 액션 바 스타일
    • 11.10 정리
  • 12장 드래그앤드롭
    • 12.1 드래그앤드롭 액션
    • 12.2 복사와 붙여넣기
      • 12.2.1 클립보드 프레임워크
      • 12.2.2 클립보드 데이터를 텍스트로 변환
    • 12.3 드래그앤드롭 프로세스
    • 12.4 드래그 이벤트 다루기
      • 12.4.1 드래그 셰도우
      • 12.4.2 드래그앤드롭의 이벤트 처리
    • 12.5 정리
  • 13장 스타일과 테마
    • 13.1 스타일 개요
      • 13.1.1 스타일 상속
      • 13.1.2 스타일 속성
    • 13.2 스타일과 테마의 사용법
      • 13.2.1 UI에 스타일과 테마의 적용
      • 13.2.2 액티비티나 애플리케이션에 테마 적용
      • 13.2.3 플랫폼 버전에 따른 테마의 선택 방법
    • 13.2.4 안드로이드 플랫폼의 스타일과 테마 사용
    • 13.3 시스템 테마
      • 13.3.1 Holo 테마
      • 13.3.2 사용자 정의 테마
    • 13.4 정리
  • 14장 어댑터 뷰
    • 14.1 어댑터 뷰
      • 14.1.1 데이터로 레이아웃 채우기
      • 14.1.2 아이템 선택 시 처리 방법
    • 14.2 리스트 뷰
    • 14.3 그리드 뷰
    • 14.4 스피너
    • 14.5 갤러리
    • 14.6 자동 완성
    • 14.7 정리
  • 15장 애플리케이션 리소스
    • 15.1 리소스 관리
      • 15.1.1 리소스 타입
      • 15.1.2 대체 리소스
      • 15.1.3 디바이스와 리소스
    • 15.2 리소스 사용
      • 15.2.1 코드에서 리소스 접근 방법
      • 15.2.2 XML을 통한 리소스 접근 방법
    • 15.3 실행 중 설정 변경
      • 15.3.1 설정 변경 중 객체 유지
      • 15.3.2 설정 변경 시의 직접 처리 방법
    • 15.4 지역화
      • 15.4.1 지역화를 고려하지 않은 예제
      • 15.4.2 지역화 계획
    • 15.5 정리
  • 16장 프로세스와 스레드
    • 16.1 프로세스
      • 16.1.1 프로세스 라이프사이클
    • 16.2 스레드
      • 16.2.1 작업자 스레드
      • 16.2.2 외부 스레드의 접근 문제 해결
      • 16.2.3 AsyncTask 활용
    • 16.3 스레드 예제
      • 16.3.1 예제 코드 익히기
    • 16.4 정리
  • 17장 그래픽
    • 17.1 캔버스와 그리기 객체
      • 17.1.1 캔버스 그리기
      • 17.1.2 뷰를 사용해 그리기
      • 17.1.3 Surface View 사용
      • 17.1.4 Drawables
      • 17.1.5 Shape Drawables
      • 17.1.6 나인패치
    • 17.2 하드웨어 가속
      • 17.2.1 하드웨어 가속 제어
      • 17.2.2 하드웨어 가속 사용
    • 17.3 정리
  • 18장 안드로이드 매니페스트 파일
    • 18.1 매니페스트 파일의 구조
      • 18.1.1 < action >
      • 18.1.2 < activity >
      • 18.1.3 < activity-alias >
      • 18.1.4 < application >
      • 18.1.5 < category >
      • 18.1.6 < compatible-screens >
      • 18.1.7 < data >
      • 18.1.8 < grant-uri-permission >
      • 18.1.9 < instrumentation >
      • 18.1.10 < intent-filter >
      • 18.1.11 < manifest >
      • 18.1.12 < meta-data >
      • 18.1.13 < path-permission >
      • 18.1.14 < permission >
      • 18.1.15 < permission-group >
      • 18.1.16 < permission-tree >
      • 18.1.17 < provider >
      • 18.1.18 < receiver >
      • 18.1.19 < service >
      • 18.1.20 < supports-gl-texture >
      • 18.1.21 < supports-screen >
      • 18.1.22 < user-configuration >
      • 18.1.23 < uses-feature >
      • 18.1.24 < uses-library >
      • 18.1.25 < uses-permission >
      • 18.1.26 < uses-sdk >
    • 18.2 매니페스트 파일 규약
    • 18.3 매니페스트 파일의 특징
      • 18.3.1 인텐트 필터
      • 18.3.2 권한 설정
    • 18.4 정리
  • 19장 액티비티와 프래그먼트
    • 19.1 액티비티
      • 19.1.1 액티비티 생명주기
      • 19.1.2 액티비티 사용
      • 19.1.3 액티비티 설정 파일 관리
      • 19.1.4 액티비티 생명주기 예제
      • 19.1.5 액티비티 상태 정보 예제
    • 19.2 프래그먼트
      • 19.2.1 프래그먼트 소개
      • 19.2.2 프래그먼트 생성
      • 19.2.3 프래그먼트 예제
    • 19.3 정리
  • 20장 콘텐츠 프로바이더
    • 20.1 콘텐츠 프로바이더 개요
      • 20.1.1 데이터 접근 방법
    • 20.2 콘텐츠 프로바이더 사용
    • 20.3 콘텐츠 프로바이더 예제
    • 20.4 콘텐츠 프로바이더 작성
      • 20.4.1 고려 사항
      • 20.4.2 데이터 저장소 설계
      • 20.4.3 콘텐츠 URI 설계
      • 20.4.4 콘텐츠 프로바이더 클래스의 구현
    • 20.5 캘린더 프로바이더
      • 20.5.1 캘린더 프로바이더 개요
      • 20.5.2 캘린더 테이블 구성과 사용
      • 20.5.3 이벤트 테이블 구성과 사용
      • 20.5.4 참가자 테이블 구성과 사용
      • 20.5.5 알람 테이블 구성과 사용
      • 20.5.6 인스턴스 테이블 구성과 사용
      • 20.5.7 캘린더 인텐트 구성과 사용
    • 20.6 프로바이더 실습 예제
    • 20.7 정리
  • 21장 서비스
    • 21.1 서비스 개요
      • 21.1.1 콜백 메소드
      • 21.1.2 서비스와 매니페스트
    • 21.2 서비스 생성
      • 21.2.1 시작 서비스 생성
      • 21.2.2 포그라운드에서 서비스 실행
      • 21.2.3 서비스 생명주기
      • 21.2.4 서비스 실습 예제
    • 21.3 바운드 서비스
      • 21.3.1 바운드 서비스 생성
      • 21.3.2 바인더 클래스 확장
      • 21.3.3 메신저 사용
      • 21.3.4 서비스 바인딩
      • 21.3.5 바운드 서비스의 생명주기 관리
    • 21.4 정리
  • 22장 브로드캐스트 리시버
    • 22.1 인텐트와 인텐트 필터
      • 22.1.1 인텐트 객체
      • 22.1.2 인텐트 처리
    • 22.2 브로드캐스트 개요
      • 22.2.1 브로드캐스트 송수신
      • 22.2.2 보안
      • 22.2.3 리시버와 프로세스 생명주기
      • 22.2.4 브로드캐스트 실습 예제
    • 22.3 정리
  • III부 고급 API 활용
  • 23장 음성 통화, 문자 메시지
    • 23.1 핸드폰 상태 정보 조회
      • 23.1.1 주요 조회 정보
      • 23.1.2 실전 예제
    • 23.2 전화 걸기
    • 23.3 전화 수신 처리
    • 23.4 통화, 문자 이력 조회
    • 23.5 문자 보내기
    • 23.6 문자 캡처
    • 23.7 주소록 관리
    • 23.8 정리
  • 24장 멀티미디어
    • 24.1 간단한 소리내기
      • 24.1.1 SoundPool 사용
      • 24.1.2 볼륨 관리
      • 24.1.3 음향 효과 주기
    • 24.2 오디오와 비디오 재생
      • 24.2.1 MediaPlayer의 상태
      • 24.2.2 상태 전이 메소드
      • 24.2.3 실전 예제
    • 24.3 오디오 녹음
      • 24.3.1 주요 메소드
      • 24.3.2 실전 예제
    • 24.4 사진과 동영상 촬영
      • 24.4.1 암시적 인텐트 사용
      • 24.4.2 카메라 기능 구현 개요
      • 24.4.3 사진 촬영
      • 24.4.4 동영상 촬영
      • 24.4.5 출력 파일의 저장 공간 처리
      • 24.4.6 실전 예제
    • 24.5 텍스트와 음성 간 상호 변환
      • 24.5.1 텍스트를 음성으로 변환
      • 24.5.2 음성을 텍스트로 전환
    • 24.6 미디어스토어
    • 24.7 정리
  • 25장 데이터 관리
    • 25.1 데이터베이스
      • 25.1.1 데이터베이스와 테이블 생성
      • 25.1.2 레코드 추가
      • 25.1.3 레코드 조회
      • 25.1.4 레코드의 수정과 삭제
      • 25.1.5 데이터베이스 변경 처리
      • 25.1.6 데이터베이스 변경 대비
      • 25.1.7 예제
    • 25.2 프리프런스
      • 25.2.1 프리프런스의 기본 메소드
      • 25.2.2 프리프런스 구성
      • 25.2.3 프리프런스에 버튼 효과 주기
      • 25.2.4 프리프런스 XML 입력 값 확인
    • 25.3 파일
      • 25.3.1 내장 파일
      • 25.3.2 외장 파일(SD 카드)
    • 25.4 정리
  • 26장 애니메이션
    • 26.1 프로퍼티 애니메이션
      • 26.1.1 동작 방식
      • 26.1.2 프로퍼티 애니메이션 API
      • 26.1.3 ValueAnimator로 애니메이션 효과 주기
      • 26.1.4 ObjectAnimator로 애니메이션 효과주기
      • 26.1.5 애니메이션 집합
      • 26.1.6 애니메이션 리스너
      • 26.1.7 Keyframe 사용
      • 26.1.8 커스텀 TypeEvaluator 작성
      • 26.1.9 인터폴레이터
      • 26.1.10 뷰에 애니메이션 효과 주기
      • 26.1.11 ViewPropertyAnimator
      • 26.1.12 ViewGroup의 레이아웃 변화 처리
      • 26.1.13 XML로 프로퍼티 애니메이션 효과 정의
    • 26.2 뷰 애니메이션
      • 26.2.1 XML로 뷰 애니메이션 효과 작성
      • 26.2.2 예제
    • 26.3 인터폴레이터
    • 26.4 프레임 애니메이션
    • 26.5 정리
  • 27장 센서와 전원 관리
    • 27.1 센서
      • 27.1.1 센서 공통 프레임워크
      • 27.1.2 모션 센서
      • 27.1.3 방향 센서와 자세 센서
      • 27.1.4 환경 센서
    • 27.2 전원 관리
    • 27.3 정리
  • 28장 위치 서비스와 지도
    • 28.1 위치 서비스
      • 28.1.1 사용자 위치 파악 개요
      • 28.1.2 사용자 위치 요청
      • 28.1.3 배터리 소모를 줄이는 방법
      • 28.1.4 위치 기반 앱의 동작 시나리오
      • 28.1.5 위치 공급자 종류와 선택
      • 28.1.6 근접 알림 이용
      • 28.1.7 주소와 위경도 사이의 변환
      • 28.1.8 에뮬레이터로 위치 기반 앱 테스트
    • 28.2 지도
      • 28.2.1 지도 기반 애플리케이션 만들기
      • 28.2.2 지도 관련 클래스
      • 28.2.3 현재 위치 표시
    • 28.3 정리
  • 29장 앱 위젯과 라이브 월 페이퍼
    • 29.1 앱 위젯
      • 29.1.1 앱 위젯 구성 요소
      • 29.1.2 매니페스트 파일에 앱 위젯 선언
      • 29.1.3 앱 위젯 메타 정보 작성
      • 29.1.4 앱 위젯 레이아웃 작성
      • 29.1.5 앱 위젯 마진 고려
      • 29.1.6 앱 위젯 공급자 작성
      • 29.1.7 앱 위젯 설정 액티비티 작성
      • 29.1.8 미리보기 이미지 사용
      • 29.1.9 컬렉션을 지원하는 앱 위젯
      • 29.1.10 컬렉션 지원 앱 위젯 예제
    • 29.2 라이브 월 페이퍼(라이브 배경 화면)
      • 29.2.1 월 페이퍼 서비스 작성
      • 29.2.2 월 페이퍼 리소스 작성
    • 29.3 정리
  • 30장 디바이스 간 통신
    • 30.1 블루투스
      • 30.1.1 블루투스 클래스 개요
      • 30.1.2 블루투스를 위한 권한 등록
      • 30.1.3 블루투스 사용 가능 여부 확인
      • 30.1.4 디바이스 확인
      • 30.1.5 디바이스 연결
      • 30.1.6 데이터 읽고 쓰기
      • 30.1.7 블루투스 예제 분석
    • 30.2 NFC
      • 30.2.1 태그 디스패치 시스템
      • 30.2.2 매니페스트 작성
      • 30.2.3 태그 정보 추출
      • 30.2.4 태그 정보 생성
      • 30.2.5 안드로이드 애플리케이션 레코드(AAR)
      • 30.2.6 안드로이드 빔을 사용한 태그 전송
    • 30.3 와이파이 다이렉트
      • 30.3.1 와이파이 다이렉트 개요
      • 30.3.2 와이파이 다이렉트 API
      • 30.3.3 와이파이 다이렉트 이벤트용 브로드캐스트 리시버 등록
      • 30.3.4 와이파이 다이렉트 예제 분석
    • 30.4 정리
  • 31장 구글 앱 엔진과 디바이스 간 통신
    • 31.1 구글 앱 엔진 사용
      • 31.1.1 개요
      • 31.1.2 사전 준비 작업
      • 31.1.3 앱 엔진 모듈 작성
      • 31.1.4 로컬 PC에서 앱 엔진 모듈 테스트
      • 31.1.5 클라이언트용 jar 배포하기
      • 31.1.6 1-N 관계 엔터티 작성
      • 31.1.7 구글 앱 엔진에서 애플리케이션 생성과 배포, 테스트
    • 31.2 클라이언트 모듈 작성
      • 31.2.1 외부 라이브러리 포함하기
      • 31.2.2 통신 담당 클래스 작성
      • 31.2.3 액티비티 클래스 작성
    • 31.3 정리
  • 32장 GCM 서비스
    • 32.1 GCM 사전 준비 작업
    • 32.2 GCM 서비스의 주요 기능
    • 32.3 GCM 아키텍처
    • 32.4 GCM의 라이프 싸이클 흐름
    • 32.5 GCM을 사용하는 안드로이드 애플리케이션 작성
      • 32.5.1 GCM을 위한 매니페스트 파일 작성
      • 32.5.2 GCM 등록
      • 32.5.3 GCM으로부터의 메시지 처리
      • 32.5.4 GCM 개발과 테스트 가이드라인
    • 32.6 써드파티 애플리케이션 서버
      • 32.6.1 GCM을 사용하는 서버 애플리케이션 작성
    • 32.7 구글 gcm 데모 분석
    • 32.8 GCM과 C2DM 차이점
    • 32.9 정리
  • 33장 SNS 활용
    • 33.1 SNS의 개요
    • 33.2 트위터 연동
      • 33.2.1 트위터 API 설정
      • 33.2.2 트위터의 oAuth 인증 처리
      • 33.2.3 트위터 연동 애플리케이션 개발
    • 33.3 페이스북 연동
      • 33.3.1 Facebook 안드로이드 라이브러리 다운로드
      • 33.3.2 페이스북 앱 등록
      • 33.3.3 페이스북 연동 앱 개발
    • 33.4 정리
  • IV부 실전 편
  • 34장 앱 엔진과 LBS를 이용한 iKeeper
    • 34.1 스토리 보드 작성
    • 34.2 애플리케이션 설계
    • 34.3 애플리케이션 구현
    • 34.4 정리
  • 35장 선형 가속도계와 애니메이션 효과를 사용한 BabyShake
    • 35.1 스토리 보드 작성
    • 35.2 애플리케이션 설계
    • 35.3 애플리케이션 구현
    • 35.4 정리
  • 36장 NFC와 블루투스를 이용한 음악 공유 앱
    • 36.1 스토리보드 작성
    • 36.2 애플리케이션 설계
    • 36.3 애플리케이션 구현
      • 36.3.1 안드로이드 빔코드 추가
      • 36.3.2 블루투스 연결 방법
      • 36.3.3 미디어 플레이와 음악 파일 전송 방법
      • 36.3.4 액티비티 생명주기 관련 코드
    • 36.4 정리
  • 37장 앱스토어
    • 37.1 구글 플레이
    • 37.2 SK T스토어
    • 37.3 정리
  • 38장 광고 플랫폼
    • 38.1 구글 애드몹
      • 38.1.1 애드몹 계정 만들기
      • 38.1.2 사이트 살펴보기
    • 38.2 다음 아담
      • 38.2.1 아담 계정 만들기
      • 38.2.2 사이트 살펴보기
    • 38.3 정리
  • 39장 개인 앱 비즈니스
    • 39.1 무료 애플리케이션과 유료 애플리케이션
    • 39.2 광고 연동
    • 39.3 수익금 가져오기
      • 39.3.1 ACH/Wire 전신송금
      • 39.3.2 페이팔

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

 2013년 2월 발행 오류/오탈자 

[ 전체 용어 통일 ]
컨텐트 → 콘텐트

[ p36 19행 ]
http://www.acornpub/book/android-programming → http://www.acornpub.co.kr/book/android-programming

[ p39 '1장에서 다루는 내용' 3행 ]
아이스크림 샌드위치의 특징 → 새로운 SDK의 특징

[ p124 1행 ]
"확인" → "취소"

[ p142 표4.4 상수 Text 설명 ]
넣을 수 있따. → 넣을 수 있다.

[ p854 1행, 2행 ]
[paramters]
[parameter]

[ p1091 예제 34.3 10행 ]
버그 → 버그

 2013년 4월 발행 오류/오탈자 

[ p152 4행 ]
수평수직

[ p152 5행 ]
수직수평

[ p219 예제 아래 6행 ]
마지막으로 savedInstanceState()를 이용해 → 마지막으로 savedInstanceState.getInt()를 이용해

[ p222 예제 9행 ]
View v = inflater.inflate(R.layout.fragment_dialog, → View v = inflater.inflate(R.layou.dialogfragmentmain,

[ p235 '8.3.2 상태 바 노티피케이션 만들기 24행 ]
(NotificationManager)etSystemService(ns); → (NotificationManager)getSystemService(ns);

[ p236 1행 ]
PendingIndent → PendingIntent

[ p955 표 30.1 타입 포맷 필드 대체]

TNF(타입 이름 형식) 매핑
TNFABSOLUTEURI타입 필드 기준 URI
TNFEMPTYACTIONTECHDISCOVERED로 변경
TNFEXTERNALTYPE타입 필드의 URN 기준 URI.
URN은 다음 약식 형식의 NDEF 타입 필드로 인코딩.
<domain_name>:<service_name>
안드로이드에서 이 부분을 URI로 매핑한 형식:
vnd.android.nfc://ext/<domain_name>:<service_name>.
TNFMIMEMEDIA타입 필드 기준 MIME 타입
TNFUNCHANGED 첫 번째 레코드에서 유효하지 않으므로, ACTIONTECHDISCOVERED.로 대체
TNFUNKNOWN ACTIONTECHDISCOVERED로 대체
TNFWELL_KNOWN MIME 타입이나 URI는 레코드 타입 정의(RTD)에 따르며, 타입 필드에서 설정.