저자 소개 ... 5 옮긴이 소개 ... 6 개정판 옮긴이의 말 ... 7 1판 옮긴이의 말 ... 8 들어가며 ... 22 1장 개요 ... 25 안드로이드 프로그램 구조 ... 27 액티비티 ... 27 컨텐트 프로바이더 ... 28 서비스 ... 28 인텐트 ... 28 사용 가능한 구성 요소 ... 29 데이터 보관 ... 29 네트웍 ... 29 멀티미디어 ... 29 GPS ... 30 전화 서비스 ... 30 개발환경 준비 ... 30 안드로이드 SDK 설치 ... 30 개발환경 설정 ... 31 이클립스 플러그인 설치 ... 32 안드로이드 가상 기기 생성 ... 32 2장 프로젝트와 타겟 ... 37 필요한 작업 ... 37 프로젝트 생성 ... 38 프로젝트 구조 ... 39 루트 디렉토리 ... 39 생성되는 내용 ... 40 그 밖의 디렉토리 ... 41 결과로 얻는 내용 ... 42 매니페스트 파일 ... 42 루트 엘리먼트 ... 43 권한, 기본 연동 요소, 애플리케이션 ... 44 애플리케이션 엘리먼트 ... 45 SDK 버전 ... 46 버전=컨트롤 ... 48 에뮬레이터와 타겟 ... 48 가상 장비 ... 49 타겟 지정 ... 51 3장 애플리케이션 작성 ... 53 프로젝트 생성 ... 53 액티비티 분석 ... 55 빌드와 실행 ... 57 4장 XML 레이아웃 ... 61 XML 기반 레이아웃 ... 61 XML로 레이아웃을 지정하는 이유 ... 62 XML 레이아웃 파일 구조 ... 63 엘리먼트 ID ... 64 자바 코드와 연결하는 방법 ... 65 종합정리 ... 66 5장 기본 위젯 ... 69 레이블 ... 69 버튼 ... 71 이미지 ... 72 입력 필드 ... 73 체크 박스 ... 75 라디오 버튼 ... 78 뷰 ... 80 유용한 속성 ... 80 유용한 메소드 ... 81 색깔 ... 81 6장 컨테이너 ... 83 LinearLayout ... 84 개념과 속성 ... 84 LinearLayout 예제 ... 88 RelativeLayout ... 93 개념과 속성 ... 93 RelativeLayout 예제 ... 96 TableLayout ... 100 개념과 속성 ... 100 TableLayout 예제 ... 103 스크롤 ... 104 7장 선택 기능 위젯 ... 109 공통의 인터페이스 어댑터 ... 110 리스트 예제 ... 111 스핀 컨트롤 ... 116 그리드 ... 119 입력 필드: 자동 완성 ... 123 갤러리 ... 127 8장 리스트 고급 활용 ... 129 가장 간단한 작업 ... 129 동적인 내용 ... 132 성능 개선 ... 135 convertView 활용 ... 136 홀더 패턴 ... 138 원하는 대로 만들기 ... 142 코드 리팩토링 ... 148 CursorAdapter ... 155 9장 고급 위젯과 컨테이너 ... 157 날짜, 색상 선택 ... 157 시계 ... 162 진행상태 표시 ... 164 입력 슬라이더 ... 165 탭 ... 166 탭 구성 요소 ... 167 주의할 점 ... 168 연결과 탭 완성 ... 169 동적으로 탭 추가 ... 172 인텐트와 뷰 ... 175 플리퍼 ... 176 수동 넘김 ... 177 동적으로 내용 추가 ... 179 자동 넘김 ... 181 슬라이딩 서랍 ... 182 그 밖의 위젯 ... 185 10장 입력 방식 프레임웍 ... 187 키보드의 종류 ... 187 커스터마이징 ... 188 입력 완료 버튼 ... 193 레이아웃 조정 ... 195 드보락 키보드 ... 197 11장 메뉴 ... 199 메뉴 종류 ... 199 옵션 메뉴 ... 200 메뉴 항목, 서브메뉴 추가 ... 200 컨텍스트 메뉴 ... 202 메뉴 예제 ... 204 메뉴 인플레이션 ... 209 메뉴 XML의 구조 ... 210 메뉴 관련 속성 ... 211 메뉴 인플레이션 ... 213 12장 글꼴 ... 215 기본 포함 글꼴 ... 215 추가 글꼴 ... 217 특이한 글자 ... 219 13장 웹킷 브라우저 ... 221 단순한 브라우저 ... 221 원하는 내용 표시 ... 224 브라우저 내비게이션 ... 226 WebViewClient ... 226 설정과 옵션 ... 229 14장 팝업 메시지 ... 231 토스트 ... 231 경고창 ... 232 팝업 메시지 예제 ... 234 15장 스레드 ... 237 Handler 객체 ... 238 Message 객체 ... 238 Runnable 객체 ... 242 Handler 없이 실행 ... 242 사용자 인터페이스 스레드 ... 243 비동기 작업 ... 243 이론적 배경 ... 244 AsyncTask, 제네릭, 가변 인자 ... 245 AsyncTask 구조 ... 245 백그라운드 작업 예제 ... 246 주의해야 할 점 ... 252 16장 액티비티 생명주기 ... 255 액티비티 상태 ... 255 액티비티 생명주기 ... 256 onCreate(), onDestroy() ... 256 onStart(), onRestart(), onStop() ... 257 onPause(), onResume() ... 258 부드러운 상태 변화 ... 258 17장 인텐트 필터 ... 261 인텐트 ... 262 인텐트 구조 ... 262 인텐트 라우팅 ... 263 인텐트 생성 ... 264 인텐트 리시버 ... 266 일시정지 문제 ... 267 18장 액티비티 실행 ... 269 액티비티 종류 ... 270 실행 ... 271 인텐트 작성 ... 271 호출 ... 271 탭 브라우징 ... 276 19장 화면 회전 ... 281 종료 및 재시작 ... 281 가로보기, 세로보기 ... 282 더 많은 정보 보관 ... 287 직접 처리하는 회전 작업 ... 290 화면 고정 ... 293 가속도계만 사용 ... 295 20장 리소스 ... 297 리소스의 종류 ... 297 문자열 ... 298 일반 문자열 ... 298 문자열 포매팅 ... 299 화면 표시 스타일 ... 299 스타일이 적용된 포매팅 ... 300 이미지 ... 304 XML ... 307 기타 리소스 ... 310 크기 ... 311 색깔 ... 311 배열 ... 312 환경에 맞는 리소스 선택 ... 313 21장 환경설정 ... 321 원하는 값 추출 ... 321 환경설정 관리 ... 322 환경설정 XML ... 323 환경설정 기능 제공 ... 324 모양새 갖추기 ... 329 환경설정 팝업 ... 332 22장 로컬 데이터베이스 ... 337 데이터베이스 예제 ... 338 SQLite ... 339 기초 ... 340 테이블 준비 ... 344 데이터 추가 ... 344 데이터 불러오기 ... 346 데이터 직접 다루기 ... 351 23장 파일 ... 353 고정된 파일 ... 353 읽고 쓰기 ... 357 24장 외부 자바 라이브러리 ... 363 제한 사항 ... 363 Ant와 JAR ... 364 스크립트 활용 ... 365 기타 사항 ... 370 스크립트 리뷰 ... 371 25장 인터넷 연결 ... 373 REST ... 373 기본 HTTP 작업 ... 374 응답 분석 ... 376 고려 사항 ... 379 26장 컨텐트 프로바이더 ... 381 Uri 구성 ... 382 Uri 생성 ... 382 쿼리 실행 ... 383 데이터 자동 적용 ... 385 데이터 추가와 변경 ... 387 BLOB 문제 ... 388 27장 컨텐트 프로바이더 구현 ... 391 내부 구성 요소 ... 391 데이터 타입 ... 393 컨텐트 프로바이더 작성 ... 393 1단계: 컨텐트 프로바이더 클래스 생성 ... 394 2단계: Uri 지정 ... 401 3단계: 속성 정의 ... 401 4단계: 매니페스트 설정 ... 402 변경 사항 알림 ... 403 28장 권한 ... 405 권한 확보 ... 406 권한 요청 ... 407 AndroidManifest.xml 파일에 권한 명시 ... 408 그 밖의 권한 요청 방법 ... 409 자세한 문서와 설명 ... 410 29장 서비스 구현 ... 411 서비스 클래스 ... 412 서비스 인스턴스 ... 413 AndroidManifest.xml ... 415 IPC 클라이언트 호출 ... 416 콜백 ... 416 인텐트 브로드캐스트 ... 417 원격 서비스, 프로그램의 나머지 부분 ... 419 30장 서비스 호출 ... 421 바인딩 ... 422 데이터 수신 ... 425 31장 사용자 알림 ... 427 알림 메시지 종류 ... 427 기기 알림 메시지 ... 428 아이콘 ... 429 알림 메시지 예제 ... 429 32장 위치 기반 서비스 ... 435 위치 정보 프로바이더 ... 436 위치 확인 ... 436 변경 사항 업데이트 ... 438 목표 지점 도착 알림 ... 440 테스트 ... 441 33장 지도, MapView, MapActivity ... 443 구글 지도 사용권 계약 ... 443 SDK 애드온 ... 444 구글 지도 기초 ... 444 지도 제어 기능 ... 446 확대/축소 배율 ... 447 중심 이동 ... 447 위성 사진 지도 ... 448 레이어 ... 449 오버레이 클래스 ... 449 ItemizedOverlay 표시 ... 450 화면 터치 처리 ... 452 현재 위치와 방향 ... 452 API 키 발급 ... 454 34장 전화 ... 457 TelephonyManager ... 457 전화 걸기 ... 458 35장 개발 도구 ... 463 계층 탐색기 ... 463 달빅 디버깅 ... 469 로그 ... 470 파일 업로드, 다운로드 ... 471 화면 캡처 ... 472 위치 지정 ... 473 전화 걸기, SMS 발송 ... 474 SD카드 ... 477 SD카드 이미지 생성 ... 477 SD카드 삽입 ... 478 36장 다양한 화면 크기 ... 479 기본 화면 크기 ... 479 화면 크기별 대응 ... 480 위치보다는 규칙 ... 480 물리적인 크기 ... 482 픽셀 이외의 단위 ... 482 그림 크기 ... 483 기기별 레이아웃 ... 483 〈supports-screens〉 ... 484 리소스, 리소스 집합 ... 485 화면 크기 파악 ... 486 해상도와 실제 크기 ... 487 해상도 문제 ... 488 해상도 조절 ... 488 실제 기기 접속 ... 489 레이아웃 변경 ... 490 메뉴 대신 버튼 ... 491 탭 대신 액티비티 ... 491 액티비티 통합 ... 492 예제: EU4You ... 492 첫 번째 버전 ... 493 아이콘 문제 해결 ... 502 빈 공간 활용 ... 503 레이아웃 재사용 ... 505 화면 크기 관련 버그 ... 506 37장 기기별 차이점 ... 507 명시적인 대응 ... 507 버튼 확인 ... 509 시장 규모 ... 509 기기별 차이점 ... 510 Archos 5 안드로이드 인터넷 태블릿 ... 510 모토로라 CLIQ/DEXT ... 511 모토로라 드로이드/마일스톤 ... 512 구글/HTC 넥서스원 ... 512 모토로라 백플립 ... 513 38장 플랫폼 업그레이드 ... 515 브랜드 관리 ... 515 그 외의 문제 ... 516 위젯 계층 구조 ... 516 리소스 변경 ... 518 API 변경 ... 518 운영체제 버전 확인 ... 519 API 감싸기 ... 519 39장 안드로이드 관련 정보 얻기 ... 527 질문과 대답 ... 527 안드로이드 소스 코드 ... 528 최신 소식 ... 529 찾아보기 ... 530