이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

소득공제
안드로이드를 지배하는 통신 프로그래밍
안드로이드를 분해하고 진보한 통신 기술을 훔쳐라
박헌재
프리렉 2011.03.21.
베스트
IT 모바일 top100 19주
가격
34,000
10 30,600
YES포인트?
1,700원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

이미 소장하고 있다면 판매해 보세요.

  •  해외배송 가능?
  •  문화비소득공제 가능

책소개

목차

PART 1 인터넷 응용 프로그램
Chapter 01 안드로이드와 자바 기초 지식
01 안드로이드 아키텍처
02 안드로이드 컴포넌트와 생명주기
03 액티비티
04 서비스
4.1 스타트 서비스
4.2 바인드 서비스
05 브로드캐스트리시버
06 콘텐트프로바이더
07 컴포넌트 활성화
08 컴포넌트 종료
09 인텐트
9.1 인텐트 전송 메서드
9.2 인텐트 객체의 구성요소
9.3 펜딩인텐트
10 AsyncTask 클래스
10.1 AsyncTask 클래스의 파라미터 지정
10.2 AsyncTask 클래스의 진행 단계
10.3 기타 AsyncTask 메서드
11 스레드
11.1 스레드 구현
11.2 스레드 메서드
11.3 스레드 생명주기
11.4 스레드 동기화
11.5 wait/notify 메서드
11.6 스레드 Join
11.7 스레드 강제 종료
12 핸들러
13 Runtime와 Process 클래스
13.1 Runtime 클래스의 메서드들
13.2 Process 클래스의 메서드들
13.3 Runtime/Process 클래스의 사용 예
13.4 안드로이드 파일 퍼미션
14 안드로이드 기초 지식 마무리

Chapter 02 안드로이드 소켓 통신
01 소켓 통신 프로토콜
1.1 TCP 프로토콜
1.2 IP 헤더와 TCP 헤더
1.3 TCP 패킷 작동 원리
1.4 UDP 프로토콜
02 IP 주소
03 소켓 프로그램
3.1 InetAddress 클래스
3.2 InetAddress 클래스의 메서드
3.3 InetAddress 클래스의 사용방법
3.4 SocketAddress 클래스
3.5 NetworkInterface 클래스
04 소켓 통신과 스레드
05 서버소켓 프로그램
5.1 서버 프로그램 절차
5.2 ServerSocket 클래스의 메서드
5.3 FTP 프로토콜
5.4 FTP 서버 안드로이드 구현
06 소켓 통신과 스트림
07 소켓 프로그램
7.1 클라이언트 프로그램 절차
7.2 소켓 클래스의 메서드
7.3 소켓 타임아웃 설정
7.4 클라이언트 소켓 프로그램 사용 예
08 데이터그램 소켓과 패킷
8.1 UDP 프로그램 절차
8.2 DatagramSocket과 DatagramPacket 클래스
8.3 DatagramSocket 사용 예제
8.4 DatagramPacket 읽고 쓰기
09 안드로이드 소켓 통신 마무리

Chapter 03 통신과 스트림
01 자바 스트림
1.1 바이트 스트림와 문자 스트림
1.2 노드 스트림과 필터 스트림
02 유니코드와 문자 스트림
2.1 UTF-8
2.2 자바의 MUTF-8
03 객체 직렬화
04 바이트 스트림
4.1 InputStream의 주요 메서드
4.2 OutputStream의 주요 메서드
05 파일 스트림 클래스
5.1 파일 스트림 클래스의 생성자
5.2 파일 스트림의 메서드
5.3 파일 스트림의 사용 예
06 바이트 배열 스트림 클래스
6.1 바이트배열 스트림의 주요 메서드
6.2 바이트 배열 스트림 사용 예제
07 데이터 스트림 클래스
7.1 데이터 스트림의 생성자
7.2 데이터 스트림의 주요 메서드
7.3 데이터 스트림의 사용 예
08 객체 스트림 클래스
8.1 객체 스트림의 주요 메서드
8.2 객체 스트림의 사용 예
09 PushbackInputStream 클래스
9.1 PushbackInputStream의 주요 메서드
9.2 PushbackInputStream의 사용 예
10 문자 스트림
10.1 Reader 클래스의 메서드
10.2 Writer 클래스의 메서드
11 InputStreamReader와 OutputStreamWriter 클래스
12 파일 문자 스트림 클래스
12.1 FileReader와 FileWriter 사용 예
13 버퍼 문자 스트림 클래스
14 문자배열 스트림 클래스
15 문자열 스트림 클래스
16 StreamTokenizer 클래스
17 LineNumberReader 클래스
18 스트림의 압축과 복원
18.1 GZIPOutputStream 클래스
18.2 GZIPInputStream 클래스
18.3 ZIPOutputStream 클래스
18.4 ZIPInputStream 클래스
19 체크섬 스트림 클래스
20 제이슨 클래스
21 통신과 스트림 마무리

