Android 2.0, 버전 1

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 플랫폼 하이라이트 문서를 참고하세요.

내장 애플리케이션

다운로드 가능한 플랫폼에 포함된 시스템 이미지는 다음과 같은 내장 애플리케이션을 제공합니다.

  • 알람 시계
  • 브라우저
  • 계산기
  • 캠코더
  • 카메라
  • 연락처
  • 맞춤 언어 (개발자 앱)
  • 개발자 도구 (개발자 앱)
  • 다이얼러
  • 이메일
  • 갤러리
  • 동작 빌더
  • 일본어 텍스트 입력용 IME
  • 메시지
  • 음악
  • 설정
  • 예비 부품 (개발자 앱)

Locales

다운로드 가능한 플랫폼에 포함된 시스템 이미지는 다양한 기본 언어를 제공합니다. 지역에 따라 지역별 문자열을 사용할 수 있는 경우도 있습니다. 그 외의 경우에는 기본 언어 버전이 사용됩니다. Android 2.0 시스템 이미지에서 사용할 수 있는 언어는 language_country/region 언어 설명어와 함께 나열되어 있습니다.

  • 중국어, PRC (zh_CN)
  • 중국어, 타이완 (zh_TW)
  • 체코어 (cs_CZ)
  • 네덜란드어, 네덜란드 (nl_NL)
  • 네덜란드어, 벨기에 (nl_BE)
  • 영어, 미국 (en_US)
  • 영어, 영국 (en_GB)
  • 영어, 캐나다 (en_CA)
  • 영어, 오스트레일리아 (en_AU)
  • 영어, 뉴질랜드 (en_NZ)
  • 영어, 싱가포르(en_SG)
  • 프랑스어, 프랑스 (fr_FR)
  • 프랑스어, 벨기에 (fr_BE)
  • 프랑스어, 캐나다 (fr_CA)
  • 프랑스어, 스위스 (fr_CH)
  • 독일어, 독일 (de_DE)
  • 독일어, 오스트리아 (de_AT)
  • 독일어, 스위스 (de_CH)
  • 독일어, 리히텐슈타인 (de_LI)
  • 이탈리아어, 이탈리아 (it_IT)
  • 이탈리아어, 스위스 (it_CH)
  • 일본어 (ja_JP)
  • 한국어 (ko_KR)
  • 폴란드어 (pl_PL)
  • 러시아어 (ru_RU)
  • 스페인어 (es_ES)
  • 현지화된 UI 문자열은 설정을 통해 액세스할 수 있는 언어와 일치합니다.

    에뮬레이터 스킨

    다운로드 가능한 플랫폼에는 다양한 화면 크기 및 해상도에서 애플리케이션을 모델링하는 데 사용할 수 있는 에뮬레이터 스킨 세트가 포함되어 있습니다. 에뮬레이터 스킨은 다음과 같습니다.

    • QVGA (240x320, 저밀도, 소형 화면)
    • WQVGA (240x400, 저밀도, 일반 화면)
    • FWQVGA (240x432, 저밀도, 일반 화면)
    • HVGA (320x480, 중밀도, 일반 화면)
    • WVGA800 (480x800, 고밀도, 일반 화면)
    • WVGA854 (480x854 고밀도, 일반 화면)

    모든 Android 지원 기기에서 제대로 표시되고 작동하는 애플리케이션을 개발하는 방법에 관한 자세한 내용은 여러 화면 지원을 참고하세요.

    개발자 기능

    아래 섹션에서는 다운로드 가능한 Android 2.0 플랫폼 구성요소에서 제공하는 새로운 개발자 기능에 대한 정보를 제공합니다.

    개미 지원

    • 디버그 및 출시 모드 애플리케이션 서명 출시 모드 서명에는 zipalign 최적화를 위한 통합 지원이 포함됩니다. 자세한 내용은 애플리케이션 서명하기를 참고하세요.
    • Emma 계측 프로젝트를 지원하는 새로운 Ant 빌드 시스템이 추가되었습니다 (코드 적용 범위).

    프레임워크 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

    연락처

    • 여러 계정의 데이터를 허용하는 새로운 Contacts API
    • 새로운 Quick Contact 프레임워크 API를 사용하면 개발자가 앱에서 연락처 배지를 만들 수 있습니다. 배지를 클릭하면 클릭 한 번으로 사용자에게 연락할 수 있는 방법 목록이 있는 창이 열립니다.

    WebView

    • 지원 중단된 클래스: UrlInterceptHandler, Plugin, PluginData, PluginList, UrlInterceptRegistry

    카메라

    • 색상 효과, 장면 모드, 플래시 모드, 초점 모드, 화이트 밸런스, 회전 및 기타 설정에 대한 새로운 매개변수가 추가되었습니다.
    • 확대/축소 수준이 변경되었을 때 작업을 실행하는 새로운 ZoomCallback 인터페이스입니다.

    미디어

    • 이제 MediaScanner는 MediaStore에 삽입될 때 모든 이미지의 썸네일을 생성합니다.
    • 요청 시 이미지 및 동영상 썸네일을 검색하는 새 썸네일 API

    기타 프레임워크

    • 현재 시스템 배경화면 위에 활동을 쉽게 표시하거나 이전 활동을 백그라운드에 계속 표시하는 android.R.style의 새로운 시스템 테마
    • 새로운 WallpaperManager API는 이전에 Context에 있던 배경화면 API를 대체하고 확장하여 애플리케이션이 시스템 배경화면을 요청하고 설정할 수 있도록 합니다.
    • 새로운 Service API를 사용하면 특히 서비스가 실행 중에 종료될 수 있는 메모리 부족 상황에서 애플리케이션이 서비스 수명 주기를 올바르게 처리할 수 있습니다.
      • Service.setForeground()가 지원 중단되어 이제 효과적으로 작업을 실행하지 않습니다. 진행 중인 알림을 포그라운드 상태와 연결하는 데 도움이 되고 연결을 필요로 하는 새로운 API인 startForeground()로 대체됩니다.
    • 이제 MotionEvent가 이를 지원하는 기기의 동시 터치 정보를 보고할 수 있습니다. 최대 3개의 포인터를 동시에 추적할 수 있습니다.
    • KeyEvent에는 작업 시 동작 및 길게 누르기 동작을 구현하는 데 도움이 되는 새로운 키 전달 API와 키 누름을 취소하는 (가상 키의 경우) 새로운 메커니즘이 있습니다.
    • WindowManager.LayoutParams에는 창이 표시될 때 화면을 깨우고 화면이 잠겨 있더라도 창을 표시할 수 있는 새로운 상수가 있습니다. 이를 통해 애플리케이션은 기기의 절전 모드를 해제해야 하는 알람 시계와 같은 것을 더 깔끔하게 구현할 수 있습니다.
    • 기기의 도킹 상태를 브로드캐스트하고 기기가 데스크톱 또는 차량용 도크에 배치될 때 애플리케이션이 특수 활동을 실행할 수 있도록 하는 새로운 인텐트 API입니다.

    키업 시 실행되는 키 이벤트

    Android 2.0은 실제 키가 아닌 홈, 메뉴, 뒤로, 검색에 가상 키를 사용하는 기기에서 실행되도록 설계되었습니다. 이러한 기기에서 최상의 사용자 환경을 지원하기 위해 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)
          }
      }
      

      Java

      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);
          }
      

    뒤로 키 처리가 Android 2.0과 이전 플랫폼 버전에서 모두 제대로 작동하도록 기존 애플리케이션을 업데이트하려면 위에 표시된 것과 유사한 접근 방식을 사용하면 됩니다. 코드는 키 다운 시 타겟 버튼 이벤트를 포착하고 키 이벤트를 추적하는 플래그를 설정한 다음 키 업 시 이벤트를 포착하여 추적 플래그가 설정된 경우 원하는 작업을 실행할 수 있습니다. 또한 포커스 변경을 확인하고 포커스를 획득하거나 잃을 때 추적 플래그를 지우는 것이 좋습니다.

    API 차이점 보고서

    이전 버전과 비교한 Android 2.0 (API 수준 5)의 API 변경사항에 관한 자세한 내용은 API 차이점 보고서를 참고하세요.