목차
머리말 ... 16
Chapter 1. 시작하기 ... 9
   1.1 안드로이드 OS ... 22
   1.2 안드로이드 OS 코드 네임 ... 23
   1.3 안드로이드 OS 기본 제공 애플리케이션 ... 25
   1.4 오픈 핸드셋 얼라이언스(OHA) ... 26
Chapter 2. 안드로이드 OS에 대한 이해 ... 27
   2.1 안드로이드 OS의 특징 ... 28
   2.2 안드로이드 OS의 레이어 ... 29
   2.3 안드로이드 OS의 라이브러리 ... 32
   2.4 안드로이드 OS의 개발 제약 사항 ... 34
      하드웨어의 제약 ... 34
      효율적인 코드의 작성 ... 35
      높은 반응성 ... 36
      자연스러운 흐름의 사용자 경험 ... 37
Chapter 3. 안드로이드 SDK ... 39
   3.1 안드로이드 SDK의 특징 ... 40
      하드웨어 액세스 ... 41
      위치 기반 서비스 ... 41
      백그라운드 서비스 ... 42
      SQLite 데이터베이스 ... 42
      공유 데이터 및 프로세스 간 통신 ... 42
      미디어 및 그래픽 ... 43
      메모리 및 프로세스 관리 ... 43
   3.2 안드로이드 SDK 설치하기 ... 44
      설치 환경 확인하기 ... 44
      개발 도구 다운로드 ... 45
      개발 도구 설치 ... 49
      Java 개발 킷 설치 ... 49
      안드로이드 SDK 설치 ... 53
      SDK Manager 실행하기 ... 61
      Eclipse 통합 환경 설치 ... 64
      ADT 플러그인에 대하여 ... 64
      ADT 플러그인 설치하기 ... 65
Chapter 4. Hello World ... 77
   4.1 프로젝트 생성하기 ... 78
   4.2 가상 장치 ... 80
      가상 장치 생성하기 ... 80
   4.3 프로젝트 실행하기 ... 82
      실행 구성 지정하기 ... 82
      가상 장치에서 실행하기 ... 84
      실제 장치에서 실행하기 ... 86
   4.4 프로젝트 기본 구조 ... 89
      액티비티 ... 89
      레이아웃 ... 90
      리소스 ... 92
Chapter 5. 애플리케이션 ... 95
   5.1 애플리케이션 구성 요소 ... 96
      액티비티 ... 96
      인텐트 ... 96
      콘텐츠 프로바이더 ... 97
      알림 ... 97
      브로드캐스트 리시버 ... 97
      서비스 ... 97
   5.2 애플리케이션 매니페스트 ... 98
      manifest 노드 ... 98
      application 노드 ... 99
      activity 노드 ... 99
service 노드 ... 100
provider 노드 ... 100
      receiver 노드 ... 100
      uses-permission 태그 ... 101
permission 태그 ... 103
      안드로이드 매니페스트 에디터 ... 103
   5.3 애플리케이션의 수명 주기와 우선순위 ... 106
      프로세스 상태에 따른 우선순위 ... 106
Chapter 6. 액티비티 ... 111
   6.1 액티비티에 대하여 ... 113
   6.2 액티비티 생성하기 ... 113
   6.3 액티비티 수명 주기 ... 116
   6.4 액티비티 스택 ... 116
   6.5 액티비티 상태 ... 118
   6.6 상태 변화 감시 ... 119
      onCreate ... 120
      onRestoreInstanceState ... 120
      onRestart ... 120
      onStart ... 121
      onResume ... 121
      onSaceInstanceState ... 121
      onPause ... 122
      onStop ... 122
      onDestroy ... 123
   6.7 액티비티 수명 ... 123
      전체 수명(Full Lifetime) ... 123
      가시 수명(Visible Lifetime) ... 124
      활성 수명(Active Lifetime) ... 125
   6.8 안드로이드가 제공하는 액티비티 클래스 ... 126
      ActivityGroup ... 126
      ListActivity ... 126
      ExpandableListActivity ... 126
