
나홀로 개발자를 위한 안드로이드 프로그래밍의 모든 것
- 지은이김지훈, 이지훈, 이현우, 김도균
- 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장, 개인 앱 비즈니스: 모바일 애플리케이션에서 수익을 내는 방법과, 사용자의 거부감 및 부담을 최소화하면서 수익을 낼 수 있는 모바일 광고에 대해 알아본다. 광고 플랫폼은 구글의 애드몹을 사용해 설명한다. 수익을 내기 위한 방법과 모바일 광고 구현 방법에 대해 구체적으로 알아본다.
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장, 개인 앱 비즈니스: 모바일 애플리케이션에서 수익을 내는 방법과, 사용자의 거부감 및 부담을 최소화하면서 수익을 낼 수 있는 모바일 광고에 대해 알아본다. 광고 플랫폼은 구글의 애드몹을 사용해 설명한다. 수익을 내기 위한 방법과 모바일 광고 구현 방법에 대해 구체적으로 알아본다.