서브메뉴

본문

나홀로 개발자를 위한 안드로이드 프로그래밍의 모든 것
나홀로 개발자를 위한 안드로이드 프로그래밍의 모든 것
저자 : 김지훈|이지훈|이현우|김도균
출판사 : 에이콘출판
출판년 : 2013
정가 : 50000, ISBN : 9788960774018

책소개


오늘날 안드로이드는 가장 많이 사용되는 스마트폰 운영체제로 확고히 자리매김했고, 자바에 대한 지식만 있으면 누구나 쉽게 스마트폰 앱을 개발할 수 있다. 이 책은 초보자부터 전문가까지 모두 활용할 수 있도록 구글의 안드로이드 4.x의 모든 API와 유용한 예제들을 담았다. 이 책에서는 안드로이드 기초 위젯, 레이아웃, 이벤트, 액티비티와 프래그먼트, 구글 맵 같은 기초 주제부터 구글 앱 엔진 사용, GCM, SNS 연결 같은 고급 주제들을 곧바로 사용할 수 있는 뛰어난 예제로 자세하게 설명한다.

목차


I부 안드로이드 기초

1장 안드로이드 개요
___1.1 안드로이드의 특징
___1.2 안드로이드 아키텍처
___1.3 안드로이드 기초 지식
______1.3.1 필수 구성 요소
______1.3.2 매니페스트 파일
___1.4 새로운 기능
___1.5 스마트폰과 태블릿
______1.5.1 화면 구성의 호환성
______1.5.2 태블릿의 UI 구성 전략
___1.6 개발자 등록
______1.6.1 개발자 기본 정보 등록
______1.6.2 구글 플레이 등록과 결제
______1.6.3 개발자 등록 완료
___1.7 개발자 사이트
______1.7.1 개발자 사이트 메인
______1.7.2 Design
______1.7.3 Develop
______1.7.4 Distribute
___1.8 정리

2장 안드로이드 개발 환경
___2.1 JDK 설치와 구성
___2.2 안드로이드 SDK 설치와 구성
___2.3 이클립스 설치
___2.4 ADT와 AVD
______2.4.1 ADT 설치와 구성
______2.4.2 AVD 설정
___2.5 편리한 개발을 위한 설정
___2.6 정리

3장 헬로 안드로이드
___3.1 안드로이드 프로젝트
______3.1.1 프로젝트 생성
______3.1.2 프로젝트 실행
___3.2 HelloAndroid 프로젝트 분석
______3.2.1 프로젝트 구조
______3.2.2 동작 원리
______3.2.3 AndroidMenifest.xml
______3.2.4 자바 소스코드
______3.2.5 레이아웃 파일
______3.2.6 strings.xml
______3.2.7 R.java
______3.2.8 리소스 처리 방법
___3.3 빌드와 실행
______3.3.1 빌드
______3.3.2 빌드 트러블 슈팅
______3.3.3 실행
___3.4 정리

II부 기본 API

4장 기본 사용자 인터페이스
___4.1 뷰
___4.2 뷰의 속성
______4.2.1 아이디
______4.2.2 포지션
______4.2.3 레이아웃
______4.2.4 이벤트 처리
___4.3 텍스트 뷰
___4.4 이미지 뷰
___4.5 스크롤 뷰
___4.6 기본 위젯
______4.6.1 에디트텍스트
______4.6.2 버튼
______4.6.3 체크 박스
______4.6.4 라디오 버튼
______4.6.5 토글 버튼
___4.7 정리

5장 레이아웃
___5.1 선형 레이아웃
___5.2 상대 레이아웃
___5.3 테이블 레이아웃
___5.4 프레임 레이아웃
___5.5 레이아웃 인플레이션
______5.5.1 레이아웃 인플레이터
______5.5.2 레이아웃 파라미터
___5.6 정리