Chapter 04 소켓 채널 통신
01 소켓 통신의 문제점
02 소켓 채널의 기본원리
03 소켓 채널의 작업 순서
3.1 서버 소켓 채널의 작업 예
3.2 클라이언트 소켓 채널의 작업 예
04 NIO 버퍼 관리
05 채널 인터페이스
5.1 Channel 인터페이스
5.2 InterruptibleChannel 인터페이스
5.3 ReadableByteChannel 인터페이스
5.4 WritableByteChannel 인터페이스
5.5 ScatteringByteChannel와 GatheringByteChannel 인터페이스
5.6 ByteChannel 인터페이스
06 채널 패키지
6.1 SelectableChannel 클래스
6.2 Selector 클래스
6.3 SelectionKey 클래스
6.4 ServerSocketChannel과 SocketChannel 클래스
6.5 DatagramChannel 클래스
6.6 Channels 클래스
07 클라이언트 소켓 채널 구현
08 Charset 패키지
09 ServerSocketChannel 구현 예제-1
10 ServerSocketChannel 구현 예제-2
11 소켓 채널 통신 마무리

Chapter 05 URL & URLConnection
01 HTTP 프로토콜과 메시지
1.1 HTTP 요청 라인
1.2 HTTP 상태 라인
1.3 메시지 헤더
1.4 일반 헤더
1.5 요청 헤더
1.6 응답 헤더
1.7 엔티티 헤더
1.8 엔티티 본문
02 URI와 URL
2.1 URL 생성
2.2 URL 메서드
2.3 URL로 직접 호출
03 URLEncoder 클래스
04 URLConnection 클래스
4.1 URLConnection 클래스의 스트림
4.2 URLConnection 메서드
4.3 URLConnection 활용 예
05 HttpURLConnection 클래스
06 HTTP 쿠키
07 HTTP 사용자 인증
7.1 HTTP 사용자 기본 접근 인증
7.2 HTTP 다이제스트 인증
08 URL & URLConnection 마무리

Chapter 06 아파치 HttpClient 컴포넌트
01 HttpClient 컴포넌트의 지원 버전
02 HttpClient 컴포넌트의 사용방법
03 HTTP 메서드
3.1 HTTP GET 메서드의 사용 예
3.2 HTTP POST 메서드의 사용 예
3.3 HTTP 메서드 에러
3.4 HTTP 리소스 해제
3.5 안드로이드 애플리케이션 개발 시 주의사항
04 HTTP 요청 메시지
4.1 HTTP 기본 요청 메시지 수정
4.2 기본 소켓 설정 값 변경
05 HTTP 응답 메시지
06 애플리케이션 자동 패치 예제
6.1 웹사이트 제공 버전 읽기
6.2 설치 버전과 비교 분석
6.3 다운로드 작업
6.4 다운로드 파일 설치 작업
07 HttpClient 커스텀 작업
7.1 HTTP 소켓 생성
7.2 프로토콜 스킴
7.3 SSLSocketFactory 클래스
7.4 HTTP 컨텍스트
7.5 HTTP 연결관리자
7.6 HTTP 호스트와 라우트 설정
7.7 HTTP 멀티 요청 메시지
7.8 연결 개수와 라우트 개수 조정
08 HTTP 쿠키
8.1 쿠키 정책 적용
8.2 쿠키 생성과 저장
09 HTTP 기본 접근 인증
9.1 사용자 자격
9.2 자격 공급자
9.3 사용자 인증 예제
10 HTTPS 사용자 인증
11 AndroidHttpClient 클래스 소개
12 아파치 HttpClient 마무리

Chapter 07 안드로이드 계정관리 및 서버 동기화
01 계정관리자
02 구글 인증 프로세스
2.1 구글 인증 ClientLogin
2.2 유튜브 사용자 인증과 업로드
03 계정인증자
3.1 계정인증자 서비스 프로그램 작성
3.2 XML 메타데이터 파일 작성
3.3 AbstractAccountAuthenticator 클래스