Chapter 7. 뷰와 레이아웃 ... 127
   7.1 뷰 ... 128
   7.2 사용자 인터페이스 구축하기 ... 128
   7.3 안드로이드 기본 위젯 ... 130
   7.4 레이아웃 ... 131
      FrameLayout ... 131
      LinearLayout ... 132
      RelativeLayout ... 134
      TableLayout ... 136
      AbsoluteLayout ... 137
   7.5 레이아웃 구축하기 ... 138
   7.6 예제: Task Notes 첫 번째 버전 ... 140
      프로젝트 생성하기 ... 140
      레이아웃 수정하기 ... 142
      소스 코드 수정하기 ... 147
      실행하기 ... 150
Chapter 8. 리소스 ... 153
   8.1 리소스 생성하기 ... 154
   8.2 상수 ... 156
      문자열 상수 ... 157
      색상 ... 158
      치수 ... 159
   8.3 스타일 ... 160
   8.4 드로어블 ... 161
   8.5 레이아웃 ... 163
   8.6 애니메이션 ... 163
      트윈드 애니메이션 ... 164
      프레임 바이 프레임 애니메이션 ... 166
   8.7 리소스 사용하기 ... 167
      코드에서 직접 리소스 사용하기 ... 167
      리소스 연결 참조하기 ... 170
      공통 시스템 리소스 사용하기 ... 171
      현재 사용 중인 테마에서 스타일을 실시간으로 참조하기 ... 172
   8.8 국제화와 지역화 ... 172
      국제화를 위한 리소스 생성하기 ... 173
      ISO 69-1 언어 코드 ... 174
      ISO 3166-1-alpha-2 언어 코드 ... 175
   8.9 런타임 실시간 구성 변경 ... 176
Chapter 9. 커스텀 컨트롤 ... 179
   9.1 기존 컨트롤 변경하기 ... 181
   9.2 복합 컨트롤 생성하기 ... 183
   9.3 예제: Task Notes 두 번째 버전 ... 187
   9.4 새로운 커스텀 컨트롤 생성하기 ... 204
      비주얼 인터페이스 생성하기 ... 205
      컨트롤 그리기 ... 206
      컨트롤 크기 계산하기 ... 207
      상호 작용 이벤트 처리하기 ... 210
   9.5 예제: Clock 첫 번째 버전 ... 211
Chapter 10. 메 뉴 ... 229
   10.1 안드로이드 메뉴 시스템 ... 230
      아이콘 메뉴 ... 230
      확장 메뉴 ... 231
      연관 메뉴 ... 232
   10.2 액티비티 옵션 메뉴 ... 233
   10.3 메뉴 항목 설정 ... 234
      간결한 제목 ... 234
      아이콘 ... 235
      체크 박스 ... 235
      라디오 버튼 ... 236
      단축 키 ... 236
      메뉴 항목 동적 업데이트 ... 237
   10.4 메뉴 항목 선택하기 ... 238
      메뉴 항목 클릭 리스너 ... 238
      인텐트 ... 238
      메뉴 선택 이벤트 핸들러 ... 239
   10.5 화면 중앙에 떠 있는 메뉴 ... 239
      하위 메뉴 ... 239
      연관 메뉴 ... 240
   10.6 예제: Task Notes 세 번째 버전 ... 242