6장 이벤트 처리
___6.1 이벤트 구조
___6.1.1 이벤트 처리 구성 요소
______6.1.2 onClick 이벤트 기본 처리 예제
______6.1.3 다중 객체에서의 클릭 이벤트 처리 예제
___6.2 클릭 이벤트(OnClick)
___6.3 키 이벤트(OnKey)
___6.4 터치 이벤트(OnTouch)
___6.5 롱 클릭 이벤트(OnLongClick)
___6.6 포커스 이벤트(OnFocusChange)
___6.7 정리

7장 대화상자
___7.1 주요 대화상자 서브클래스
___7.2 알림 대화상자
______7.2.1 선택형 대화상자(팝업)
______7.2.2 라디오 버튼을 가진 선택형 대화상자
______7.2.3 체크 박스 선택형 알림 대화상자
___7.3 프로그레스 대화상자
______7.3.1 기본 사용법
______7.3.2 예제 코드 익히기
___7.4 커스텀 대화상자
______7.4.1 예제 프로그램 구성
______7.4.2 예제 코드 익히기
___7.5 대화상자 프래그먼트
______7.5.1 기본 사용법
______7.5.2 예제 프로그램 구성
______7.5.3 예제 코드 익히기
___7.6 AlertDialog 프래그먼트
______7.6.1 기본 사용법
______7.6.2 예제 프로그램 구성
______7.6.3 예제 코드 익히기
___7.7 정리

8장 노티피케이션
___8.1 노티피케이션의 종류
___8.2 토스트 노티피케이션
______8.2.1 기본 토스트 메시지 만들기
______8.2.2 커스텀 토스트 메시지 만들기
___8.3 상태 바 노티피케이션
______8.3.1 노티피케이션 가이드라인
______8.3.2 상태 바 노티피케이션 만들기
___8.4 커스텀 노티피케이션
___8.5 리치 노티피케이션
______8.5.1 BigPicture 노티피케이션
______8.5.2 BigText 노티피케이션
______8.5.3 InboxStyle 노티피케이션
______8.5.4 예제 코드
___8.6 정리

9장 메뉴
___9.1 메뉴 리소스
___9.2 옵션 메뉴
___9.3 컨텍스트 메뉴
___9.4 서브메뉴
___9.5 메뉴의 부가 기능
___9.6 정리

10장 고급 뷰와 위젯
___10.1 날짜 피커
______10.1.1 날짜 피커 레이아웃 설정
______10.1.2 날짜 피커 생성과 날짜 설정
______10.1.3 날짜 피커를 이용한 날짜 출력
___10.2 타임 피커
______10.2.1 타임 피커 레이아웃 설정
______10.2.2 타임 피커 생성과 시간 설정
______10.2.3 타임 피커를 이용한 시간 출력
___10.3 프로그레스 바
______10.3.1 프로그레스 바 레이아웃 설정
______10.3.2 액티비티 내에서 프로그레스 바 사용
___10.4 맵 뷰
______10.4.1 구글 맵 라이브러리 설치
______10.4.2 구글 맵 기본 사용법
______10.4.3 구글 맵 응용
___10.5 웹 뷰
___10.6 정리

11장 액션 바
___11.1 액션 바 개요
___11.2 액션 바 디자인 가이드라인
___11.3 액션 바 설정과 액션 아이템
______11.3.1 액션 아이템
______11.3.2 액션 아이템의 선택
______11.3.3 스플릿 액션 바
______11.3.4 앱 아이콘에 내비게이션 추가
___11.4 태스크와 백 스택
______11.4.1 동일 액티비티 다중 생성 문제 다루기
______11.4.2 액션 바에서의 내비게이션 위로 가기
___11.5 액션 뷰 추가
___11.6 액션 프로바이더 추가
______11.6.1 ShareProvider 사용
______11.6.2 사용자 지정 액션 프로바이더 만들기
___11.7 내비게이션 탭 추가
___11.8 드롭다운 내비게이션 추가
___11.9 액션 바 스타일
___11.10 정리