04 AbstractAccountAuthenticator
클래스의 메서드
4.1 addAccount 메서드
4.2 confirmCredentials 메서드
4.3 editProperties 메서드
4.4 getAuthToken 메서드
4.5 getAuthTokenLabel 메서드
4.6 hasFeatures 메서드
4.7 updateCredentials 메서드
05 계정인증자 액티비티 작성
06 안드로이드 계정 등록과 읽기
6.1 AccountManager 인스턴스 생성
6.2 사용자 계정 생성
6.3 기존 계정 읽기
6.4 인증 토큰 요청
6.5 AccountManager 클래스의 사용 예 1
6.6 AccountManager 클래스의 사용 예 2
6.7 유튜브 인증토큰 사용 예
07 싱크관리자
7.1 안드로이드 동기화 방식
08 싱크어댑터
8.1 싱크어댑터 서비스 작성
8.2 메타데이터 XML 파일 작성
09 싱크어댑터 클래스
9.1 onPerformSync 메서드
9.2 싱크어댑터 실행
10 안드로이드 계정과 서버동기화 마무리

PART 2 통신 시스템 프로그램
Chapter 08 3세대 무선 이동통신
01 Access Point Name
02 무선이동통신 네트워크
03 SMS/MMS 설정
04 안드로이드 테스트 설정
05 무선 데이터 네트워크 관리
5.1 APN 변경 작업
06 3세대 무선 이동통신 마무리

Chapter 09 SMS와 MMS
01 SmsManager와 SmsMessage 클래스
1.1 SmsManager 클래스
1.2 SmsMessage 클래스
02 SMS 발신과 결과 확인 작업
03 SMS Message 수신
04 SMS 메시지 수신과 파워 관리
4.1 PowerManager 클래스
4.2 SMS 메시지 수신과 파워 관리 예제
05 SMS/MMS와 콘텐트프로바이드 URI
06 SMS와 MMS 마무리
Chapter 10 안드로이드 블루투스 통신
01 블루투스 아키텍처
02 블루투스 네트워크
2.1 외부 블루투스 검색
2.2 블루투스 모드
03 안드로이드 블루투스
3.1 블루투스 퍼미션
04 블루투스 모듈의 활성화
4.1 블루투스 지원 확인 작업
4.2 블루투스 활성화
05 블루투스 검색
5.1 페어링된 블루투스 쿼리
5.2 블루투스 기기 검색
5.3 검색응답 모드
06 블루투스 데이터 네트워크 연결
6.1 서버로 동작
6.2 클라이언트로 동작
07 데이터 송신과 수신 작업
08 블루투스 작업 종료
09 android.bluetooth 패키지
9.1 BluetoothAdapter 클래스
9.2 BluetoothDevice 클래스
9.3 BluetoothSocket 클래스
9.4 BluetoothServerSocket 클래스
9.5 BluetoothClass 클래스
10 블루투스 데이터 통신 예제
11 안드로이드 블루투스 통신 마무리

Chapter 11 전화수신과 블루투스 헤드셋
01 블루투스의 음성 기술
1.1 블루투스 헤드셋 프로그램 개발
1.2 IBluetoothHeadset.aidl 인터페이스 구현
1.3 BluetoothHeadset 프로그램 작성
02 전화 수신과 통화
2.1 사용 권한 확보
2.2 ITelephony.aidl 인터페이스 구현
2.3 브로드캐스트 리시버 프로그램
2.4 서비스 프로그램 작성
2.5 블루투스 헤드셋 활성화
2.6 다른 프로그램으로 수신전화 이전
2.7 ITelephony 리플렉션
2.8 전화 통화 종료
03 전화통화 기능 설정
04 ITelephony.aidl 메서드
05 전화수신과 블루투스 헤드셋 마무리

