728x90
Froyo는 Java5 기반이었으나 Gingerbread는 Java6 기반으로 Java API를 업그레이드하여 일부 java.*, javax.* 패키지의 API가 변경됨
그 외 일부 Android 개선사항이 반영되어 android.* 패키지의 API가 변경됨
변경된 메소드는 Android Developers의 Android API Differences Report 문서 참조

아래는 Tstore Developer Center에서 제공하는 내용임.

NFC 관련

가) NfcAdapter, NdefMessage, NdefRecord 로 구성된 android.nfc 패키지가 추가됨.
NfcAdapter는 NFC H/W에 대한 핸들을 제공하며,NDEF(NFC Data Exchange Format)의 개별 레코드는 NdefRecord, 레코드의 셋은 NdefMessage로 표현됨

나) NFC 지원 단말은 NFC Service가 백그라운드에서 구동되며 NFC 태그를 읽으면 읽혀진 NDEFMessage를 extra data로 하는 ACTION_TAG_DISCOVERED intent를 브로드캐스트하므로 NFC 기능을 활용하는 App은 AndroidManifest.xml에 아래의 intent-filter 엘리먼트를 포함해야 함
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>

다) NFC 기능을 활용하는 App은 아래 퍼미션을 AndroidManifest.xml에 명시해야 하며, 구동 시 NfcAdapter의 isEnabled() 메소드를 호출해서 단말의 NFC 지원여부를 확인해야 함
<uses-permission android:name="android.permission.NFC">

라) NFC 기능을 활용하는 App은 구글마켓에서 NFC 미지원 단말에게 노출되지 않기 위해 AndroidManifest.xml에 아래 엘리먼트를 포함해야 함
<uses-permission android:name="android.permission.NFC">


센서 관련

자이로를 포함한 신규 센서를 활용하는 App은 구글마켓에서 미지원 단말에게 노출되지 않기 위해 AndroidManifest.xml에 아래 엘리먼트 중 필요한 항목을 포함해야 함
<uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true">
<uses-feature android:name="android.hardware.sensor.barometer" android:required="true">


카메라 관련

단말의 특정 카메라를 선택하기 위해 Camera 클래스에 카메라의 개수를 확인하고, 특정 카메라의 정보를 획득하고, 특정 카메라를 선택하는 메소드들이 추가되고, 각 카메라의 캠코더 기능 또한 선택해서 확인할 수 있음


음향효과 관련 

음향효과를 제공하기 위해 android.media.audiofx 패키지가 추가되었으며, Equalizer, Virtualizer, BassBoost, PresetReverb, EnvironmentalReverb 등 음향효과 클래스가 추가됨
각 음향효과는 트랙별 또는 전체에 적용될 수 있으며, 트랙별로 음향효과를 적용하기 위해 AutioTrack 클래스와 MediaPlayer 클래스가 수정됨


멀티미디어 프레임웍 관련

가) 멀티미디어 프레임웍이 Opencore가 완전히 제거되고 Stagefright로 대체됨.
일반 App에는 영향이 없으나 DRM 등 멀티미디어 프레임웍의 플러그인 형태의 App은 수정 개발해야 함

나) JPEG 메타데이터의 위치정보 중 위도/경도 외에 고도 태그를 읽을 수 있는 API가 추가됨


다운로더 관련 

가) HTTP 기반의 파일 다운로드를 제공하는 DownloadManager 백그라운드 서비스가 추가됨.
App은 바인더를 통해 DownloadManager에게 다운로드를 요청,쿼리,취소할 수 있음

나) 각 다운로드 항목은 인디케이터에 표시되며 사용자가 항목을 클릭하면 DownloadManager가 AC-TION_NOTIFICATION_CLICKED intent를 브로드캐스트하므로,  다운로드를 요청한 App은 broadcast receiver를 통해 필요한 동작을 할 수 있음

다) 단말이 재부팅되거나 네트워크 연결상태가 변경되면 DownloadManager가 자동으로 이어받기를 진행하며 다운로드 파일은 디폴트로 공용 폴더에 저장되나 다운로드 요청 시 다른 폴더를 저장폴더로 설정할 수 있음


StrictMode 관련 

가) Android App의 메인 쓰레드는 반응성을 높이기 위해 UI관련 이벤트를 주로 처리하며 파일 I/O 또는 네트워크 I/O는 별도 쓰레드에서 처리하는 것이 좋음.
또한, DB접속을 명시적으로 종료하지 않으면 일시적인 메모리 leak이 발생하며 DB접속에 부하가 발생하므로 DB접속을 명시적으로 종료해야 함

