출판사 제이펍 원출판사 Wrox(원서 ISBN 9780470565520) 원서명 Professional Android 2 Application Development 저자명 리토 마이어(Reto Meier) 역자명 조성만 출판일 2010년 9월 17일 페이지 816쪽 판 형 4*6배판 변형(188*245) 반양장(Soft Cover) 정 가 34,000원 ISBN 978-89-94506-02-9 부가기호: 13560 시리즈 I♥Mobile 06 (아이러브모바일 06) 분 야 프로그래밍 / 소프트웨어 개발/ 모바일 프로그래밍 / 안드로이드 키워드 안드로이드 2.2 / 스마트폰 / 모바일 브라우저 / WebKit / SQLite / C2DM / OpenGL / 모바일 OS / 안드로이드 보안 / 제스처 관련 사이트
■ 아마존 원서 소개 페이지
■ Wrox 원서 소개 페이지
■ 원서 소스 코드 다운로드 페이지
■ 저자 리토 마이어의 블로그, 트위터
■ 옮긴이 블로그 정오표 페이지 ■ 원서 정오표 페이지
■ 번역서 정오표 페이지
■ 아래의 파일은 2쇄와 3쇄 일부 서적에서 9장의 두 페이지가 잘못 인쇄되어 유통되었는데, 이에 대한 파일을 올려 드립니다. 2011년 3월 14일부터 출고되는 서적들은 모두 바로잡아서 출고가 됨을 알려드립니다.
강의노트(2장은 ppt, 1-5장은 zip 파일입니다) (강의노트 전체는 대학이나 학원에서 이 책으로 강의를 진행하시는 분에게만 제공됩니다. 일반 독자들에게는 아래 외에는 제공해드릴 수 없으니 이 점 양지해주시기 바랍니다.)
(강의를 진행중이신 분은 우측 상단 연락처로 연락을 주시면 간단한 확인 과정을 거친 후 제공해드리겠습니다)
도서 구매 사이트(가나다 순) 강컴교보문고도서11번가리브로반디앤루니스알라딘영풍문고예스24인터파크 도서 소개 안드로이드 SDK 2.2에서 소스 코드 테스트 및 본문 주요 내용 업데이트!
안드로이드 클라우드 장치 메시징 프레임워크(C2DM)와 안드로이드 2.2의 주요 변경사항에 대한 특별 부록 수록! 최신 안드로이드 SDK로 나만의 모바일 애플리케이션을 만들자! 안드로이드의 권위자 리토 마이어가 쓴 이 책은 안드로이드 2.x의 기능을 활용해 기존 애플리케이션을 향상시키고 혁신적인 새로운 애플리케이션을 만드는 법을 제시한다. 이 책은 안드로이드를 이용한 모바일 앱 제작 가이드로서 여러 샘플 프로젝트들을 통해 안드로이드의 새로운 기능과 테크닉을 소개한다. 이 책에 담긴 설명과 예제를 통해 여러분은 안드로이드 모바일 애플리케이션 개발을 위한 기초 지식과 앞으로 나올 안드로이드의 새 버전에도 발 빠르게 적응할 수 있는 유연함을 얻게 될 것이다. 이 책의 찾아보기(인덱스)를 원서 찾아보기와 함께 제공하고 있어 보다 정확한 의미를 파악하는 데 도움을 받을 수 있을 것이다. 또한 이 찾아보기는 출판사 블로그(www.jpub.kr)에서 PDF 파일로 다운로드할 수 있도록 하여 손쉽게 원하는 부분을 검색할 수 있도록 하였다. 이 책의 주요 내용
• 개발 플랫폼으로서의 안드로이드와 모바일 개발 베스트 프랙티스를 살펴본다.
• 안드로이드 애플리케이션 컴포넌트들에 대한 자세한 설명을 제공한다.
• 해상도에 관계없이 멋진 사용자 인터페이스를 제공하기 위한 레이아웃과 뷰의 제작법을 자세히 설명한다.
• 데이터 공유를 위한 인텐트와 콘텐트 프로바이더를 살펴본다.
• 지도 기반 애플리케이션 제작 테크닉과 GPS 같은 위치 기반 서비스의 이용법을 소개한다.
• 백그라운드 서비스, 알림, 알람을 만들고 이용하는 법을 자세히 살펴본다.
• 인터랙티브한 홈 스크린 컴포넌트 제작법을 설명한다.
• 블루투스, 전화통신, 네트워킹 API에 대해 살펴본다.
• 카메라, 나침반 센서, 가속도 센서 등의 하드웨어 이용법을 살펴본다. 이 책의 대상 독자
이 책은 SDK를 이용한 안드로이드 휴대폰 플랫폼용 애플리케이션 제작에 관심 있는 모든 사람들을 대상으로 한다. 이 책은 숙련된 모바일 개발자와 안드로이드를 통해 모바일 애플리케이션 개발을 이제 막 시작해보려는 개발자 모두에게 가치 있는 정보를 담고 있다. 추천사 중에서 (중략) 이 책의 1판은 넘쳐나는 안드로이드 서적 중에 단연 돋보이는 책이었습니다. 책의 내용과 구성 면에서 워낙 원서가 잘 만들어졌었고, 번역 또한 매우 깔끔하게 잘 되어 있었습니다. 이번 개정판 역시 최신 안드로이드의 정보를 담고 있는 현존하는 최고의 안드로이드 서적이라고 감히 추천해 드립니다. (중략) _임재열 다음커뮤니케이션 모바일개발팀 옮긴이 머리말 중에서
(중략) 이 책은 안드로이드라는 악기를 배우기 위해 필요한 ‘악보’와도 같은 책입니다. 누군가에게 악기를 이야기하기보다는 실제로 그 악기를 연주해 보이는 것이 훨씬 더 많은 것을 말해줄 수 있듯이, 이 책에 담긴 수많은 예제를 통해 여러분은 안드로이드를 아는 것뿐만 아니라 실제로 여러분의 현장에서 ‘연주’할 수 있게 될 것입니다. 게다가 이 책의 원서는 현재 출간된 안드로이드 관련 서적 중 가장 좋은 평을 받고 있기 때문에 적어도 책을 잘못 만나 시간을 버리는 일 역시 없을 겁니다. (중략) 저자 소개 리토 마이어(Reto Meier)
리토 마이어는 서호주 퍼스(Perth, Western Australia) 출신으로 현재 런던에서 살고 있다. 현재 구글에서 안드로이드 개발자 대변인으로 일하면서 안드로이드 개발자들이 최고의 애플리케이션을 만들 수 있도록 지원하는 일을 하고 있다. 리토는 GUI 애플리케이션 개발에 10년이 넘는 경험을 가진 소프트웨어 개발자다. 구글에 입사하기 전에는 해양 석유 및 가스분야와 금융분야 등 다양한 산업에서 일했었다. 늘 새로운 기술에 관심이 많은 리토는 2007년 초기 릴리즈부터 안드로이드에 참여해 왔다. 여가시간에는 구글의 수많은 개발 도구들을 포함하여 다양한 개발 플랫폼들을 만지며 시간을 보낸다. 리토에 대해 궁금하다면 리토가 운영하는 웹 사이트 The Radioactive Yak(http://blog.radioactiveyak.com)를 방문하거나 트위터(http://www.twitter.com/retomeier)를 팔로우하자. 기술 검토자 소개 밀란 나렌드라 샤(Milan Narendra Shah)
밀란 나렌드라 샤는 사우샘프턴 대학교(University of Southampton)에서 컴퓨터 과학 학사학위를 받았으며, 7년 넘게 C#, C/C++, 자바 소프트웨어 엔지니어로 일해 왔다. 현재 아내와 함께 영국 버킹엄셔(Buckinghamshire)에서 살고 있다. 옮긴이 소개 조성만 옮긴이 조성만은 단국대학교에서 컴퓨터과학을 공부했다. 클라우드 컴퓨팅 기술에 기반을 둔 소프트웨어 퍼블리싱과 서로 다른 컴퓨팅 환경을 넘나드는 크로스 플랫폼 영역 그리고 모바일 컴퓨팅 환경에서의 사용자 경험에 관심 있다. 인프라웨어에서 모바일 웹 브라우저에 탑재되는 고성능 그래픽스 엔진 개발에 참여했으며, 현재 다음커뮤니케이션에서 마이피플 서비스를 개발하고 있다. 옮긴 책으로는 『Qt 4를 이용한 C++ GUI 프로그래밍, 제2판』(ITC, 2009), 『프로페셔널 안드로이드 애플리케이션 개발』(제이펍, 2009)이 있다.
차례 Chapter 01 헬로, 안드로이드
가볍게 살펴보는 배경지식 2
그리 멀지 않은 과거에는 3
안드로이드의 미래 4
안드로이드에 대한 오해 4
안드로이드: 모바일 개발을 위한 오픈 플랫폼 5
네이티브 안드로이드 애플리케이션 7
안드로이드 SDK의 특징 8
카메라, GPS, 가속도계 등의 하드웨어 접근 9
네이티브 구글 지도, 지오코딩, 위치 기반 서비스 10
백그라운드 서비스 10
데이터 저장과 검색을 위한 SQLite 데이터베이스 11
공유 데이터와 애플리케이션 간 통신 11
홈 스크린의 가치를 높이는 위젯, 라이브 폴더, 라이브 월페이퍼 12
광범위한 미디어 지원과 2D/3D 그래픽스 12
최적화된 메모리와 프로세스 관리 13
오픈 핸드셋 얼라이언스 소개 13
안드로이드 탑재 기기 14
모바일 애플리케이션 개발에 뛰어들어야 하는 이유? 14
안드로이드 애플리케이션 개발에 뛰어들어야 하는 이유? 15
안드로이드의 도입을 주도하는 것 15
안드로이드에만 있는 것 16
모바일 개발 판도의 변화 17
개발 프레임워크 소개 18
SDK에는 무엇이 들어 있을까? 18
안드로이드 소프트웨어 스택의 이해 19
Dalvik 가상 머신 21
안드로이드 애플리케이션 아키텍처 22
안드로이드 라이브러리 23
요약 23
Chapter 02 시작하기
안드로이드 애플리케이션 개발 26
준비물 27
내 생의 첫 번째 안드로이드 애플리케이션 만들기 33
안드로이드 애플리케이션 타입 41
모바일 애플리케이션 개발 43
하드웨어를 고려한 설계 43
사용자 환경 고려하기 48
안드로이드 애플리케이션 개발 50
할 일 목록 예제 54
안드로이드 개발 도구 62
안드로이드 SDK 및 가상 장치 매니저 63
안드로이드 에뮬레이터 66
Dalvik 디버그 모니터 서비스(DDMS) 67
안드로이드 디버그 브리지(ADB) 67
요약 68 Chapter 03 애플리케이션과 액티비티 만들기
안드로이드 애플리케이션의 구성요소 72
애플리케이션 매니페스트 소개 74
매니페스트 에디터 사용하기 81
안드로이드 애플리케이션 수명 주기 83
애플리케이션 우선순위와 프로세스 상태 이해하기 83
리소스 외부화하기 85
리소스 만들기 86
리소스 사용하기 95
서로 다른 언어와 하드웨어를 위한 리소스 만들기 101
런타임 구성 변경 103
안드로이드 애플리케이션 클래스 소개 105
애플리케이션 클래스 확장하고 사용하기 106
애플리케이션 수명 주기 이벤트 재정의하기 107
안드로이드 액티비티 좀더 자세히 살펴보기 108
액티비티 만들기 109
액티비티 수명 주기 111
안드로이드 액티비티 클래스 118
요약 119 Chapter 04 사용자 인터페이스 만들기
기본 안드로이드 UI 디자인 122
뷰 소개 123
뷰를 이용해 액티비티 사용자 인터페이스 만들기 124
안드로이드 위젯 툴 박스 125
레이아웃 소개 126
레이아웃 사용하기 127
레이아웃 최적화하기 129
새로운 뷰 만들기 130
기존 뷰 수정하기 131
복합 컨트롤 만들기 136
커스텀 뷰 만들기 140
커스텀 컨트롤 사용하기 154
드로어블 리소스 155
컬러 드로어블, 셰이프 드로어블, 그레이디언트 드로어블 156
복합 드로어블 160
나인패치 드로어블 164
해상도 독립성과 밀도 독립성 164
리소스 프레임워크와 해상도 독립성 165
해상도 독립성을 위한 베스트 프랙티스 167
메뉴 만들고 사용하기 172
안드로이드 메뉴 시스템 소개 172
액티비티 메뉴 정의하기 174
메뉴 아이템 옵션 176
동적으로 메뉴 아이템 업데이트하기 178
메뉴 선택 처리하기 178
하위 메뉴와 컨텍스트 메뉴 179
XML로 메뉴 정의하기 182
할 일 목록 예제 이어가기 184
요약 190 Chapter 05 인텐트, 브로드캐스트 리시버, 어댑터, 그리고 인터넷
인텐트 소개 194
인텐트로 액티비티 띄우기 195
인텐트 필터를 이용해 암시적 인텐트 서비스하기 203
플러그 인과 확장성을 위한 인텐트 필터의 사용 214
링키파이 소개 218
인텐트를 이용해 이벤트 방송하기 221
팬딩 인텐트 소개 227
어댑터 소개 228
네이티브 어댑터 소개 228
배열 어댑터 커스터마이징 229
어댑터를 이용한 데이터 바인딩 230
인터넷 리소스 이용하기 236
인터넷 리소스에 접속하기 237
인터넷 리소스 이용하기 238
다이얼로그 소개 239
다이얼로그 클래스 소개 240
액티비티를 다이얼로그로 이용하기 243
다이얼로그 표시하고 관리하기 243
지진 정보 뷰어 만들기 245
요약 256 Chapter 06 파일, 상태 저장, 그리고 환경설정
간단한 애플리케이션 데이터의 저장 260
환경설정 만들고 저장하기 261
공유 환경설정에서 데이터 가져오기 262
지진 정보 뷰어를 위한 설정 액티비티 만들기 262
환경설정 액티비티와 환경설정 프레임워크 소개 273
XML로 환경설정 화면 레이아웃 정의하기 274
환경설정 액티비티 소개 278
환경설정 화면과 연계된 공유 환경설정 찾아 이용하기 278
공유 환경설정 변화 감지 리스너 소개 279
지진 정보 뷰어를 위한 표준 환경설정 액티비티 만들기 280
액티비티 상태 저장하기 282
인스턴스 상태 저장하고 복구하기 283
할 일 목록의 액티비티 상태 저장하기 284
파일 읽고 쓰기 287
정적 파일을 리소스로 포함시키기 288
파일 관리 도구 289
요약 289 Chapter 07 데이터베이스와 콘텐트 프로바이더
안드로이드 데이터베이스 소개 292
SQLite 데이터베이스 소개 292
콘텐트 프로바이더 소개 292
SQLite 소개 293
커서와 콘텐트 밸류 294
SQLite 데이터베이스 이용하기 295
SQLiteOpenHelper 소개 298
SQLiteHelper 없이 데이터베이스 생성하고 개방하기 299
안드로이드 데이터베이스 설계 고려사항 300
데이터베이스에 질의하기 300
커서에서 결과 값 읽기 301
행 추가, 업데이트, 삭제 302
할 일 목록 저장하기 304
콘텐트 프로바이더 만들기 312
데이터 소스에 접근할 수 있도록 인터페이스 노출하기 314
콘텐트 프로바이더 등록하기 316
콘텐트 프로바이더 이용하기 316
콘텐트 리졸버 소개 316
콘텐트 질의하기 317
콘텐트 추가, 업데이트, 삭제 318
콘텐트 프로바이더에 있는 파일 접근하기 320
지진 정보 콘텐트 프로바이더 만들고 이용하기 321
콘텐트 프로바이더 만들기 321
콘텐트 프로바이더 이용하기 327
네이티브 안드로이드 콘텐트 프로바이더 331
미디어 스토어 콘텐트 프로바이더 이용하기 332
주소록 콘텐트 프로바이더 이용하기 333
요약 339 Chapter 08 지도, 지오코딩, 그리고 위치 기반 서비스
위치 기반 서비스 이용하기 342
위치 기반 서비스를 테스트하기 위한 에뮬레이터 환경 구축하기 342
에뮬레이터 위치 프로바이더의 위치 업데이트하기 343
위치 프로바이더 선택하기 344
이용 가능한 위치 프로바이더 검색하기 345
Criteria를 이용해 위치 프로바이더 검색하기 345
현재 위치 찾기 347
“내 위치 찾기” 예제 348
움직임 추적하기 350
“내 위치 찾기”에 위치 업데이트하기 352
근접 경보 이용하기 355
지오코더 이용하기 356
역방향 지오코딩 357
순방향 지오코딩 358
“내 위치 찾기”에 지오코딩 기능 넣기 360
지도 기반 액티비티 만들기 362
맵 뷰와 맵 액티비티 소개 362
지도 API 키 발급받기 363
지도 기반 액티비티 만들기 364
맵 뷰 구성하고 이용하기 366
맵 컨트롤러 이용하기 367
“내 위치 찾기”에 지도 표시 기능 넣기 368
오버레이 만들고 이용하기 372
MyLocationOverlay 소개 381
ItemizedOverlay와 OverlayItem 소개 382
지도와 지도 상의 위치에 뷰 고정시키기 385
지진 정보 애플리케이션에 지도 표시 기능 넣기 387
요약 393 Chapter 09 백그라운드에서 작업하기
서비스 소개 396
서비스에 액티비티 바인드하기 412
백그라운드 서비스의 우선순위 높이기 414
백그라운드 스레드 이용하기 416
AsyncTask로 비동기 작업 수행하기 416
AsyncTask를 이용해 지진 정보 서비스를 백그라운드 스레드로 옮기기 419
직접 스레드를 만들고 GUI 스레드와 동기화하기 420
토스트 만들기 423
토스트 커스터마이즈하기 424
작업자 스레드에서 토스트 사용하기 426
알림 소개 427
알림 매니저 소개 428
알림 생성하기 429
알림 발생시키기 433
지진 정보 모니터에 알림과 토스트 넣기 434
고급 알림 테크닉 438
진행 중 알림과 강조 알림 442
알람 이용하기 443
반복 알람 설정하기 446
반복 알람으로 지진 정보 업데이트하기 447
요약 450 Chapter 10 폰 화면 공략하기
홈 스크린 위젯 소개 454
앱 위젯 만들기 455
위젯 레이아웃 만들기 456
위젯 설정 정의하기 459
위젯 브로드캐스트 리시버 만들고, 애플리케이션 매니페스트에 추가하기 460
리모트 뷰와 앱 위젯 매니저 소개 461
위젯을 최신 상태로 유지하기 467
위젯 환경설정 액티비티 만들고 이용하기 471
지진 정보 위젯 만들기 472
라이브 폴더 소개 479
라이브 폴더 만들기 480
지진 정보 라이브 폴더 만들기 483
애플리케이션과 퀵 서치 박스에 검색 기능 추가하기 487
애플리케이션에 검색 기능 추가하기 487
퀵 서치 박스에 검색 결과 달기 491
지진 정보 예제에 검색 기능 추가하기 492
라이브 월페이퍼 만들기 496
라이브 월페이퍼 리소스 정의하기 497
월페이퍼 서비스 만들기 497
월페이퍼 서비스 엔진 만들기 498
요약 500 Chapter 11 오디오, 비디오, 그리고 카메라 이용하기
오디오와 비디오 재생 502
미디어 플레이어 소개 503
오디오 재생 준비 504
비디오 재생 준비 506
재생 제어하기 510
미디어 재생 출력 관리하기 510
오디오와 비디오 레코딩 511
인텐트를 이용한 비디오 레코딩 512
미디어 레코더 이용하기 513
카메라 이용법과 사진 촬영 517
인텐트를 이용한 사진 촬영 518
카메라 제어와 사진 촬영 519
JPEG EXIF 이미지 정보 읽고 쓰기 525
미디어 스토어에 새 미디어 추가하기 526
원시 오디오 조작 529
AudioRecord를 이용한 사운드 레코딩 529
AudioTrack를 이용한 사운드 재생 531
음성 인식 533
요약 535 Chapter 12 전화통신과 SMS 전화통신 538
다이얼러 띄우기 538
네이티브 다이얼러 대체하기 539
폰과 네트워크의 속성 및 상태정보 접근하기 540
폰 상태, 폰 활동, 데이터 연결 변화 모니터링 544
SMS와 MMS 소개 549
애플리케이션에서 SMS와 MMS 이용하기 549
인텐트와 네이티브 클라이언트를 이용해 SMS와 MMS 보내기 550
SMS 메시지 직접 보내기 551
수신되는 SMS 메시지 받아 처리하기 555
긴급 SMS 응답기 예제 558
긴급 응답기 자동화하기 570
요약 580 Chapter 13 블루투스, 네트워크, 그리고 Wi-Fi 블루투스 이용하기 582
로컬 블루투스 장치 어댑터 접근하기 582
블루투스 속성과 상태 관리하기 583
검색 가능하게 만들기와 원격 장치 검색하기 587
블루투스 통신 591
블루투스 데이터 전송 예제 599
네트워크 연결 관리하기 611
연결 매니저 소개 611
“백그라운드 데이터” 환경설정 값 읽기 612
네트워크 세부정보 모니터하기 613
네트워크 환경설정 구성하기와 무선 장치 제어하기 614
네트워크 연결 모니터하기 615
Wi-Fi 관리하기 615
Wi-Fi 연결 모니터하기 617
활성 연결 세부정보 모니터하기 617
핫스팟 검색하기 618
Wi-Fi 구성 관리하기 619
Wi-Fi 네트워크 구성 만들기 620
요약 621 Chapter 14 센서
센서와 센서 매니저 이용하기 624
센서 소개 624
센서 값 해석하기 628
나침반 센서, 가속도 센서, 방향 센서 이용하기 629
가속도 센서 소개 630
가속도 변화 감지하기 631
중력 측정기 만들기 633
방향 측정하기 637
나침반과 인공 수평의水平儀 만들기 641
기기 진동 제어하기 647
요약 648 Chapter 15 고급 안드로이드 개발
편집증 환자, 안드로이드 650
리눅스 커널 보안 650
권한 선언하기와 강제하기 651
브로드캐스트 인텐트에 권한 강제하기 653
웨이크 락 이용하기 653
안드로이드 텍스트 음성 변환 소개 655
AIDL을 이용해 서비스를 위한 IPC 지원하기 658
AIDL 인터페이스 구현하기 658
클래스 객체를 Parcelable 형태로 전달하기 659
IPC 인터페이스 구현하고 노출하기 662
인터넷 서비스 이용하기 665
리치 유저 인터페이스 만들기 666
애니메이션 다루기 666
고급 캔버스 드로잉 681
서피스 뷰 소개 703
인터랙티브한 컨트롤 만들기 707
요약 715 부록 01 안드로이드 2.2 플랫폼 하이라이트 사용자를 위한 새로운 기능 717
홈 717
익스체인지 지원 718
다중 키보드 언어 721
성능 향상 722
새로 추가된 플랫폼 기술 722
미디어 프레임워크 722
블루투스 723
2.6.32 커널 업그레이드 723
새로운 개발자 서비스 723
안드로이드 클라우드 장치 메시징 723
안드로이드 애플리케이션 에러 리포트 723
새로운 개발자 API 723
외부 저장소에 애플리케이션 설치 723
미디어 프레임워크 724
카메라와 캠코더 724
그래픽스 724
데이터 백업 724
기기 정책 매니저 724
UI 프레임워크 724 부록 02 안드로이드 클라우드 장치 메시징 프레임워크 소개 727
아키텍처 개요 728
수명주기 흐름 729
사용자가 해야 할 일 732
C2DM을 이용하는 안드로이드 애플리케이션 제작 732
매니페스트 생성 733
C2DM 등록 734
C2DM 등록 해제 735
등록 결과 처리 735
수신 데이터 처리 737
애플리케이션 개발 및 테스트 737
서드파티 애플리케이션 서버의 역할 738
애플리케이션 서버에서 메시지를 전송하는 방법 738
예제 740
한계 741 찾아보기 742