12장 드래그앤드롭
___12.1 드래그앤드롭 액션
___12.2 복사와 붙여넣기
______12.2.1 클립보드 프레임워크
______12.2.2 클립보드 데이터를 텍스트로 변환
___12.3 드래그앤드롭 프로세스
___12.4 드래그 이벤트 다루기
______12.4.1 드래그 셰도우
______12.4.2 드래그앤드롭의 이벤트 처리
___12.5 정리

13장 스타일과 테마
___13.1 스타일 개요
______13.1.1 스타일 상속
______13.1.2 스타일 속성
___13.2 스타일과 테마의 사용법
______13.2.1 UI에 스타일과 테마의 적용
______13.2.2 액티비티나 애플리케이션에 테마 적용
______13.2.3 플랫폼 버전에 따른 테마의 선택 방법
___13.2.4 안드로이드 플랫폼의 스타일과 테마 사용
___13.3 시스템 테마
______13.3.1 Holo 테마
______13.3.2 사용자 정의 테마
___13.4 정리

14장 어댑터 뷰
___14.1 어댑터 뷰
______14.1.1 데이터로 레이아웃 채우기
______14.1.2 아이템 선택 시 처리 방법
___14.2 리스트 뷰
___14.3 그리드 뷰
___14.4 스피너
___14.5 갤러리
___14.6 자동 완성
___14.7 정리

15장 애플리케이션 리소스
___15.1 리소스 관리
______15.1.1 리소스 타입
______15.1.2 대체 리소스
______15.1.3 디바이스와 리소스
___15.2 리소스 사용
______15.2.1 코드에서 리소스 접근 방법
______15.2.2 XML을 통한 리소스 접근 방법
___15.3 실행 중 설정 변경
______15.3.1 설정 변경 중 객체 유지
______15.3.2 설정 변경 시의 직접 처리 방법
___15.4 지역화
______15.4.1 지역화를 고려하지 않은 예제
______15.4.2 지역화 계획
___15.5 정리

16장 프로세스와 스레드
___16.1 프로세스
______16.1.1 프로세스 라이프사이클
___16.2 스레드
______16.2.1 작업자 스레드
______16.2.2 외부 스레드의 접근 문제 해결
______16.2.3 AsyncTask 활용
___16.3 스레드 예제
______16.3.1 예제 코드 익히기
___16.4 정리

17장 그래픽
___17.1 캔버스와 그리기 객체
______17.1.1 캔버스 그리기
______17.1.2 뷰를 사용해 그리기
______17.1.3 Surface View 사용
______17.1.4 Drawables
______17.1.5 Shape Drawables
______17.1.6 나인패치
___17.2 하드웨어 가속
______17.2.1 하드웨어 가속 제어
______17.2.2 하드웨어 가속 사용
___17.3 정리

18장 안드로이드 매니페스트 파일
___18.1 매니페스트 파일의 구조
______18.1.1 [action]
______18.1.2 [activity]
______18.1.3 [activity-alias]
______18.1.4 [application]
______18.1.5 [category]
______18.1.6 [compatible-screens]
______18.1.7 [data]
______18.1.8 [grant-uri-permission]
______18.1.9 [instrumentation]
______18.1.10 [intent-filter]
______18.1.11 [manifest]
______18.1.12 [meta-data]
______18.1.13 [path-permission]
______18.1.14 [permission]
______18.1.15 [permission-group]
______18.1.16 [permission-tree]
______18.1.17 [provider]
______18.1.18 [receiver]
______18.1.19 [service]
______18.1.20 [supports-gl-texture]
______18.1.21 [supports-screen]
______18.1.22 [user-configuration]
______18.1.23 [uses-feature]
______18.1.24 [uses-library]
______18.1.25 [uses-permission]
______18.1.26 [uses-sdk]
___18.2 매니페스트 파일 규약
___18.3 매니페스트 파일의 특징
______18.3.1 인텐트 필터
______18.3.2 권한 설정
___18.4 정리