Chapter 11. 인텐트 ... 275
   11.1 인텐트란 무엇인가 ... 276
   11.2 액티비티 시작 ... 277
      확실하게 액티비티 시작하기 ... 278
      암시 인텐트를 통해 액티비티 시작하기 ... 278
      액티비티 결화 반환 ... 279
   11.3 기본 안드로이드 액션 ... 282
   11.4 인텐트 필터 ... 284
      인텐트 필터 처리 방식 ... 286
      인텐트 필터에 반응하기 ... 287
      인텐트 필터 일치 반응 거부하기 ... 288
   11.5 Linkify 클래스 ... 289
   11.6 예제: ContactSelector 첫 번째 버전 ... 293
   11.7 인텐트 필터 플러그인 모델 ... 307
      익명 액션 ... 307
      액티비티 메뉴에 통합하기 ... 308
   11.8 인텐트 전체 브로드캐스팅 ... 309
      인텐트로 이벤트 브로드캐스팅하기 ... 309
      브로드캐스트 리시버 ... 310
      기본 제공 브로드캐스트 액션 ... 313
Chapter 12. 어댑터 ... 315
   12.1 기본 제공 어댑터 ... 316
   12.2 어댑터를 이용한 데이터 연결 ... 317
   12.3 예제: Task Notes 네 번째 버전 ... 317
   12.4 SimpleCursorAdapter ... 337
Chapter 13. 대화 상자 ... 339
   13.1 Dialog 클래스 ... 341
   13.2 AlertDialog 클래스 ... 343
   13.3 특수 입력 대화 상자 ... 346
   13.4 대화 상자 재사용하기 ... 348
   13.5 액티비티를 대화 상자 스타일로 사용하기 ... 350
Chapter 14. 데이터 처리 ... 361
   14.1 파일 스트림 ... 352
   14.2 원시 데이터 파일 리소스화하기 ... 353
   14.3 환경 설정 ... 354
      공유 환경 설정 생성 및 저장하기 ... 354
      공유 환경 설정 얻기 ... 355
   14.4 액티비티 설정 ... 356
      액티비티 설정 저장하기 ... 356
      액티비티 설정 읽어오기 ... 356
   14.5 인스턴스 상태 관리하기 ... 357
   14.6 예제: Task Notes 다섯 번째 버전 ... 358
Chapter 15. 데이터베이스 ... 371
   15.1 SQLite에 대하여 ... 372
   15.2 커서 ... 373
   15.3 데이터베이스 어댑터 ... 374
   15.4 데이터베이스 질의 ... 379
      데이터베이스 질의 결과 얻기 ... 379
   15.5 행 ... 380
      행 삽입 ... 381
      행 갱신 ... 381
      행 삭제 ... 381
   15.6 예제: Task Notes 여섯 번째 버전 ... 382
Chapter 16. 콘텐츠 프로바이더 ... 407
   16.1 ContentResolver ... 408
      콘텐츠 질의하기 ... 409
      콘텐츠 삽입하기 ... 409
      콘텐츠 삭제하기 ... 410
      콘텐츠 갱신하기 ... 411
      파일 스트림 사용하기 ... 411
   16.2 기본 제공 콘텐츠 프로바이더 ... 412
      미디어 스토어 콘텐츠 프로바이더 ... 412
      연락처 콘텐츠 프로바이더 ... 413
   16.3 콘텐츠 프로바이더 생성하기 ... 414
   16.4 콘텐츠 프로바이더 인터페이스 생성하기 ... 416
   16.5 콘텐츠 프로바이더 등록하기 ... 418
Chapter 17. 위치 기반 서비스 ... 419
   17.1 LBS ... 420
   17.2 가상 장치에 위치 기반 서비스 설정하기 ... 421
   17.3 위치 프로바이더 선택하기 ... 427
      위치 프로바이더 선택 조건 ... 428
      현재 위치 ... 430
   17.4 예제: CurLoc 첫 번째 버전 ... 431
   17.5 위치 정보 갱신 ... 446
   17.6 예제: CurLoc 두 번째 버전 ... 447
   17.7 지오코딩 ... 452
      역방향 지오코딩 ... 453
      순방향 지오코딩 ... 454
   17.8 예제: CurLoc 세 번째 버전 ... 455