Chapter 12 안드로이드 와이파이 통신
01 무선랜이란
1.1 무선 LAN의 구성요소
1.2 용어 해설
1.3 와이파이 규격
1.4 무선 보안 기술
02 안드로이드 와이파이
2.1 와이파이 퍼미션
2.2 와이파이 활성화
03 와이파이 스캔
3.1 ScanResult 클래스
04 와이파이 환경설정
4.1 WifiConfiguration 클래스
4.2 WifiManager 클래스
4.3 와이파이 환경설정
05 와이파이 네트워크 연결
5.1 네트워크 정보 읽기
5.2 기타 네트워크 비활성화
5.3 네트워크 연결 우선순위 조정
06 와이파이 상태 정보 확인
6.1 WifiInfo 클래스
6.2 브로드캐스트 리시버
07 와이파이 록 설정
7.1 WifiManager.WifiLock 클래스
7.2 WifiManager.WifiLock 클래스 사용 예
7.3 WifiManager.MulticastLock 클래스
08 인터넷 서비스 우선순위 설정
09 와이파이 마무리
Chapter 13 위치기반 서비스
01 안드로이드 위치정보 서비스
02 지리 좌표 체계
03 Location 서비스
3.1 사용자 퍼미션
3.2 위치 업데이트
3.3 위치정보사업자 선정
3.4 근접 경보 기능
04 android.location 패키지
4.1 Criteria 클래스
4.2 LocationManager 클래스 메서드
4.3 Location 클래스
05 위치 정확성 유지
06 거리 측정
07 구글 맵
7.1 구글 맵 사용방법
08 'com.google.android.maps' 패키지
8.1 MapView 클래스
8.2 MapActivity 클래스
8.3 MapController 클래스
8.4 ItemizedOverlay 클래스
8.5 MyLocationOverlay 클래스
8.6 OverlayItem 클래스
09 줌 기능과 위치 설정
10 아이템 오버레이 작업
11 구글 맵 사용 예제
12 위치기반 서비스 마무리

Chapter 14 네트워크 시스템 관리
01 네트워크 연결 상태 확인
1.1 ConnectivityManager 클래스
1.2 네트워크 연결 확인
1.3 네트워크 변경 브로드캐스트
02 네트워크 세부정보 확인
2.1 NetworkInfo 클래스
2.2 네트워크 세부정보 확인
03 안드로이드 edify
3.1 edify 언어의 특성
3.2 논리 연산자
3.3 진행 연산자
3.4 edify 매크로 명령어
04 안드로이드 프로퍼티
4.1 프러퍼티 시스템 작동 원리
4.2 프로퍼티 특성
4.3 프로그램에서 프로퍼티 읽고 쓰기
05 네트워크 시스템 관리 마무리

Chapter 15 테더링과 애드혹 서비스
01 안드로이드 환경 분석
1.1 root 권한 확보
1.2 Netfilter 패키지 설치 확인
1.3 데몬 실행 확인 작업
1.4 패킷 포워딩
02 파일 복사와 실행 모드 변경
03 DNS & DHCP 서버 구축
3.1 DNS 서비스
3.2 DHCP 서비스
3.3 DNS & DHCP 서버 실행
04 블루투스 애드혹 설정
05 와이파이 애드혹 설정
5.1 와이파이 드라이버와 인터페이스
5.2 wpa_supplicant.conf 설정 작업
06 IP 주소 설정
07 라우팅 테이블 설정
08 Netfilter 패키지 설정
8.1 iptables 명령어
09 테더링 퍼미션
10 테더링 실행
11 안드로이드 생명주기 고려
12 테더링과 애드혹의 마무리

APPENDIX
01 메모리 관리와 mmap
02 블루투스 아키텍처
03 블루투스 프로파일
04 블루투스 보안
05 wpa_supplicant 상태 값
06 NetworkInfo.DetailedState 상태 값
07 HttpURLConnection 응답 상수
08 HTTP 상태코드
09 엔디언
10 안드로이드 퍼미션
11 구글맵 사용 API KEY 얻기
12 용어 설명

저자 소개

저자 : 박헌재
저자는 20년간의 리눅스 및 자바 프로그래밍 분야에서 개발을 수행했던 전문가이다. SAP, 오라클과 같이 ERP 도입을 위한 UNIX 포팅 작업, 오라클 DBA 업무 및 최적화 작업 그리고 현지화 작업으로 ERP를 국내 성공적으로 안착시키는 업무를 수행하였으며, 이후 Unix나 Linux 기반으로 범용 디바이스 장비 개발이나 방화벽, VPN, IPS와 같이 네트워크 보안 장비 개발 등에 이르기까지 다양한 애플리케이션, 임베디드 리눅스 커널 수정, 하드웨어/소프트웨어 테스트 작업 그리고 장애업무처리, 초기 리눅스 커널 2.4 버전에 대한 버그 리포트를 비롯하여 대만 하드웨어 제조사들과 연구 작업, 하드웨어(인텔, 리얼텍) 디바이스에 대한 버그 리포트를 비롯하여 네트워크 보안 애플리케이션 개발 등을 포함하여 많은 경험이 있다.