19장 액티비티와 프래그먼트
___19.1 액티비티
______19.1.1 액티비티 생명주기
______19.1.2 액티비티 사용
______19.1.3 액티비티 설정 파일 관리
______19.1.4 액티비티 생명주기 예제
______19.1.5 액티비티 상태 정보 예제
___19.2 프래그먼트
______19.2.1 프래그먼트 소개
______19.2.2 프래그먼트 생성
______19.2.3 프래그먼트 예제
___19.3 정리

20장 콘텐츠 프로바이더
___20.1 콘텐츠 프로바이더 개요
______20.1.1 데이터 접근 방법
___20.2 콘텐츠 프로바이더 사용
___20.3 콘텐츠 프로바이더 예제
___20.4 콘텐츠 프로바이더 작성
______20.4.1 고려 사항
______20.4.2 데이터 저장소 설계
______20.4.3 콘텐츠 URI 설계
______20.4.4 콘텐츠 프로바이더 클래스의 구현
___20.5 캘린더 프로바이더
______20.5.1 캘린더 프로바이더 개요
______20.5.2 캘린더 테이블 구성과 사용
______20.5.3 이벤트 테이블 구성과 사용
______20.5.4 참가자 테이블 구성과 사용
______20.5.5 알람 테이블 구성과 사용
______20.5.6 인스턴스 테이블 구성과 사용
______20.5.7 캘린더 인텐트 구성과 사용
___20.6 프로바이더 실습 예제
___20.7 정리

21장 서비스
___21.1 서비스 개요
______21.1.1 콜백 메소드
______21.1.2 서비스와 매니페스트
___21.2 서비스 생성
______21.2.1 시작 서비스 생성
______21.2.2 포그라운드에서 서비스 실행
______21.2.3 서비스 생명주기
______21.2.4 서비스 실습 예제
___21.3 바운드 서비스
______21.3.1 바운드 서비스 생성
______21.3.2 바인더 클래스 확장
______21.3.3 메신저 사용
______21.3.4 서비스 바인딩
______21.3.5 바운드 서비스의 생명주기 관리
___21.4 정리

22장 브로드캐스트 리시버
___22.1 인텐트와 인텐트 필터
______22.1.1 인텐트 객체
______22.1.2 인텐트 처리
___22.2 브로드캐스트 개요
______22.2.1 브로드캐스트 송수신
______22.2.2 보안
______22.2.3 리시버와 프로세스 생명주기
______22.2.4 브로드캐스트 실습 예제
___22.3 정리

III부 고급 API 활용

23장 음성 통화, 문자 메시지
___23.1 핸드폰 상태 정보 조회
______23.1.1 주요 조회 정보
______23.1.2 실전 예제
___23.2 전화 걸기
___23.3 전화 수신 처리
___23.4 통화, 문자 이력 조회
___23.5 문자 보내기
___23.6 문자 캡처
___23.7 주소록 관리
___23.8 정리

24장 멀티미디어
___24.1 간단한 소리내기
______24.1.1 SoundPool 사용
______24.1.2 볼륨 관리
______24.1.3 음향 효과 주기
___24.2 오디오와 비디오 재생
______24.2.1 MediaPlayer의 상태
______24.2.2 상태 전이 메소드
______24.2.3 실전 예제
___24.3 오디오 녹음
______24.3.1 주요 메소드
______24.3.2 실전 예제
___24.4 사진과 동영상 촬영
______24.4.1 암시적 인텐트 사용
______24.4.2 카메라 기능 구현 개요
______24.4.3 사진 촬영
______24.4.4 동영상 촬영
______24.4.5 출력 파일의 저장 공간 처리
______24.4.6 실전 예제
___24.5 텍스트와 음성 간 상호 변환
______24.5.1 텍스트를 음성으로 변환
______24.5.2 음성을 텍스트로 전환
___24.6 미디어스토어
___24.7 정리

