![]() |
이 책은 안드로이드 프로젝트를 개념에서 완성에 이르기까지 성공적으로 진행하는 데 필요한 모든 것을 다룬다. 종합적인 안드로이드 개발 입문서답게 카메라, OpenGL ES, 동작 센서 등 안드로이드 기기의 거의 전 기능을 다루며 안드로이드 SDK의 최신 버전을 반영하고 있다.
이뿐만 아니라 저자들이 모바일 업계에서 수년간 쌓아온 경험에 기초한, 성공적인 모바일 개발을 위한 조언들도 담고 있다. 모바일 소프트웨어 공정이 전통적인 소프트웨어 개발과 어떻게 다른지, 그리고 귀중한 시간을 절약할 수 있는 요령들과 피해야 할 함정들도 알려준다. 소규모 프로젝트이든 대규모 프로젝트이든 현재 안드로이드 프로젝트를 진행하고 있다면 이 책에서 많은 것을 얻을 수 있을 것이다.
모바일 분야에 대한 경험이 각양각색인 프로그래머들은 물론 팀 리더와 프로젝트 관리자, 테스터, QA 전문가, 소프트웨어 아키텍트, 심지어는 마케팅 담당자까지, 안드로이드 응용프로그램을 만드는 개발 팀의 모든 구성원에게 이 책은 유용한 자료가 될 것이다.
주요 내용:
옮긴이 류광은 1996년부터 활동해온 프로그래밍 서적 전문 번역가로, <Game Programming Gems> 시리즈를 비롯한 게임 프로그래밍 서적 다수와 Knuth 교수의 고전 <컴퓨터 프로그래밍의 예술>(The Art Of Computer Programming) 시리즈 전권(1, 2, 3), <UNIX 고급 프로그래밍 제2판>(Advanced Programming in the UNIX Environment, 2nd), <한국어판 Beginning Linux Programming(4판)>, <Beautiful Code: 38인의 코딩 명장들이 말하는 내 생애 가장 아름다운 코드> 등 다양한 분야의 프로그래밍 서적 다수를 번역했다. 번역과 프로그래밍 외에 소프트웨어 문서화에도 많은 관심을 가지고 있으며, 수많은 오픈소스 프로젝트들의 표준 문서 형식으로 쓰이는 DocBook의 국내 사용자 모임인 닥북 한국(http://docbook.kr/)의 일원이다. 현재 번역서 정보 사이트 occam's Razor(http://occamsrazr.net/)와 Game Programming Gems 스터디 사이트 GPGstudy.com(http://www.gpgstudy.com/)을 운영하고 있다.
모바일 소프트웨어 개발의 간략한 역사
– 이동전화가 없던 시절
– “벽돌”
– 무선 응용 프로토콜, WAP
– 독점 모바일 플랫폼
오픈 핸드셋 얼라이언스(OHA)
– Google의 무선 참여
– OHA 결성
– 제조사: 안드로이드 단말기 설계
– 콘텐츠 제공사: 안드로이드 응용프로그램 개발
– 이동통신 사업자: 안드로이드 경험의 전달
– 안드로이드의 장점을 모두에게
안드로이드 플랫폼의 차별성
– 안드로이드: 차세대 플랫폼
– 자유/오픈소스
– 익숙하고 저렴한 개발 도구
– 합리적인 개발자 학습 곡선
– 강력한 응용프로그램을 개발할 수 있는 플랫폼
– 풍부하고 안전한 응용프로그램 통합
– 발행 시 비용이 걸림돌이 되지 않는다
– 응용프로그램을 위한 “자유 시장”
– 성장하고 있는 새로운 플랫폼
안드로이드 플랫폼
– 안드로이드의 바탕 아키텍처
– 보안 및 권한
– 안드로이드 응용프로그램 개발
요약
– 참고자료 및 추가 정보
개발 환경 갖추기
– 지원하는 운영체제
– JDK 설치
– Java용 Eclipse 개발 환경 설치
– 기타 개발 환경들
– 안드로이드 SDK 설치
– Eclipse용 ADT 플러그인의 설치와 설정
– ADT 설치 문제 해결
– 안드로이드 SDK에서 문제점을 발견했다면
– 디버깅을 위한 안드로이드 하드웨어 설정
– 안드로이드 기기 디버깅을 위한 운영체제 설정
– 이 책에 쓰인 개발 환경
안드로이드 SDK 둘러보기
– 안드로이드 라이선스 동의서
– 안드로이드 SDK 문서화
– 안드로이드 응용프로그램 프레임워크
– 안드로이드 개발 도구들
– 안드로이드 예제 응용프로그램들
요약
– 참고자료 및 추가 정보
개발 환경 점검
– Snake 응용프로그램을 Eclipse 작업공간의 새 프로젝트로 추가
– Snake 프로젝트를 위한 안드로이드 가상 장치(AVD) 생성
– Snake 프로젝트의 시동 구성 설정
– Snake 응용프로그램을 안드로이드 에뮬레이터에서 실행
첫 번째 자작 안드로이드 응용프로그램
– 새 안드로이드 프로젝트 생성 및 설정
– 안드로이드 응용프로그램의 핵심 파일들과 디렉터리들
– 새 프로젝트를 위한 AVD 생성
– 프로젝트의 시동 구성 만들기
– 첫 안드로이드 응용프로그램을 에뮬레이터에서 실행
– 에뮬레이터로 실행 중인 안드로이드 응용프로그램 디버깅하기
– 안드로이드 응용프로그램에 로깅 기능 추가
– 응용프로그램에 매체 지원을 추가
– 응용프로그램에 위치 기반 서비스 기능 추가
– 하드웨어에서 응용프로그램을 실행하고 디버깅하기
요약
– 참고자료 및 추가 정보
안드로이드 응용프로그램의 수명 주기
– 활동을 통한 과제 수행
– 의도를 통한 활동 전환
– 안드로이드 활동의 수명 주기
안드로이드 매니페스트 파일을 이용한 용프로그램 정의
– 응용프로그램의 신원 관리
– 권한 다루기
– 입력에 관한 하드웨어/소프트웨어 요구사항 지정
– 라이브러리와 안드로이드 SDK 버전 다루기
– 그 외의 응용프로그램 구성 설정들
요약
자원이란?
– 자원 디렉터리 계통구조
– 자원의 형식
– 자원 형식에 따른 자원 저장 방식
– 코드에서 자원에 접근
예제: Eclipse에서 단순 자원 값들을 설정
자원 다루기
– 문자열 자원 다루기
– 문자열 자원을 서식 문자열로 사용
– 문자열 배열 다루기
– 색상 다루기
– 크기 다루기
– 단순 표시물 다루기
– 이미지 다루기
– 애니메이션 다루기
– 메뉴 다루기
– XML 파일 다루기
– 원본 파일 다루기
– 자원에 대한 참조
– 레이아웃 다루기
– 스타일 다루기
– 테마 다루기
시스템 자원 참조하기
다중 응용프로그램 구성 관리
– 현지화와 기기 구성을 고려한 자원 조직화
– 코드에서 특정 구성의 자원을 선택하려면
– 응용프로그램 자원들을 효율적으로 조직화하려면
요약
– 참고자료 및 추가 정보
안드로이드에서 사용자 인터페이스 만들기
– XML 자원을 이용한 레이아웃 생성
– 코드에서 레이아웃 만들기
ViewGroup을 이용한 사용자 인터페이스 조직화
– View와 ViewGroup의 관계
내장 레이아웃 클래스 활용
– AbsoluteLayout 소개
– 방식의 FrameLayout 소개
– 직선형 배치 방식의 LinearLayout
– 상대적 배치 방식의 RelativeLayout
– 표 배치 방식의 TableLayout
– 한 화면에 여러 개의 레이아웃 사용하기
안드로이드에 내장된 뷰 컨테이너 클래스들
– AdapterViews 계통의 자료주도적 뷰 컨테이너들
– TabActivity와 TabHost를 이용한 탭 인터페이스
– 그 외의 뷰 컨테이너들
AppWidget을 통한 응용프로그램 뷰 접근
– 응용프로그램을 AppWidget 제공자로 만들려면
– 응용프로그램을 AppWidget 호스트로 만들기
요약
화면에 뭔가를 직접 그리려면
– Canvas와 Paint 다루기
텍스트 그리기
– 기본 서체와 스타일 사용하기
– 커스텀 글꼴 사용하기
– 텍스트가 화면에서 차지하는 크기 알아내기
비트맵 이미지 다루기
– Canvas에 비트맵 이미지 그리기
– 변환 행렬을 이용한 비트맵 변환
도형 다루기
– 도형 표시물을 XML 자원으로 정의하기
– 도형 표시물을 코드에서 직접 정의하기
– 여러 가지 도형들
애니메이션 다루기
– 프레임별 애니메이션
– 트위닝 애니메이션
요약
응용프로그램 선호설정 다루기
– 전용, 공유 SharedPreferences 인스턴스 얻기
– 설정 항목의 조회
– 선호설정 항목 추가, 수정, 삭제
– 안드로이드 파일 시스템에 있는 선호설정 파일
파일과 디렉터리 다루기
– 안드로이드 응용프로그램 디렉터리 탐색
– 기본 응용프로그램 디렉터리에 파일을 만들고 자료 쓰기
– 기본 응용프로그램 디렉터리에 있는 파일 읽기
– 안드로이드 파일 시스템의 다른 디렉터리와 파일 사용하기
SQLite 데이터베이스를 이용한 구조적 자료 저장
– SQLite 데이터베이스 만들기
– 테이블 레코드의 삽입, 갱신, 삭제
– SQLite 데이터베이스 질의
– SQLite 데이터베이스의 종료와 삭제
– 영속적 데이터베이스의 설계
– 자료를 응용프로그램의 사용자 인터페이스에 묶기
콘텐트 제공자를 통한 응용프로그램간 자료 공유
– 콘텐트 제공자를 이용해서 기기상의 이미지들에 접근하기
– 안드로이드의 내장 콘텐트 제공자 몇 가지
– 콘텐트 제공자의 자료 수정
커스텀 콘텐트 제공자를 통한 응용프로그램 확장
– ContentProvider 파생 클래스 작성
– 자료 URI 정의
– 자료 필드 정의
– query(), insert(), update(), delete(), getType() 구현
– insert()의 구현
– 매니페스트 파일 갱신
라이브 폴더 다루기
요약
– 참고자료 및 추가 정보
웹 접근(HTTP)
– 웹에서 자료 읽기
– HttpURLConnection 클래스
– 네트워크에서 XML 파일을 가져와 파싱하기
– 스레드를 이용한 네트워크 연산 처리
– 네트워크에 있는 이진 자료 활용
– 안드로이드 기기의 네트워크 상태 조회
WebView로 웹 브라우징 하기
요약
– 참고자료 및 추가 정보
GPS 활용
– 위치 알아내기
– 에뮬레이터의 위치 설정
위치의 지오코딩
위치를 지도로 표시하기
– 외부 지도 응용프로그램을 이용한 지도 표시
– MapView 위젯을 이용한 지도 표시와 상호작용
– Google 지도 API 키 얻기
– 지도 이동
– 지도 확대·축소
– 지도상의 위치 표식
그 밖의 위치 기반 서비스 활용 방안
요약
– 참고자료 및 추가 정보:
정지화상 다루기
– Camera 객체를 이용한 정지화상 찍기
– 이미지 공유
– 이미지를 벽지로 설정
동영상 다루기
– 동영상 녹화
– 동영상 재생
오디오 다루기
– 오디오 녹음하기
– 오디오 재생
– 오디오 공유
– 벨소리 설정
요약
전화통신을 위한 편의 수단들
– 전화기 상태 정보에 접근하는 권한 얻기
– 통화 상태 조회
– 이동통신 서비스 정보 조회
– 전화번호 다루기
단문 서비스 활용
– SMS 전송, 수신을 위한 권한 얻기
– 단문 보내기
– 단문 받기
전화 걸기
요약
– 참고자료 및 추가 정보
OpenGL ES 소개
안드로이드 3D 응용프로그램을 위한 기본적인 OpenGL ES 사용 방법
– SurfaceView 만들기
– OpenGL ES 스레드 시동
– EGL 초기화
– GL 초기화
– 장면 설정
3차원 물체 그리기
– 정점 지정
– 정점에 색깔 입히기
– 좀 더 복잡한 물체 그리기
– 장면에 조명 적용
– 물체에 텍스처 입히기
안드로이드 UI 요소와의 연동
– OpenGL 스레드에서 응용프로그램의 주 스레드로 정보 전달
– 응용프로그램 주 스레드에서 OpenGL 스레드로 정보 전달
OpenGL ES 정리하기
GLSurfaceView 클래스 사용하기
요약
– 참고자료 및 추가 정보
장치 감지기 사용하기
WiFi 다루기
배터리 잔량과 외부 전원 정보
요약
서비스 만들기
서비스 제어
원격 인터페이스 구현
Parcelable 구현 클래스
요약
튼튼한 모바일 응용프로그램의 설계를 위한 모범 관행들
– 모바일 사용자의 요구 만족
– 모바일 기기를 위한 사용자 인터페이스 설계
– 안정적이고 반응성 있는 모바일 응용프로그램의 설계
– 안전한 모바일 응용프로그램의 설계
– 수익 극대화를 위한 모바일 응용프로그램 설계
– 안드로이드 응용프로그램 설계에 서드파티 표준을 활용
– 유지보수와 업그레이드 편의를 위한 모바일 응용프로그램 설계
– 안드로이드 응용프로그램 설계에 안드로이드 도구들을 활용
– 안드로이드 응용프로그램 설계에서 황당한 실수를 피하려면
튼튼한 모바일 응용프로그램의 개발을 위한 모범 관행들
– 모바일 개발에 효과적인 개발 공정 설계
– 응용프로그램의 타당성을 일찍, 자주 검사하라
– 코딩 표준, 코드 검토, 단위 검사를 이용한 코드 품질 향상
– 단일 단말기에서 발생하는 결함 처리
– 안드로이드 응용프로그램 개발용 도구 활용
– 안드로이드 응용프로그램 개발에서 황당한 실수를 피하려면
모바일 응용프로그램 검사의 모범 관행들
– 모바일 응용프로그램을 위한 결함 추적 시스템 설계
– 검사 환경의 관리
– 검사 포괄도의 극대화
– 안드로이드 응용프로그램 검사에 안드로이드 도구들을 활용
– 안드로이드 응용프로그램의 검사에서 황당한 실수를 피하려면
– 검사를 외주로 맡기는 경우
요약
– 참고자료 및 추가 정보
응용프로그램 배포용 패키지 작성
– 패키지를 위한 코드 준비
– 패키지 작성
– 릴리스 버전 응용프로그램 패키지의 검사
– 안드로이드 응용프로그램의 인증
수익 올리기
– 안드로이드 마켓에서 응용프로그램 판매하기
– 독자적인 서버에서 응용프로그램 판매하기
– 안드로이드 마켓 이외의 배포 메커니즘을 통한 응용프로그램 판매
– 지적재산권 보호
– 사용자 과금
요약
– 참고자료 및 추가 정보:
기본적인 DDMS 실행 방법
DDMS의 주요 기능
프로세스 다루기
– 안드로이드 응용프로그램에 디버거 붙이기
– 안드로이드 응용프로그램의 스레드 활동 살펴보기
– 안드로이드 응용프로그램에 쓰레기 수거 실행
– 안드로이드 응용프로그램의 힙 활동 살펴보기
– 안드로이드 응용프로그램 중지하기
파일 탐색기 다루기
– 에뮬레이터나 기기에서 호스트로 파일 복사
– 호스트에서 에뮬레이터나 기기로 파일 복사
– 에뮬레이터나 기기의 파일 삭제
에뮬레이터 제어하기
– 전화가 걸려오는 상황 연출
– SMS 메시지가 도착한 상황 연출
– GPS 좌표 보내기
응용프로그램 로깅 기능 다루기
에뮬레이터나 기기의 화면 갈무리
– 빠르게 둘러보기
호스트에 연결된 기기들과 에뮬레이터들을 나열하기
특정 기기에 ADB 명령 전달하기
ADB 서버 프로세스의 시작과 중지
– ADB 서버 프로세스 종료하기
– ADB 서버 프로세스의 시작 및 점검
안드로이드 기기와 호스트 사이의 파일 복사
– 호스트의 파일을 기기로 복사하기
ADB를 이용한 안드로이드 응용프로그램 설치 및 해체
– ADB로 응용프로그램 설치하기
– ADB로 응용프로그램을 다시 설치하기
– ADB로 응용프로그램을 해체하기
LogCat 로깅 기능 활용하기
– 모든 로그 항목 표시
– 날짜와 시간을 표시하는 로그 표시 모드
– 필터 적용
– 로그 비우기
– 로그 출력을 기기의 파일에 저장하기
– 기타 로그 보기
버그 보고서 생성
ADB 셸 사용하기
– 셸 명령 하나만 실행하기
– 셸 세션 시작하기
– 셸로 에뮬레이터 중지, 시작하기
– 셸에서 SQLite 데이터베이스 관리하기
– 셸에서 monkey 도구로 응용프로그램 스트레스 검사 수행하기
– 셸을 통해서 커스텀 실행파일을 설치하고 실행하기
그 외의 ADB 명령들
SQLite와 안드로이드
sqlite3 명령줄 인터페이스 사용법
– sqlite3 명령줄 인터페이스를 띄우고 데이터베이스에 연결하기
– 데이터베이스 둘러보기
– 데이터베이스 스키마 및 자료 가져오기와 내보내기
– 명령 프롬프트에서 SQL 명령 수행
– SQLite 내부 들여다보기
– 그 외의 sqlite3 명령들
– SQLite의 한계
SQLite의 이해를 돕는 예제 하나: 학생 성적 데이터베이스
– 학생 성적 데이터베이스 스키마 설계
– AUTOINCREMENT 열이 있는 간단한 테이블 만들기
– 테이블에 자료 삽입
– SELECT로 테이블 조회하기
– 외부 키와 복합 기본 키가 있는 테이블 만들기
– 테이블의 자료 수정하기
– JOIN을 이용한 다중 테이블 질의
– 계산된 열에 하위 질의를 활용
– 테이블 삭제
안드로이드 SDK 1.6의 새 기능과 그에 따른 SDK 변화
– 범용 검색 수단 “Quick Search Box”
– CDMA 지원
– 접근성 프레임워크
– TTS 지원
– 제스처 입력
– 더욱 다양한 화면 크기/밀도 지원
– 추가적인 애니메이션 기능
그 외의 SDK 변화
안드로이드 SDK 1.6 적응을 위한 안드로이드 개발자 문서화 활용법
안드로이드 SDK와 Eclipse 개발 환경 업데이트
– 안드로이드 SDK 1.6 설치
– ADT 플러그인과 DDMS 갱신 및 Eclipse 설정 변경
– AVD 만들기
기존 프로젝트를 1.6에 맞게 이전하기
– 사례: 제13장의 Telephony 예제
– 안드로이드 2.0에서의 변화
– SDK 설치
안드로이드 2.0 애플리케이션 개발
– 다양한 화면 크기에 대한 대응
– 제스처(Gesture)
– TTS(Text To Speech)
– 빠른 검색
– 블루투스
개별저인 --->개별적인548쪽 밑에서 6째 줄
Googel ---> Google
Googel ---> Google