목차 일부
머리말 ... 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 안드로이드 ...
더보기
목차 전체
머리말 ... 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
더보기 닫기