25장 데이터 관리
___25.1 데이터베이스
______25.1.1 데이터베이스와 테이블 생성
______25.1.2 레코드 추가
______25.1.3 레코드 조회
______25.1.4 레코드의 수정과 삭제
______25.1.5 데이터베이스 변경 처리
______25.1.6 데이터베이스 변경 대비
______25.1.7 예제
___25.2 프리프런스
______25.2.1 프리프런스의 기본 메소드
______25.2.2 프리프런스 구성
______25.2.3 프리프런스에 버튼 효과 주기
______25.2.4 프리프런스 XML 입력 값 확인
___25.3 파일
______25.3.1 내장 파일
______25.3.2 외장 파일(SD 카드)
___25.4 정리

26장 애니메이션
___26.1 프로퍼티 애니메이션
______26.1.1 동작 방식
______26.1.2 프로퍼티 애니메이션 API
______26.1.3 ValueAnimator로 애니메이션 효과 주기
______26.1.4 ObjectAnimator로 애니메이션 효과주기
______26.1.5 애니메이션 집합
______26.1.6 애니메이션 리스너
______26.1.7 Keyframe 사용
______26.1.8 커스텀 TypeEvaluator 작성
______26.1.9 인터폴레이터
______26.1.10 뷰에 애니메이션 효과 주기
______26.1.11 ViewPropertyAnimator
______26.1.12 ViewGroup의 레이아웃 변화 처리
______26.1.13 XML로 프로퍼티 애니메이션 효과 정의
___26.2 뷰 애니메이션
______26.2.1 XML로 뷰 애니메이션 효과 작성
______26.2.2 예제
___26.3 인터폴레이터
___26.4 프레임 애니메이션
___26.5 정리

27장 센서와 전원 관리
___27.1 센서
______27.1.1 센서 공통 프레임워크
______27.1.2 모션 센서
______27.1.3 방향 센서와 자세 센서
______27.1.4 환경 센서
___27.2 전원 관리
___27.3 정리

28장 위치 서비스와 지도
___28.1 위치 서비스
______28.1.1 사용자 위치 파악 개요
______28.1.2 사용자 위치 요청
______28.1.3 배터리 소모를 줄이는 방법
______28.1.4 위치 기반 앱의 동작 시나리오
______28.1.5 위치 공급자 종류와 선택
______28.1.6 근접 알림 이용
______28.1.7 주소와 위경도 사이의 변환
______28.1.8 에뮬레이터로 위치 기반 앱 테스트
___28.2 지도
______28.2.1 지도 기반 애플리케이션 만들기
______28.2.2 지도 관련 클래스
______28.2.3 현재 위치 표시
___28.3 정리

29장 앱 위젯과 라이브 월 페이퍼
___29.1 앱 위젯
______29.1.1 앱 위젯 구성 요소
______29.1.2 매니페스트 파일에 앱 위젯 선언
______29.1.3 앱 위젯 메타 정보 작성
______29.1.4 앱 위젯 레이아웃 작성
______29.1.5 앱 위젯 마진 고려
______29.1.6 앱 위젯 공급자 작성
______29.1.7 앱 위젯 설정 액티비티 작성
______29.1.8 미리보기 이미지 사용
______29.1.9 컬렉션을 지원하는 앱 위젯
______29.1.10 컬렉션 지원 앱 위젯 예제
___29.2 라이브 월 페이퍼(라이브 배경 화면)
______29.2.1 월 페이퍼 서비스 작성
______29.2.2 월 페이퍼 리소스 작성
___29.3 정리

30장 디바이스 간 통신
___30.1 블루투스
______30.1.1 블루투스 클래스 개요
______30.1.2 블루투스를 위한 권한 등록
______30.1.3 블루투스 사용 가능 여부 확인
______30.1.4 디바이스 확인
______30.1.5 디바이스 연결
______30.1.6 데이터 읽고 쓰기
______30.1.7 블루투스 예제 분석
___30.2 NFC
______30.2.1 태그 디스패치 시스템
______30.2.2 매니페스트 작성
______30.2.3 태그 정보 추출
______30.2.4 태그 정보 생성
______30.2.5 안드로이드 애플리케이션 레코드(AAR)
______30.2.6 안드로이드 빔을 사용한 태그 전송
___30.3 와이파이 다이렉트
______30.3.1 와이파이 다이렉트 개요
______30.3.2 와이파이 다이렉트 API
______30.3.3 와이파이 다이렉트 이벤트용 브로드캐스트 리시버 등록
______30.3.4 와이파이 다이렉트 예제 분석
___30.4 정리