품목정보

발행일
2011년 03월 21일
쪽수, 무게, 크기
928쪽 | 1550g | 188*254*40mm
ISBN13
9788965400097

만든이 코멘트

안녕하세요 이 책의 저자입니다.
2011-03-21
이 책이 추구하는 목표는 안드로이드의 통신 개념을 잡는 차원을 넘어 안드로이드 패키지의 한계를 뛰어 넘는 기술을 배워 우리의 문제 해결 능력을 키우는데 있습니다. 그러한 기술을 소개하는 과정에서 실제 판매되는 통신 프로그램의 구현 방법을 보게 됩니다. (참고로 실습용으로 제작된 책이 아님을 말씀드리고 싶습니다.)

통신 프로그램을 작성하고 자 한다면 자바 언어는 기본이고 안드로이드에서 제공하는 기능이나 시스템 그리고 통신에 대한 각종 규정등의 다양한 지식을 요구합니다. 물론 자바 프로그램에서 제공하는 클래스와 메서드들을 사용해서 작성할 수 있지만 정확한 내용을 이해하지 못한다면, 수박 겉핥기와 같습니다.

그런 면에 있어 이 책의 내용은 고급서로 다소 어려울 수 있습니다. 공부하다가 이해가 되지 않는 사항들이 있으시면 “http://cafe.naver.com/webdroid”를 방문하여 질문하여 주시기 바랍니다. 저나 아니면 다른 분들이 의견을 물어 성심것 답변하거나 아니면 제가 부족한 지식들은 토론을 할 수 있는 장을 마련하도록 노력하겠습니다.

글을 읽어 주셔서 감사합니다.

출판사 리뷰

1부 인터넷 응용 프로그램
1부에서는 통신의 기본이 되는 TCP/IP 자바 소켓 통신과 스트림에 대해 언급하고 추가로 소켓 통신의 문제점과 함께 NIO에 대한 개념과 사용법도 배울 것입니다. 통신 프로그램의 반이상은 직간접적으로 웹과 관련된 프로그래밍일 것 같은데, 자바에서 제공하는 URLConnection이나 HttpURLConnection 클래스 이외에 실제 안드로이드에서 가장 많이 사용하는 아파치 HttpClient 컴포넌트를 소개합니다. 더불어 구글에서 제공하는 사이트를 대상으로 사용자 인증 작업과 실제 유투브 사이트에 필요한 파일들을 업로드하는 방법 그리고 필요한 정보를 추출하는 방법을 소개합니다.

1장 안드로이드와 자바 기초지식
이 책을 보시는 대부분의 독자분은 최소 한 권 정도의 안드로이드 입문서를 공부하였거나 아니면 자바 프로그램을 공부하신 분들이라 판단하고 있지만, 입문서의 난이도가 서로 다르고 또한 다루는 주제 역시 다르므로 1장을 통해 이 책에서 언급하는 안드로이드와 자바의 특징과 사용 기술에 대해 리마인드할 수 있는 기회를 제공합니다.

2장 안드로이드 소켓 통신
소켓 통신의 시작에 앞서 TCP와 UDP의 프로토콜과 3-way 핸드쉐이킹 그리고 TCP 흐름관리(Flow Control) 등을 소개합니다. 왜냐하면, 소켓 프로그램은 결과적으로 TCP 프로토콜을 만드는 과정이기 때문입니다. 그리고 소켓과 같이 사용하는 InetAddress나 SocketAddress 클래스를 포함하여 서버소켓과 소켓 그리고 마지막으로 UDP 데이터그램 소켓과 데이터그램 패킷 프로그램을 배울 것입니다. 안드로이드 소켓 프로그램 가운데 뜻밖에 서버소켓으로 프로그램된 애플리케이션이 많습니다. 따라서 이 장을 통해 배울 서버소켓은 안드로이드 이외에 서버 프로그램을 작성하실 때 많은 도움이 될 것입니다.

3장 통신과 스트림
통신에서 가장 많이 사용하는 클래스는 아마 스레드와 스트림일 것 같습니다. 스레드는 '1장 안드로이드와 자바의 기초지식'을 통해 배웠지만, 스트림은 종류와 기능이 많고 또한 객체 직렬화 그리고 문자(유니코드)와 바이트의 개념 정립이 필요한 만큼 아예 별도로 하나의 장으로 분류하였습니다.

