목차
목차
감사의 글-xiii
이 책에 대하여-xiv
베타리더 후기-xxii
CHAPTER 1 헬로, 안드로이드-1
1.1 안드로이드 애플리케이션 개발-1
1.2 그리 깊지 않은 배경 지식-3
1.3 안드로이드 생태계-4
1.4 사전에 설치된 안드로이드 애플리케이션들-5
1.5 안드로이드 소프트웨어 개발 키트의 특징-7
1.6 안드로이드 구동 기기-7
1.7 모바일 개발에 뛰어들어야 하는 이유-8
1.8 안드로이드 개발에 뛰어들어야 하는 이유-9
1.9 개발자 프레임워크 소개-9
CHAPTER 2 시작하기-16
2.1 안드로이드 애플리케이션 개발 시작하기-17
2.2 안드로이드 애플리케이션 개발하기-19
2.3 모바일 및 임베디드 기기 애플리케이션 개발하기-48
2.4 안드로이드 개발 도구-60
CHAPTER 3 애플리케이션, 액티비티, 프래그먼트, 기타 등등-72
3.1 애플리케이션, 액티비티, 프래그먼트-73
3.2 안드로이드 애플리케이션의 컴포넌트들-73
3.3 안드로이드 애플리케이션의 수명 주기, 우선순위, 프로세스 상태-75
3.4 안드로이드의 Application 클래스-77
3.5 안드로이드 액티비티 자세히 살펴보기-78
3.6 프래그먼트 소개-91
3.7 지진 정보 조회 애플리케이션 만들기-108
CHAPTER 4 안드로이드 매니페스트, 그래들 빌드 파일 정의하기 및 리소스 외부화하기-120
4.1 매니페스트, 빌드 파일, 리소스-121
4.2 안드로이드 매니페스트 소개하기-121
4.3 그래들 빌드 설정하기-127
4.4 리소스 외부화하기-136
CHAPTER 5 사용자 인터페이스 빌드하기-163
5.1 안드로이드 디자인의 토대-164
5.2 밀도 독립적인 디자인-165
5.3 안드로이드 사용자 인터페이스의 토대-166
5.4 레이아웃-168
5.5 안드로이드 위젯 툴박스-181
5.6 리스트와 그리드 사용하기-182
5.7 데이터 바인딩-192
5.8 새 뷰 만들기-198
CHAPTER 6 인텐트와 브로드캐스트 리시버-225
6.1 인텐트와 브로드캐스트 리시버 사용하기-226
6.2 인텐트를 사용해 액티비티 시작하기-227
6.3 암시적 인텐트를 수신하는 인텐트 필터 만들기-236
6.4 링키파이-255
6.5 브로드캐스트 이벤트에 인텐트 사용하기-258
6.6 로컬 브로드캐스트 매니저-267
6.7 펜딩 인텐트-268
CHAPTER 7 인터넷 리소스 사용하기-271
7.1 인터넷에 연결하기-272
7.2 인터넷 리소스 연결, 다운로드, 파싱하기-272
7.3 다운로드 매니저 사용하기-300
7.4 배터리를 적게 소모하면서 데이터를 다운로드하는 최선의 방법-310
7.5 인터넷 서비스와 클라우드 컴퓨팅-313
CHAPTER 8 파일, 상태 저장, 사용자 환경 설정-315
8.1 파일, 상태, 프레퍼런스 저장하기-316
8.2 수명 주기 핸들러를 사용해 액티비티 및 프래그먼트 인스턴스의 상태 저장하기와 복원하기-317
8.3 헤드리스 프래그먼트와 뷰 모델의 인스턴스 상태 유지하기-319
8.4 공유 프레퍼런스 생성하기와 저장하기-324
8.5 공유 프레퍼런스 데이터 읽기-326
8.6 공유 프레퍼런스 변경 리스너-327
8.7 애플리케이션 파일과 공유 프레퍼런스의 자동 백업 구성하기-327
8.8 프레퍼런스 UI 빌드하기-330
8.9 지진 정보 조회 애플리케이션에 설정 액티비티 만들기-337
8.10 정적 파일을 리소스로 포함하기-346
8.11 파일 시스템 사용하기-347
8.12 SDA로 공용 디렉터리 사용하기-350
8.13 파일 프로바이더를 사용해 파일 공유하기-355
8.14 저장소 접근 프레임워크를 사용해 다른 애플리케이션의 파일 사용하기-357
8.15 URI 기반 권한 사용하기-361
CHAPTER 9 데이터베이스 만들기와 사용하기-363
9.1 안드로이드의 구조적 데이터 저장소-364
9.2 Room 퍼시스턴스 라이브러리를 사용해 데이터 저장하기-364
9.3 지진 데이터를 Room 데이터베이스에 저장하기-378
9.4 SQLite 데이터베이스로 작업하기-384
9.5 파이어베이스 리얼타임 데이터베이스-396
CHAPTER 10 콘텐트 프로바이더와 검색-406
10.1 콘텐트 프로바이더-407
10.2 왜 콘텐트 프로바이더를 사용해야 할까?-407
10.3 콘텐트 프로바이더 만들기-408
10.4 콘텐트 리졸버로 콘텐트 프로바이더에 접근하기-422
10.5 네이티브 안드로이드 콘텐트 프로바이더 사용하기-435
10.6 애플리케이션에 검색 기능 추가하기-450
CHAPTER 11 백그라운드에서 작업하기-479
11.1 백그라운드로 작업하기-480
11.2 백그라운드 스레드 사용하기-481
11.3 백그라운드 작업 스케줄링하기-489
11.4 알림을 사용해 사용자에게 알리기-509
11.5 파이어베이스 클라우드 메시징 사용하기-531
11.6 알람 사용하기-537
11.7 서비스-539
CHAPTER 12 안드로이드 디자인 철학 구현하기-549
12.1 안드로이드의 디자인 철학-550
12.2 모든 화면에 어울리는 디자인-550
12.3 머티리얼 디자인-564
12.4 머티리얼 디자인의 사용자 인터페이스 요소들-573
CHAPTER 13 현대적인 안드로이드 사용자 인터페이스 구현하기-585
13.1 현대 안드로이드의 UI-586
13.2 AppCompat을 사용해 일관된 현대적 사용자 인터페이스 만들기-586
13.3 앱바에 메뉴와 액션 추가하기-589
13.4 기본 앱바를 넘어-595
13.5 지진 정보 뷰어 앱의 앱바 개선하기-602
13.6 앱의 이동 패턴-604
13.7 지진 정보 뷰어에 탭 추가하기-620
13.8 적절한 방해 수준 선택하기-626
CHAPTER 14 사용자 인터페이스의 고급 구성-632
14.1 사용자 경험 확장하기-633
14.2 접근성 지원하기-633
14.3 안드로이드의 음성 합성-635
14.4 음성 인식 사용하기-638
14.5 기기의 진동 제어하기-640
14.6 전체 화면 활용하기-642
14.7 프로퍼티 애니메이션으로 작업하기-644
14.8 뷰 개선하기-648
14.9 고급 캔버스 드로잉-649
14.10 복합 드로어블 리소스-676
14.11 복사하기, 붙여넣기, 클립보드-680
CHAPTER 15 위치, 상황 인지, 지도-683
15.1 애플리케이션에 위치, 지도, 상황 인지 추가하기-684
15.2 구글 플레이 서비스-685
15.3 구글 위치 서비스를 사용해 기기의 위치 찾기-689
15.4 지오펜스 설정하기와 관리하기-717
15.5 전통적인 플랫폼 위치 기반 서비스 사용하기-721
15.6 지오코더 사용하기-732
15.7 지도 기반 액티비티 만들기-739
15.8 지진 정보 뷰어에 지도 추가하기-762
15.9 상황 인지 추가하기-767
CHAPTER 16 하드웨어 센서-778
16.1 안드로이드의 센서-779
16.2 안드로이드 가상 기기와 에뮬레이터에서 센서 테스트하기-796
16.3 센서 다루기의 모범 사례-798
16.4 기기의 움직임과 방향 모니터링하기-799
16.5 환경 센서 사용하기-819
16.6 신체 센서 사용하기-826
16.7 사용자 행동 인지-829
CHAPTER 17 오디오, 비디오 그리고 카메라 사용하기-833
17.1 오디오와 비디오 재생하기 그리고 카메라 사용하기-834
17.2 오디오와 비디오 재생하기-834
17.3 미디어 라우터와 캐스트 애플리케이션 프레임워크 사용하기-853
17.4 백그라운드 오디오 재생-859
17.5 미디어 리코더를 사용해 오디오 리코딩하기-869
17.6 카메라를 사용해 사진 찍기-872
17.7 비디오 리코딩하기-882
17.8 미디어 스토어에 미디어 추가하기-887
CHAPTER 18 블루투스, NFC, 와이파이 P2P 통신하기-890
18.1 네트워킹과 P2P 통신-891
18.2 블루투스를 사용해 데이터 전송하기-891
18.3 와이파이 P2P를 사용해 데이터 전송하기-909
18.4 NFC 사용하기-917
18.5 안드로이드 빔 사용하기-921
CHAPTER 19 홈 화면 공략하기-927
19.1 홈 화면 커스터마이즈하기-928
19.2 화면 위젯-928
19.3 지진 앱에 위젯 만들기-945
19.4 컬렉션 뷰 위젯-953
19.5 라이브 배경화면 만들기-970
19.6 앱 단축키 만들기-975
CHAPTER 20 고급 안드로이드 개발-982
20.1 고급 안드로이드-983
20.2 편집증적인 안드로이드-983
20.3 각기 다른 하드웨어 및 소프트웨어 사용 가능성 처리하기-990
20.4 엄격 모드로 사용자 인터페이스 성능 최적화하기-994
20.5 전화 통신과 SMS-996
CHAPTER 21 앱의 릴리스, 배포, 모니터링-1029
21.1 릴리스 준비하기-1030
21.2 앱 매니페스트의 앱 메타데이터 업데이트하기-1032
21.3 앱의 프로덕션 빌드에 서명하기-1036
21.4 구글 플레이 스토어에서 앱 배포하기-1041
21.5 앱의 수익 창출-1061
21.6 앱 마케팅, 프로모션, 배포 전략-1063
21.7 파이어베이스를 사용해 앱 모니터링하기-1065
찾아보기-1075