Chapter 18. 지도 ... 463
   18.1 구글 지도 API 키 ... 464
      MD5 지문 획득하기 ... 464
      MD5 지문 등록하기 ... 468
   18.2 지도 액티비티 ... 470
      지도 관련 클래스 ... 470
      지도 액티비티 생성하기 ... 471
      지도 뷰 추가 구성 요소 ... 474
      지도 컨트롤러 ... 475
   18.3 예제: CurLoc 네 번째 버전 ... 477
   18.4 근접 경보 ... 488
   18.5 오버레이 ... 490
      오버레이 생성하기 ... 490
      Projection 클래스 ... 491
      오버레이에 그리기 ... 492
      사용자 입력 처리하기 ... 493
      오버레이 리스트 관리하기 ... 494
Chapter 19. 서비스와 알림 ... 495
   19.1 서비스 ... 496
      서비스 생성하기 ... 497
      서비스 시작하기 ... 498
      서비스 중지하기 ... 498
      서비스 연동하기 ... 499
   19.2 백그라운드 워커 스레드 ... 501
      새로운 스레드 생성하기 ... 501
      스레드 동기화하기 ... 501
   19.3 토스트 ... 503
   19.4 알림 ... 505
      알림 생성하기 ... 506
      추가 알림 방식 ... 508
      알림 플래그 ... 510
   19.5 알람 ... 511
      알람 생성하기 ... 512
Chapter 20. 하드웨어 ... 515
   20.1 카메라 ... 516
      사진 촬영하기 ... 517
      화면 미리보기 ... 518
      카메라 설정 변경하기 ... 518
   20.2 하드웨어 센서 ... 521
      가속도 센서 ... 524
      방향 센서 ... 525
   20.3 예제: Speedometer 첫 번째 버전 ... 526
Chapter 21. 통신 ... 535
   21.1 전화 ... 536
      전화 걸기 ... 536
      전화 통신/통화 서비스 ... 537
      통화 전달 상태 확인 ... 540
      전화 통화 상태 확인 ... 541
      접속 중인 기지국 변동 확인 ... 542
      데이터 통신 관련 활동 확인 ... 543
      데이터 연결 상태 확인 ... 544
      서비스 상태 확인 ... 546
      전파 신호 세기 확인 ... 548
      전화 속성 ... 548
   21.2 블루투스 ... 549
      블루투스 권한 설정 ... 549
      블루투스 설정 ... 550
      블루투스 장치 탐색 ... 553
      장치 연결하기 ... 559
      연결 관리하기 ... 565
      프로파일 처리하기 ... 567
      제조사 정의 AT 명령어 처리하기 ... 569
   21.3 네트워크 연결 관리 ... 570
      인터넷 연결 관리 ... 570
      사용 가능한 연결 관리 ... 571
      Wi-Fi ... 573
Chapter 22. 지진정보 애플리케이션 ... 577
   22.1 프로젝트 기본 구축하기 ... 579
      지진 정보 클래스 생성하기 ... 580
      인터넷에서 지진 정보 얻어오기 ... 583
      메뉴 추가하기 ... 591
      세부 정보 보기 ... 593
   22.2 환경 설정 추가하기 ... 598
      환경 설정 액티비티 추가하기기 ... 598
      환경 설정 메뉴 추가하기 ... 608
      환경 설정 적용하기 ... 611
   22.3 지진 정보 콘텐츠 프로바이더 ... 622
      콘텐츠 프로바이더 구축하기 ... 622
      콘텐츠 프로바이더 사용하기 ... 631
   22.4 지도에 위치 표시하기 ... 636
      지도 액티비티 추가하기 ... 636
      오버레이를 이용하여 정보 표시하기 ... 643
   22.5 서비스 사용하기 ... 650
      서비스 구축하기 ... 650
      서비스 이용하기 ... 650
      백그라운드 스레드 사용하기 ... 671
   22.6 알림 막대 사용하기 ... 678
   22.7 알람 사용하기 ... 684
찾아보기 ... 691
닫기