31장 구글 앱 엔진과 디바이스 간 통신
___31.1 구글 앱 엔진 사용
______31.1.1 개요
______31.1.2 사전 준비 작업
______31.1.3 앱 엔진 모듈 작성
______31.1.4 로컬 PC에서 앱 엔진 모듈 테스트
______31.1.5 클라이언트용 jar 배포하기
______31.1.6 1-N 관계 엔터티 작성
______31.1.7 구글 앱 엔진에서 애플리케이션 생성과 배포, 테스트
___31.2 클라이언트 모듈 작성
______31.2.1 외부 라이브러리 포함하기
______31.2.2 통신 담당 클래스 작성
______31.2.3 액티비티 클래스 작성
___31.3 정리

32장 GCM 서비스
___32.1 GCM 사전 준비 작업
___32.2 GCM 서비스의 주요 기능
___32.3 GCM 아키텍처
___32.4 GCM의 라이프 싸이클 흐름
___32.5 GCM을 사용하는 안드로이드 애플리케이션 작성
______32.5.1 GCM을 위한 매니페스트 파일 작성
______32.5.2 GCM 등록
______32.5.3 GCM으로부터의 메시지 처리
______32.5.4 GCM 개발과 테스트 가이드라인
___32.6 써드파티 애플리케이션 서버
______32.6.1 GCM을 사용하는 서버 애플리케이션 작성
___32.7 구글 gcm 데모 분석
___32.8 GCM과 C2DM 차이점
___32.9 정리

33장 SNS 활용
___33.1 SNS의 개요
___33.2 트위터 연동
______33.2.1 트위터 API 설정
______33.2.2 트위터의 oAuth 인증 처리
______33.2.3 트위터 연동 애플리케이션 개발
___33.3 페이스북 연동
______33.3.1 Facebook 안드로이드 라이브러리 다운로드
______33.3.2 페이스북 앱 등록
______33.3.3 페이스북 연동 앱 개발
___33.4 정리

IV부 실전 편

34장 앱 엔진과 LBS를 이용한 iKeeper
___34.1 스토리 보드 작성
___34.2 애플리케이션 설계
___34.3 애플리케이션 구현
___34.4 정리

35장 선형 가속도계와 애니메이션 효과를 사용한 BabyShake
___35.1 스토리 보드 작성
___35.2 애플리케이션 설계
___35.3 애플리케이션 구현
___35.4 정리

36장 NFC와 블루투스를 이용한 음악 공유 앱
___36.1 스토리보드 작성
___36.2 애플리케이션 설계
___36.3 애플리케이션 구현
______36.3.1 안드로이드 빔코드 추가
______36.3.2 블루투스 연결 방법
______36.3.3 미디어 플레이와 음악 파일 전송 방법
______36.3.4 액티비티 생명주기 관련 코드
___36.4 정리

37장 앱스토어
___37.1 구글 플레이
___37.2 SK T스토어
___37.3 정리

38장 광고 플랫폼
___38.1 구글 애드몹
______38.1.1 애드몹 계정 만들기
______38.1.2 사이트 살펴보기
___38.2 다음 아담
______38.2.1 아담 계정 만들기
______38.2.2 사이트 살펴보기
___38.3 정리

39장 개인 앱 비즈니스
___39.1 무료 애플리케이션과 유료 애플리케이션
___39.2 광고 연동
___39.3 수익금 가져오기
______39.3.1 ACH/Wire 전신송금
______39.3.2 페이팔
___39.4 정리