나홀로 개발자를 위한 안드로이드 프로그래밍의 모든 것
- 지은이김지훈, 이지훈, 이현우, 김도균
- ISBN : 9788960774018
- 50,000원
- 2013년 02월 22일 펴냄 (절판)
- 페이퍼백 | 1,232쪽 | 188*250mm
- 시리즈 : 모바일 프로그래밍
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
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장, 개인 앱 비즈니스: 모바일 애플리케이션에서 수익을 내는 방법과, 사용자의 거부감 및 부담을 최소화하면서 수익을 낼 수 있는 모바일 광고에 대해 알아본다. 광고 플랫폼은 구글의 애드몹을 사용해 설명한다. 수익을 내기 위한 방법과 모바일 광고 구현 방법에 대해 구체적으로 알아본다.
목차
목차
- 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 정리
- 3.1 안드로이드 프로젝트
- 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 정리
- 10.1 날짜 피커
- 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 정리
- 13.1 스타일 개요
- 14장 어댑터 뷰
- 14.1 어댑터 뷰
- 14.1.1 데이터로 레이아웃 채우기
- 14.1.2 아이템 선택 시 처리 방법
- 14.2 리스트 뷰
- 14.3 그리드 뷰
- 14.4 스피너
- 14.5 갤러리
- 14.6 자동 완성
- 14.7 정리
- 14.1 어댑터 뷰
- 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 정리
- 15.1 리소스 관리
- 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 정리
- 16.1 프로세스
- 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 정리
- 17.1 캔버스와 그리기 객체
- 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 정리
- 18.1 매니페스트 파일의 구조
- 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 정리
- 19.1 액티비티
- 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 정리
- 20.1 콘텐츠 프로바이더 개요
- 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 정리
- 21.1 서비스 개요
- 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 정리
- 22.1 인텐트와 인텐트 필터
- 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 정리
- 23.1 핸드폰 상태 정보 조회
- 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 정리
- 24.1 간단한 소리내기
- 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 정리
- 25.1 데이터베이스
- 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 정리
- 26.1 프로퍼티 애니메이션
- 27장 센서와 전원 관리
- 27.1 센서
- 27.1.1 센서 공통 프레임워크
- 27.1.2 모션 센서
- 27.1.3 방향 센서와 자세 센서
- 27.1.4 환경 센서
- 27.2 전원 관리
- 27.3 정리
- 27.1 센서
- 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 정리
- 28.1 위치 서비스
- 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 정리
- 29.1 앱 위젯
- 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 정리
- 30.1 블루투스
- 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 정리
- 31.1 구글 앱 엔진 사용
- 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 정리
- 38.1 구글 애드몹
- 39장 개인 앱 비즈니스
- 39.1 무료 애플리케이션과 유료 애플리케이션
- 39.2 광고 연동
- 39.3 수익금 가져오기
- 39.3.1 ACH/Wire 전신송금
- 39.3.2 페이팔
도서 오류 신고
정오표
정오표
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 타입 포맷 필드 대체]