4장 소켓 채널 통신
통신에서 가장 많이 사용하는 방식이 소켓이고 소켓만큼 사용하기 쉬운 클래스도 없을 것입니다. 쓰기 쉬운 만큼 단점이 존재하는데, 블록(Block)되는 현상과 스레드와 스트림에 의한 메모리 가비지 컬렉션 작업으로 인한 성능저하 문제일 것입니다. 이러한 문제를 해결하는 방안으로 태동한 기술이 NIO인데, 이 방식은 장점도 있지만 일단 사용이 어렵고 가독성이 떨어진다는 문제들로 인하여 사용이 저조합니다. 그러나 소켓채널과 소켓과의 차이점이 무엇인지 그리고 어떻게 사용하는지에 대해 알려드리고자 합니다.

5장 URL & URLConnection
HTTP 프로토콜을 사용하여 프로그램하는 방법은 5장부터 시작하여 7장까지 이어집니다. 안드로이드에서 제공하는 클래스를 알아보기 전에 이 장에서는 HTTP 프로토콜의 규정(RFC 2616)을 먼저 알아보고 자바에서 제공하는 java.net 패키지를 중심으로 URL과 URLConnection 그리고 HttpURLConnection 클래스를 사용하여 기본적인 웹 서버와 연결하는 방법과 사용자 인증에 대한 사항을 소개하고자 합니다. 아마 기본적인 HTTP를 사용하는 방법은 이 장을 통해 거의 해결될 것입니다.

6장 안드로이드 HttpClient
5장에서 제공하는 URL & URLConnection만으로는 인증이나 복잡한 작업을 수행하는 데 있어 한계가 있습니다. 안드로이드에서 이 문제를 해결하는 대안으로 제시한 것이 org.apache 패키지에서 제공하는 HttpClient입니다. 여기서는 앞서 배웠던 내용보다 다소 복잡한 예제를 들어, 패키지 설치 시 버전의 비교와 다운로드 후 패치 작업 등에 대해 배워보도록 하겠습니다. 그리고 HTTP 소켓 작업, 멀티 스레드, 라우팅 테이블 및 쿠키 사용 그리고 HTTPS 사용자 인증에 대해서도 소개합니다.

7장 안드로이드 계정과 서버동기화
안드로이드는 외부 서버와 연결하는 데 있어 두 종류의 프레임워크를 제공합니다. 하나는 계정관리자(AccountManager)이고 또 다른 하나는 싱크관리자(SyncManager)입니다. 이 장에서는 애플리케이션이 안드로이드 프레임워크인 계정관리자 또는 싱크관리자와 어떻게 연동하는지 알아봅니다. 그리고 서버로부터 사용자 인증을 받기 위해 제작해야 하는 계정인증자와 서버와의 동기화할 때 사용하는 싱크어댑터를 만드는 방법을 알아보고자 합니다.
그 이외에 Account & Sync 내에 애플리케이션을 등록시키는 방법과 서버와의 사용자 인증과 인증토큰을 얻는 방법 그리고 일반 액티비티에서 사용자 계정을 안드로이드에 등록시키는 방법을 알아볼 것입니다. 추가하여 6장에서 설명하지 못하였던 사용자 인증에 대한 구글 프로세스와 유튜브 업로드 시 필요한 프로세스를 소개합니다. 이 장을 통해 HTTP와 관련하여 안드로이드에서 제공하는 거의 모든 클래스와 메서드들을 소개하면서 인터넷 응용 프로그램을 마무리하게 됩니다.

2부 네트워크 시스템 프로그램
2부에서는 기본적인 통신 포트를 제어하는 클래스들을 소개합니다. 그러나 핵심 내용은 안드로이드의 SDK로 제공하지 않는 기능 구현을 위해 안드로이드 프레임워크를 사용하는 방법과 새로운 기술을 사용하여 기능을 구현하는 방법에 초점이 맞추어져 있습니다.

8장 3세대 무선 이동 통신
안드로이드에서 제공하는 2G와 3G 무선이동통신의 차이점과 원리를 알아보고, APN (Access Point Name), SMS/MMS 설정과 무선이동통신에 대한 제어에 대해 배울 것입니다. 또한 제조사에서 테스트를 위해 사용하는 비밀코드를 소개하는 자리가 될 것입니다.

