원문 http://developer.android.com/sdk/android-2.3-highlights.html
번역 @softgear
비디오 http://www.youtube.com/watch?feature=player_embedded&v=Jx3pdWBlZ34 

안드로이드 2.3 플랫폼은 사용자들과 개발자들에게 많은 새롭고 신나는 기능을 소개한다. 
이 문서는 안드로이드 2.3의 새로운 기능과 기술에 대한 대략적인 내용을 제공한다. 
새 개발자 API에 관한 상세한 정보는 
Android 2.3 version notes (http://developer.android.com/sdk/android-2.3.html)를 참고하라.



새로운 사용자 기능들

단순함과 속도를 위한 UI 개선 

사용자 인터페이스가 시스템 전반에 거쳐서 개선되었다. 이는 쉽게 배울 수 있고, 사용하기에 좀더 빠르고, 
더 전력 효율적이 되도록 한다. 검정색 바탕의 단순화된 시각화 테마는 생생하고 선명함을 
상태바(notification bar) 및 메뉴들, UI의 다른 부분에 적용되었다. 메뉴와 설정의 변화는 사용자가 좀더 
쉽게 시스템과 장치의 기능들을 찾고 제어할 수 있도록 한다.

 


더 빨라진, 더 직관적인 텍스트 입력

안드로이드 소프트 키보드는 텍스트 입력과 편집을 더 빠르게 할 수 있도록 최적화 및 다시 설계되었다. 
향상된 타게팅을 위하여 키 자체의 모양과 위치가 변한다. 이는 좀 더 쉽게 볼 수 있게 하고 정확성과 
속도를 향상시킨다. 키보드는 또한 현재의 문자와 사전 추천을 좀더 크고 산뜻한 스타일로 하여 읽기 
쉽게 보여준다.
키보드는 사전의 추천으로부터 입력된 단어들을 수정할 수 있는 기능을 갖는다. 사용자가 이미 입력한 
단어를 선택하는 것에 따라, 키보드는 선택한 것을 변경,선택할 수 있는 추천 단어들를 보여준다. 
사용자는 또한 선택을 바꾸기 위해 음성 입력 모드로 전환할 수도 있다. 스마트 추천은 사용자가 추천 
단어를 선택한 다음 그것을 다시 바꿀 수 있게 한다.
새로운 멀티터치 키조합(key-chording)은 사용자가 빠르게 숫자나 기호를 입력할 수 있게 한다. 
이는 입력 모드를 수동으로 변경할 필요 없이, Shift와 <문자>, ?123과 <기호>를 누르면 된다.

원터치 단어 선택과 Copy&Paste
 
텍스트를 입력할 때 또는 웹페이지를 볼 때, 사용자는 길게 눌러서 빠르게 단어를 선택, 클립보드로 복사, 
붙이기가 가능하다. 단어를 누르면 free-selection 모드로 들어간다. 여기서 사용자는 끝에 있는 화살표를 
드래그함으로써 선택한 영역을 조정할 수 있다. 
문자 입력을 위하여, 사용자는 미끄러지듯 누르기(slide-press)를 하여 커서 모드로 들어갈 수 있다. 
그리고 나서, 커서 화살표를 드래그하여 커서를 쉽고 정확하게 위치할 수 있다. 
이제 선택 모드와 커서모드 모두에서 트랙볼의 사용이 불필요하게 되었다.
 

향상된 전원 관리

안드로이드 시스템은, 백그라운드로 실행되는 동안 CPU를 많이 사용하거나 너무 오랫동안 계속 깨어 
있는, 앱들을 관리하는 데 좀더 적극적인 역할을 수행한다. 그러한 앱들을 적절하게 닫아주는 관리를 해 
줌으로써, 시스템이 최대의 성능을 내고 배터리 사용시간을 최대로 하는데 도움을 준다.

시스템은 또한 실행되고 있는 앱과 시스템 컴포넌트들이 소모하는 전력에 대한 좀더 많은 시각적인 
정보를 제공한다. 응용프로그램 설정(Application Settings)은 어떻게 배터리가 사용되고 있는지 
정확한 개요를 제공한다. 여기에는 각 컴포넌트 또는 어플리케이션에 의해 소모된 상대적인 전력과 
사용량에 대한 상세한 것을 포함한다.

 

응용프로그램 제어 

홈스크린과 런처의 Option 메뉴에서 Manage Apps로의 바로가기가 생겼다. 이는 좀더 쉽게 응용프로그램 
액티비티를 관리하고 확인할 수 있게 한다. 일단 사용자가 Manage Apps로 들어가면, 새로운 Running 탭이 
활성화된(active) 어플리케이션의 목록과, 각각이 사용하고 있는 메모리와 스토리지를 보여준다. 
사용자는 각 어플리케이션에 대한 좀더 자세한 정보를 읽을수 있으며, 필요에 따라 종료하거나, 개발자에게 
피드백 리포트를 할 수 있다.

통신 및 조직화의 새로운 방법들

업데이트된 표준 어플리케이션들은 사용자가 정보와 관계들을 다루는 새로운 접근방법을 제시한다.


- 인터넷전화
사용자는 SIP 계정을 가진 다른 사용자들에게 인터넷 전화를 걸 수 있다. 사용자는 주소록에 인터넷 
전화 번호 (SIP address)를 추가할 수 있으며, Quick Contact 또는 Dialer에서 바로 인터넷 전화를 걸 수 
있다. 인터넷 전화를 사용하기 위해서, 사용자는 SIP 서비스 제공업체의 계정을 만들어야 한다. 인터넷 
전화 기능은 SIP 계정을 제공하지는 않는다. 추가적으로, 특정 장치의 SIP 및 인터넷 전화 기능에 관한 
지원은 제조사 및 그와 연계된 통신사에 의해 결정된다.



- 근거리무선통신(NFC, Near-field communication) 
NFC Reader 어플리케이션은 사용자가 NFC 태그를 읽고 상호작용을 할 수 있도록 한다. 예를 들어 
사용자는 포스터나 스티커, 광고에 포함되어 있는 NFC 태그를 "만지거나(touch)", "쓸어버릴(swipe)" 수 
있다. 그 다음에는, 태그로부터 읽은 데이터에 따라 동작한다. 통상적인 사용은, 식당 또는 가게, 
이벤트에서 태그를 읽는 것이 될 것이다. 그 다음에는, 태그 데이터에 포함된 URL로 점프하여 등록을 
한다던가 등급을 매길 수 있다. NFC 통신은 장치 하드웨어의 무선 기술에 의존한다. 따라서 특정 
장치의 NFC 기능 지원 여부는 제조사에 의해 결정된다.

 

- 다운로드 관리
Downloads 어플리케이션은 사용자가 쉽게 브라우저 또는 이메일, 다른 어플케이션에서 받은 파일들에 
쉽게 접근할 수 있게 한다. Downloads는 시스템 내에 있는 새로운 다운로드 매니저 기능 위에 올라간다. 
다운로드 매니저는 다른 어플리케이션들이 쉽게 다운로드를 저장하고 관리할 수게 한다.

- 카메라
어플리케이션은 이제 사용자가 복수 개의 카메라를 사용할 수 있게 한다. 이는 전면 카메라를 포함한다.

 

새로운 개발자 기능들

안드로이드 2.3은 다양한 기능과 API를 제공하여 개발자들이 새로운 형태의 응용프로그램을 안드로이드 
플랫폼으로 가져오게 한다.

  • 게이밍을 위한 향상
  • 새로운 통신 형태들
  • 풍성한 멀티미디어

게이밍을 위한 향상

- 성능(Performance)
안드로이드 2.3은 모든 어플리케이션이 보다 빠르고 효율적으로 동작하도록 시스템 전반에 거친 여러가지 
향상을 포함한다. 특히 게임 개발자들을 위한 것으로,

  • 동시 가베지 컬렉터 (Concurrent garbage collector) - Dalvik VM은 새로운 동시 가베지 컬렉터를 
    소개한다. 이는 어플리케이션의 일시 멈춤 현상을 최소화하여, 애니메이션이 보다 부드러워지고, 
    게임 같은 어플리케이션의 응답성을 증가시키는데 도움을 준다. 
  • 더 빠른 이벤트 배포 (Faster event distribution) - 플랫폼은 터치와 키보드 이벤트를 더 빠르고 
    효율적으로 처리한다. 이는 이벤트 배포 동안 CPU의 사용을 최소화 한다. 이 변경은 모든 어플리케이션의 
    응답성을 향상시킨다. 특히 3D 그래픽 또는 CPU 위주 동작들과 같이 동작하는 터치 이벤트를 사용하는 
    게임에게 효과적이다.
  • 업데이트된 비디오 드라이버 (Updated video drivers) - 플랫폼은 OpenGL ES 동작의 효율성을 향상시키는 
    업데이트된 써드파티 비디오 드라이버들을 사용한다. 그래서 전체적인 3D 그래픽의 성능을 향상시킨다.
- 네이티브 입력과 센서 이벤트 (Native input and sensor events) 
네이티브 코드를 사용하는 어플리케이션은 네이티브 코드에서 입력이나 센서 이벤트를 직접 받아서 처리할 
수 있다. 이는 드라마틱하게 효율성과 응답성을 향상시킨다.

플랫폼에서 제공하는 네이티브 라이브러리는 어플리케이션들이 프레임웍을 통해 제공되는 것과 같은 
형태의 입력 이벤트를 다룰 수 있게 한다. 어플리케이션들은 모든 지원되는 센서 종류로부터 이벤트들을 
수신할 수 있고, 특성 센서를 켜거나 끌 수 있으며, 이벤트 전달 속도와 큐잉을 다룰 수 있다.

- 향상된 3D 모션 처리를 위한 자이로스코프, 새로운 센서들
  (Gyroscope and other new sensors, for improved 3D motion processing)
 
안드로이드 2.3은 새로운 타입의 센서를 지원하는 API를 추가한다. 여기에는 자이로스코프(gyroscope), 
회전(rotation vector), 선형가속(linear acceleration), 중력(gravity), 기압계(barometer) 센서들을 
포함한다. 어플리케이션은 장치에 내장된 센서들을 조합하여, 3차원 모션이나 자세하고 정확한 방향
변화를 추적할 수 있다. 예를 들어 게임 어플리케이션은 자이로스코프와 가속도계를 읽어 복잡한 
사용자의 제스쳐와 모션들(기울이기,회전,밀기,자르기-tilt, spin, thrust,slice)을 인식할 수 있다.

- 네이티브 오디오에 대한 Open API (Open API for native audio)
플랫폼은 Khronos OpenSL ES (http://www.khronos.org/opensles/) 의 소프트웨어 구현을 제공한다. 
이는 네이티프 코드에서 강력한 오디오 제어 및 효과에 접근할 수 있게 하는 표준 API이다. 어플리케이션은 
오디오 장치를 다루고 오디오 입력,출력을 제어하거나 직접 처리하기 위해 이 API를 사용할 수 있다. 

- 네이티브 그래픽 관리(Native graphics management)
플랫폼은 Khronos EGL(http://www.khronos.org/egl/) 라이브러리로의 인터페이스를 제공한다. 
이는 어플리케이션이 네이티브에서 그래픽 컨텍스트를 다루거나 OpenGL ES texture와 surface를 만들고 
다룰 수 있게 한다.

- 네이티브에서 액티비티 라이프사이클, 윈도우 관리로의 접근 
  (Native access to Activity lifecycle, window management)
네이티브 어플리케이션이 NativeActivity 라는 새로운 형태의 클래스를 선언할 수 있다. 이 클래스는 
라이프사이클 콜백이 네이티브 코드에 직접 구현되어 있다. NativeActivity와 그것과 연계된 네이티브 
코드는 시스템에서 다른 액티비티와 마찬가지로 동작한다. 그들은 어플리케이션의 시스템 프로세스 
내에서 실행되며, 어플리케이션의 메인 UI 쓰레드에서 수행되고, 다른 액티비티처럼 라이프사이클 
콜백을 받는다.

플랫폼은 또한 윈도우를 다룰 수 있는 네이티브 API를 제공한다. 이는 직접 윈도우에 그리기 위한 
pixel buffer를 잠그고/푸는 기능을 포함한다. 이 API를 통하여, 어플리케이션은 프레임웍 Surface 
object와 연계된 네이티브 윈도우 object를 얻을 수 있고, 네이티브에서 직접 상호동작할 수 있다.


- 네이티브에서 Asset과 Storage에 접근 (Native access to assets, storage)
어플리케이션은 이제 네이티브 Asset Manager API를 사용하여 JNI를 통할 필요 없이 어플리케이션 
asset에 직접 접근할 수 있다. 만약 asset이 압축되어 있으면, 어플리케이션이 asset 데이터를 읽을 때, 
플랫폼이 압축을 해제하여 스트리밍 해 준다. 이제 더 이상 압축된 .apk asset의 읽을 수 있는 사이즈 
제한이 없어진다.

추가적으로, 어플리케이션은 Storage Manager API를 사용하여, 시스템이 관리하거나 다운로드된 
OBB파일들(Opaque Binary Blob)를 직접 다룰 수 있다. 그런데, 비록 플랫폼이 안드로이드 2.3에서 
OBB를 지원하지만, OBB파일을 생성하고 다루는 개발 툴은 2011년 초까지는 나오지 않을 것이다.

- 견고한 네이티브 개발 환경(Robust native development environment)
Android NDK (r5이상)은 안드로이드 2.3 플랫폼에서 제공되는 풍성한 네이티브 환경을 사용할 수 있는 툴, 
툴체인, 라이브러리의 완전한 세트를 제공한다. 자세한 정보 또는 NDK를 다운 받기위해서는 Android NDK 페이지(http://developer.android.com/sdk/ndk/index.html)를 보라.

새로운 통신 형태들

- 인터넷전화(Internet telephony)
개발자들은 이제 SIP기반 인터넷 전화 기능을 자기 어플리케이션에 추가할 수 있다. 안드로이드 2.3은 full 
SIP 프로토콜 스택 및 통합된 호 관리 서비스을 포함한다. 이는 어플리케이션이, 세션 관리라던가 
트랜스포트 계층의 통신 또는 오디오 녹음 및 재생을 직접 관리하지 않고도, 쉽게 전화를 걸거나 받게 한다. 
특정 장치의 SIP 와 인터넷 전화 기능의 지원여부는 제조사와 통신사에 따라 결정된다.

- 근거리무선통신(Near Field Communications,NFC)
플랫폼의 NFC지원은 개발자가 완전히 새로운 부류의 안드로이드 어플리케이션을 만들 수 있게 한다. 
개발자는 근접성에 기반한 정보을 제공하는 새로운 어플리케이션과 사용자 및 기관, 상인 및 광고사업자들을 
위한 서비스를 만들 수 있다.

NFC API를 사용하여, 사용자가 NFC 기능이 있는 장치를 스티커 및 스마트 포스터, 어떤 다른 장치 등에 
내장된 요소로 갖다 대면("touches"), 어플리케이션은 NFC 태그 발견("discovered")에 응답할 수 있다. 
관심 있는 태그가 수집되면, 어플케이션은 태그에 응답하여, 그것으로부터 메시지를 읽은 후, 필요에 따라 
사용자에게 물어보고 메시지를 저장한다.

NFC 통신은 장치 하드웨어의 무선 기술에 의존한다. 따라서 특정 장치의 NFC 기능 지원 여부는 제조사에 
의해 결정된다.

풍성한 멀티미디어

- 믹스 가능한 오디오 이펙트 (Mixable audio effects)
새로운 오디오 이펙트 API는 개발자들이 쉽게 풍성한 오디오 환경을 만들 수 있게 한다. 이는 오디오 트랙 
또는 사운드에 대한 이퀄라져, 베이스 부스트, 헤드폰 시각화 (widened soundstage), 리벌브를 추가할 수 
있다. 개발자는 복수개의 트랙을 넘어서며 개별 트랙에 복수의 이펙트들을 섞거나, 전체에 대해 이펙트를 
적용할 수 있다.


- 새로운 미디어 포맷 지원 (Support for new media formats)
플랫폼은 VP8 오픈 비디오 압축 포맷과 WebM 오픈 컨테이너 포맷을 지원한다. 플랫폼은 또한 AAC 
인코딩과 (소프트웨어적으로) AMR wideband 인코딩을 지원한다. 어플리케이션은 더 좋은 음질의 
오디오를 캡쳐할 수 있다.

- 복수개의 카메라에 접근(Access to multiple cameras)
카메라 API는 개발자가 장치에 있는 어떤 카메라에도 접근할 수 있게 한다. 여기에는 전면(front-facing) 
카메라도 포함된다. 어플리케이션은 장치에 있는 카메라의 수를 얻을 수 있고, 카메라의 종류 및 특성을 
얻을 수 있고, 필요에 따라 카메라를 사용할 수 있다. 예를 들면, 비디오 채팅 어플리케이션은 낮은 화질을 
제공하는 전면 카메라를 사용하기를 원할 것이고, 사진 어플리케이션은 고화질의 후면 카메라를 사용하고자 
할 것이다.

새로운 플랫폼 기술들

멀티미디어 프레임웍(Media Framework)

  • 새로운 미디어 프레임웍은 OpenCore를 완전히 대체한다. 인코딩/디코딩을 위한 모든 이전 코덱,
    컨테이너 지원을 그대로 유지한다.
  • VP8 오픈 비디오 코덱 포맷과 WebM 오픈 컨테이너 포맷의 통합 지원
  • AAC 인코딩과 AMR wideband encoding 추가

리눅스 커널 (Linux Kernel)

  • 2.6.35로 업데이트

네트워킹 (Networking)

  • SIP 스택, 제조사가 구성 가능함
  • NFC 지원, 제조사가 구성 가능함
  • BlueZ 스택 업데이트

달빅 런타임 (Dalvik runtime)

  • Dalvik VM:
    • 동시 가베지 컬렉터 Concurrent garbage collector (3ms이하 일시정지 목표) 
    • 더 많은 JIT (code-generation) 최적화 추가
    • 향상된 코드 검증 
    • 성능과 메모리 이슈를 확인하기 위한 StrictMode 디버깅
  • Core libraries:
    • Expanded I18N 지원 (full worldwide encodings, more locales)
    • 더 빠른 Formatter와 number formatting. 예를 들어 float formatting이 2.5x배 빨라짐
    • HTTP responses를 디폴트로 gzip 압축함. XML과 JSON API response 크기가 60%이상 줄어듦
    • 새로운 collections 과 utilities APIs
    • 향상된 network APIs
    • 향상된 파일 읽기/쓰기 제어
    • JDBC 업데이트
  • 이전 프로젝트로부터의 업데이트:
    • OpenSSL 1.0.0a
    • BouncyCastle 1.45
    • ICU 4.4
    • zlib 1.2.5

새 개발자 API에 관한 더 많은 정보를 위해서는, 
Android 2.3 version notes(http://developer.android.com/sdk/android-2.3.html) 와 
API Differences Report(http://developer.android.com/sdk/api_diff/9/changes.html)를 보라.

+ Recent posts