API 수준: 5
Android 2.0은 2009년 11월부터 Android 지원 핸드셋에 배포할 수 있는 주요 플랫폼 출시입니다. 이번 출시에는 사용자와 개발자를 위한 새로운 기능과 Android 프레임워크 API의 변경사항이 포함되어 있습니다.
개발자는 Android 2.0 플랫폼을 Android SDK의 다운로드 가능한 구성요소로 사용할 수 있습니다. 다운로드 가능한 플랫폼에는 완벽하게 호환되는 Android 라이브러리와 시스템 이미지와 일련의 에뮬레이터 스킨, 샘플 애플리케이션 등이 포함되어 있습니다. 다운로드 가능한 플랫폼은 완벽하게 호환되며 외부 라이브러리를 포함하지 않습니다.
Android 2.0 플랫폼을 대상으로 개발 또는 테스트를 시작하려면 Android SDK 및 AVD Manager 도구를 사용하여 플랫폼을 SDK로 다운로드하세요.
플랫폼 하이라이트
새로운 사용자 기능 및 플랫폼 하이라이트 목록은 Android 2.0 플랫폼 하이라이트 문서를 참고하세요.
내장 애플리케이션
다운로드 가능한 플랫폼에 포함된 시스템 이미지는 다음과 같은 내장 애플리케이션을 제공합니다.
|
|
Locales
다운로드 가능한 플랫폼에 포함된 시스템 이미지는 다양한 기본 제공 언어를 제공합니다. 경우에 따라 언어에 지역별 문자열을 사용할 수 있습니다. 다른 경우에는 언어의 기본 버전이 사용됩니다. Android 2.0 시스템 이미지에서 사용할 수 있는 언어는 아래와 같습니다(language_country/region 언어 설명자 포함).
|
|
현지화된 UI 문자열은 설정을 통해 액세스할 수 있는 언어와 일치합니다.
에뮬레이터 스킨
다운로드 가능한 플랫폼에는 여러 가지 화면 크기와 해상도로 애플리케이션을 모델링하는 데 사용할 수 있는 에뮬레이터 스킨 세트가 포함되어 있습니다. 에뮬레이터 스킨은 다음과 같습니다.
- QVGA(240x320, 저밀도, 작은 화면)
- WQVGA (240x400, 저밀도, 일반 화면)
- FWQVGA(240x432, 저밀도, 일반 화면)
- HVGA (320x480, 중밀도, 일반 화면)
- WVGA800 (480x800, 고밀도, 일반 화면)
- WVGA854(480x854 고밀도, 일반 화면)
모든 Android 지원 기기에서 제대로 표시되고 작동하는 애플리케이션을 개발하는 방법에 관한 자세한 내용은 여러 화면 지원을 참고하세요.
개발자 기능
아래 섹션에서는 다운로드 가능한 Android 2.0 플랫폼 구성요소에서 제공하는 새로운 개발자 기능에 관한 정보를 제공합니다.
개미 지원
- 디버그 모드 및 릴리스 모드 애플리케이션 서명 출시 모드 서명에는
zipalign
최적화를 위한 통합 지원이 포함됩니다. 자세한 내용은 애플리케이션 서명을 참조하세요. - Emma 계측 프로젝트(코드 적용 범위)를 지원하는 새로운 Ant 빌드 시스템을 추가했습니다.
Framework API
아래 섹션에서는 Android 2.0 플랫폼에서 제공하는 애플리케이션 프레임워크 API에 대한 정보를 제공합니다.
API 수준
Android 2.0 플랫폼은 업데이트된 버전의 프레임워크 API를 제공합니다. 이전 버전과 마찬가지로 Android 2.0 API에는 시스템 자체에 저장되는 정수 식별자(5)가 할당됩니다. 'API 수준'이라고 하는 이 식별자를 사용하면 애플리케이션을 설치하기 전에 시스템이 애플리케이션이 시스템과 호환되는지 올바르게 판단할 수 있습니다.
애플리케이션에서 Android 2.0에 도입된 API를 사용하려면 애플리케이션 매니페스트의 <uses-sdk>
요소 속성에 적절한 값인 '5'를 설정해야 합니다.
API 수준을 사용하는 방법에 관한 자세한 내용은 API 수준 문서를 참고하세요.
API 변경사항 요약
블루투스
- 블루투스 켜기/끄기
- 기기 및 서비스 검색
- RFCOMM을 사용하여 원격 기기에 연결하고 데이터를 주고받습니다.
- RFCOMM 서비스를 광고하고 수신 RFCOMM 연결을 수신 대기합니다
동기화 어댑터
- 동기화 어댑터를 사용하여 백엔드에 연결할 수 있는 새로운 API
계정 관리자
- 인증 토큰/비밀번호를 안전하게 저장하고 액세스하는 중앙 집중식 계정 관리자 API
연락처
- 여러 계정의 데이터를 허용하는 새로운 연락처 API
- 새로운 빠른 연락처 프레임워크 API를 사용하면 개발자가 앱에 연락처 배지를 만들 수 있습니다. 배지를 클릭하면 클릭 한 번으로 연락처와 연락할 수 있는 방법이 나열된 창이 열립니다.
WebView
- 지원 중단된 클래스: UrlInterceptHandler, Plugin, PluginData, PluginList, UrlInterceptRegistry.
카메라
- 색상 효과, 장면 모드, 플래시 모드, 초점 모드, 화이트 밸런스, 회전 및 기타 설정을 위한 새로운 매개변수.
- 확대/축소 수준이 변경될 때 작업을 실행하는 새로운 ZoomCallback 인터페이스
미디어
- 이제 MediaScanner는 MediaStore에 삽입될 때 모든 이미지의 썸네일을 생성합니다.
- 요청 시 이미지 및 동영상 썸네일을 검색하기 위한 새 썸네일 API
기타 프레임워크
- android.R.style의 새로운 시스템 테마로 현재 시스템 배경화면 위에 활동을 쉽게 표시하거나 이전 활동을 백그라운드에 계속 표시할 수 있습니다.
- 새 WallpaperManager API는 이전에 컨텍스트에 있던 배경화면 API를 대체하고 확장하여 애플리케이션이 시스템 배경화면을 요청하고 설정할 수 있도록 합니다.
- 애플리케이션이 서비스 수명 주기를 올바르게 처리하는 데 도움이 되는 새로운 Service API(특히 서비스가 실행 중일 때 종료될 수 있는 메모리 부족 상황에서 유용)
- Service.setForeground()가 지원 중단되었으며 이제는 실제로 아무런 작업도 실행하지 않습니다. 이 API는 진행 중인 알림을 포그라운드 상태와 연결하는 데 도움이 되며 이를 요구하는 새로운 API인 startForeground()로 대체되었습니다.
- 이제 MotionEvent가 이를 지원하는 기기의 동시 터치 정보를 보고할 수 있습니다. 최대 3개의 포인터를 동시에 추적할 수 있습니다.
- KeyEvent에는 action-on-up 및 길게 누르기 동작을 구현하는 데 도움이 되는 새로운 키 전달 API와 가상 키의 경우 키 누름을 취소하는 새로운 메커니즘이 있습니다.
- WindowManager.LayoutParams에는 창이 표시될 때 화면을 깨우고 화면이 잠겨 있어도 창을 표시할 수 있는 새로운 상수가 있습니다. 이를 통해 애플리케이션은 기기를 깨워야 하는 알람 시계와 같은 기능을 더 깔끔하게 구현할 수 있습니다.
- 기기의 도킹 상태를 브로드캐스트하고 기기가 데스크톱 또는 자동차 도크에 놓일 때 애플리케이션이 특수 활동을 실행할 수 있도록 하는 새로운 Intent API
키를 누를 때 실행되는 키 이벤트
Android 2.0은 실제 키 대신 HOME, MENU, BACK, SEARCH에 가상 키를 사용하는 기기에서 실행되도록 설계되었습니다. 이러한 기기에서 최고의 사용자 환경을 지원하기 위해 이제 Android 플랫폼은 키 다운이 아닌 키 다운/키 업 쌍의 키 업 시 이러한 버튼을 실행합니다. 이렇게 하면 의도치 않은 버튼 이벤트를 방지하고 사용자가 버튼 영역을 누른 다음 이벤트를 생성하지 않고 밖으로 드래그할 수 있습니다.
이 동작 변경사항은 버튼 이벤트를 가로채고 키를 뗄 때가 아니라 키를 누를 때 작업을 실행하는 애플리케이션에만 영향을 미칩니다. 특히 애플리케이션이 BACK 키를 가로채는 경우 애플리케이션이 키 이벤트를 제대로 처리하는지 확인해야 합니다.
일반적으로 애플리케이션에서 BACK 키를 가로채는 것은 권장되지 않지만, 애플리케이션에서 가로채고 키를 눌렀을 때가 아니라 키를 뗄 때 작업을 호출하는 경우 코드를 수정해야 합니다.
애플리케이션에서 Android 2.0(API 수준 5)에 도입된 API를 사용하는 경우 키 이벤트 쌍을 관리하는 데 새 API를 활용할 수 있습니다.
- 활동 또는 대화상자에서 뒤로 키를 가로채는 경우 새
onBackPressed()
메서드를 구현하기만 하면 됩니다. - 뷰에서 BACK 키를 가로채는 경우 새
startTracking()
메서드를 통해 키 누르기에 대한 키 이벤트를 추적한 다음 키를 뗄 때 작업을 호출해야 합니다. 사용할 수 있는 패턴은 다음과 같습니다.
Kotlin
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { KeyEvent.KEYCODE_BACK -> { if (event.repeatCount == 0) { event.startTracking() true } else { false } } ... else -> super.onKeyDown(keyCode, event) } } override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { KeyEvent.KEYCODE_BACK -> { if (event.isTracking && !event.isCanceled) { // *** DO ACTION HERE *** true } else { false } } ... else -> super.onKeyUp(keyCode, event) } }
자바
public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { event.startTracking(); return true; } return super.onKeyDown(keyCode, event); } public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking() && !event.isCanceled()) { // *** DO ACTION HERE *** return true; } return super.onKeyUp(keyCode, event); }
BACK 키 처리가 Android 2.0 및 이전 플랫폼 버전에서 모두 제대로 작동하도록 기존 애플리케이션을 업데이트하려면 위에 표시된 것과 유사한 접근 방식을 사용하면 됩니다. 코드는 키 다운 시 타겟 버튼 이벤트를 포착하고 키 이벤트를 추적하는 플래그를 설정한 다음 키 업 시 이벤트를 포착하여 추적 플래그가 설정된 경우 원하는 작업을 실행할 수 있습니다. 또한 포커스 변경을 감시하고 포커스를 획득/손실할 때 추적 플래그를 지우는 것이 좋습니다.
API 차이점 보고서
이전 버전과 비교하여 Android 2.0 (API 수준 5)의 API 변경사항을 자세히 보려면 API 차이점 보고서를 참고하세요.