9장 SMS와 MMS
SMS/MMS 관련 안드로이드 SmsManager와 SmsMessage 클래스를 소개하고 메시지 전송과 메시지 전송 확인 작업 및 SMS/MMS 수신 시 휴면(Sleeping) 상태에 있는 안드로이드를 깨우고 처리하는 파워 관리 방법 그리고 마지막으로 SMS/MMS 서비스와 연관된 안드로이드 콘텐트프로바이드의 URI를 소개합니다.

10장 안드로이드 블루투스 통신
"블루투스란 무엇인가?"부터 시작하여 블루투스 활성화와 비활성화 방법 그리고 주변 블루투스 기기를 찾는 검색(Inquiry) 방법 그리고 데이터 통신하는 방법을 배울 것입니다. 10장에서 이야기하는 데이터 통신은 TCP/IP의 데이터 통신이 아닌 블루투스 프레임으로 연결하여 데이터 통신을 수행하는 방법입니다.

11장 전화 수신과 블루투스 헤드셋
전화통신 서비스 가운데 하나인 전화수신과 블루투스의 핸드프리 헤드셋으로 연결하여 사용하는 프로그램을 배워보고자 합니다. 전화수신을 리플렉션(가로채기)하는 방법으로 음성 통화하는 방법과 블루투스 헤드셋에 문제 발생 시 순간적으로 다른 수신장치로 전화 연결시키는 방법을 소개합니다. 그리고 통화 중에 파워 버튼을 누르면 발생하는 현상과 원하지 않는 전화 수신을 거부하는 전화 정책을 설정하는 방법에 대해 알아봅니다. 블루투스 헤드셋 기능은 안드로이드의 BluetoothHeadset이라는 프레임워크 서비스로 제공합니다. 우리가 만든 애플리케이션은 BluetoothHeadset 프레임워크와 동일한 기능을 수행할 것입니다.

12장 안드로이드 와이파이 통신
안드로이드에서 제공하는 와이파이를 어떻게 설정하는지 그리고 무선접속장치(Access Point)를 스캔하고 무선접속장치와 연결하는 방법을 포함하여 8장에서 배웠던 무선 데이터 네트워크와의 인터넷 우선순위는 어떻게 설정하는지 배울 것입니다. 그리고 와이파이록을 사용하여 와이파이에서 중단 없이 인터넷을 사용하는 방법을 배울 것입니다.

13장 위치기반 서비스
이 장은 다른 장보다 다소 통신 기능은 약하지만, 일상생활에 많이 사용하는 위치기반 서비스를 소개합니다. 위치기반 서비스는 안드로이드의 '위치관리자'이라는 프레임워크를 통해 제공하는데, 안드로이드가 제공하는 SDK의 허와 실을 밝히고자 합니다. 그리고 지리좌표체계와 위치관리 그리고 위치정보 사용에 있어 안드로이드의 개발권고안을 비롯하여 구글맵을 소개하고 구글맵과 위치기반 서비스를 연동하는 프로그램을 소개합니다.

14장 네트워크 시스템 관리
이 장은 디바이스 관리나 edify 스크립트 그리고 안드로이드의 프로퍼티 등의 내용을 소개합니다. 개발자들이 시스템을 이해하는 데 도움이 되는 내용입니다. 그리고 안드로이드의 생명주기 작동 시 발생하는 브로드캐스트를 소개합니다. 액티비티가 백그라운드 작업으로 네트워크를 사용하더라도 안전하게 사용하는 방법을 배우게 되므로 안드로이드에서 네트워크 프로그램을 작성할 때 도움이 될 것으로 생각합니다.

15장 테더링과 애드혹 서비스
테더링과 애드혹은 안드로이드에서 제공하는 기능도 아니고 그렇다고 통신사나 제조사에서 넣은 기능도 아닙니다. 이 장은 다른 장과 달리 하나의 애플리케이션을 소개하는 형식으로 되어 있습니다. 더불어 이 장을 넣은 이유는 테더링과 같이 모든 기능을 순수하게 개발자에 의하여 안드로이드와 다른 개념과 관점에서 주어진 한계를 극복하고 어떻게 애플리케이션을 만드는지 여러분에게 소개하고자 마지막 장으로 채택하였습니다.

리뷰/한줄평7

리뷰

6.0 리뷰 총점

한줄평

첫번째 한줄평을 남겨주세요.