나) StrictMode는 App의 메인 쓰레드에서 I/O가 발생하는지, DB접속이 명시적으로 종료되지 않는지 검출하기 위해 신규 제공되는 디버깅 목적의 클래스임


UI 프레임웍 관련 

가) View와 Widget에서 오버스크롤링 지원 추가

나) Touch spoofing을 막기 위해 Toast 등에 가려진 View가 터치 이벤트를 받지 않는 기능 추가

다) 입력이벤트와 입력장치에 대한 베이스클래스를 정의하여 일관된 이벤트 hierarchy를 구성하여 입력이벤트와 입력장치에 대한 속성을 확인할 수 있도록 함

라) 멀티포인트 멀티터치 트래킹이 가능하도록 MotionEvent 클래스 확장함. 각 터치포인트는 “pointer ID”로 관리됨.

마) 텍스트 선택 컨트롤을 일반 App에서 활용 가능하도록 BaseInputConnection, InputConnection, In-putConnectionWrapper 클래스 확장

바) ActivityInfo에 화면 orientation 항목이 추가되고, RunningAppProcessInfo에 empty, background, service, foreground, visible 외에 perceptible 항목이 추가됨 (백그라운드 뮤직 플레이어 등의 용도)

사) Notification 텍스트와 아이콘 스타일을 정의하기 위한 항목 추가함


대(xlarge) 화면 지원 관련 

가) Froyo의 고해상도(xhdpi) 지원에 이어 7인치 이상의 대화면(xlarge) 지원을 추가함.

나) App은 AndroidManifest.xml에 아래 엘리먼트를 추가하여 대화면 지원 여부를 명시할 수 있음
<supports-screens android:xlargeScreens=”true”/”false”>

다) App 패키징 시 대화면용 App 리소스는 xlarge 폴더에 두어야 함


그래픽 관련 

가) OpenGL ES 2.0 메소드 중 Froyo에서 지원되지 않은 glDrawElements()와 glVertexAttribPointer()를 추가함

나) YV12 픽셀포맷 지원을 추가함


Content Provider 관련 

가) 검색 결과를 바로 재생하기 위한 PLAY_FROM_SEARCH intent가 MediaStore에 추가됨. 음성인식을 통한 미디어 재생에 활용함.

나) 특정 App의 관리화면과 응용프로그램관리 초기화면으로 바로 진입할 수 있도록 Settings에 APPLICATION_DETAILS_SETTINGS intent와 MANAGE_ALL_APPLI CATIONS_SETTINGS intent가 추가됨

다) SIP 주소를 저장할 수 있도록 ContactsContract에 ContactsContract.CommonData Kinds.SipAddress 타입 추가됨


Location 관련 

가) LocationManager에게 위치정보를 요청해서 wake lock이나 WiFi lock을 유발한 App을 트랙킹하여 응용프로그램관리 메뉴의 App별 배터리 사용 정보에 반영함

나) Activity는 LocationManager의 requestLocationUpdates() 또는 requestSingleUpdate() 메소드를 통해 위치정보를 주기적 또는 일회성으로 업데이트받도록 등록할 수 있음.
위치정보 제공자는 명시적으로 선택하거나, Criteria 클래스를 통해 특정 조건 (정확도, 전력소모량, 속도, 비용 등)에 맞는 제공자 선택 가능


Storage 관련 

가) OBB(Opaque Binary Blob) 지원을 위한 StorageManager 클래스 추가됨.
OBB 파일은 마운트해서 사용하는 별도의 파티션이고 StorageManager는 특정 OBB의 마운트여부 확인, 마운트, 언마운트를 수행함

나) Android 2.3은 외장SD가 없는 단말도 허용함.
외장SD를 필요로하는 App은 isExternalStorageRe-movable() 메소드를 통해 외장SD 존재 여부 확인 가능


Package Manager 관련 

가) 패키지정보에 최초설치시간과 최종업데이트시간 필드 추가됨

나) 특정 컨텐츠 프로바이더에 대한 정보를 제공하는 getProviderInfo() 메소드 추가됨

추가된 screenOrientation 속성 값

설명

reverseLandscape

상하가 뒤집힌 Landscape 화면

reversePortait

상하가 뒤집힌 Portrait 화면

sensorLandscape

Landscape 모드이되 상하 선택은 센서 활용

sensorPortrait

Portrait 모드이되 상하 선택은 센서 활용

fullSensor

Landscape, Portrait, 상하 선택에 센서 활용



728x90

'Developer > Android' 카테고리의 다른 글

Android 외장메모리 경로 추출  (0) 2011.04.26
TabActivity 구현  (0) 2011.01.17
삼성 갤럭시탭 AVD Add-on Link  (0) 2010.11.08

+ Recent posts