Android 4.3
더욱 향상된 Jelly Bean 버전인 Android 4.3에 오신 것을 환영합니다.
Android 4.3에는 사용자와 개발자를 위한 성능 최적화 및 뛰어난 새로운 기능이 포함되어 있습니다. 이 문서에서는 개발자를 위한 새로운 기능을 간략하게 설명합니다.
새로운 개발자 API에 관한 자세한 내용은 Android 4.3 API 문서를 참고하세요.
www.android.com에서 사용자를 위한 새로운 Jelly Bean 기능에 관해 자세히 알아보세요.
속도, 부드러움, 반응성 향상
Android 4.3은 vsync 타이밍, 트리플 버퍼링, 터치 지연 시간 단축, CPU 입력 부스트, 하드웨어 가속 2D 렌더링 등 Jelly Bean에 이미 포함된 성능 개선사항을 기반으로 하며 Android의 속도를 더욱 높여주는 새로운 최적화 기능을 추가합니다.
그래픽 성능 향상을 위해 이제 하드웨어 가속 2D 렌더기가 그리기 명령어의 스트림을 최적화하여 그리기 작업을 재정렬하고 병합하여 더 효율적인 GPU 형식으로 변환합니다. 렌더기는 멀티스레드 처리를 위해 이제 여러 CPU 코어에서 멀티스레딩을 사용하여 특정 작업을 실행할 수도 있습니다.
Android 4.3은 또한 도형과 텍스트의 렌더링을 개선합니다. 이제 원 및 둥근 직사각형과 같은 도형이 더 효율적인 방식으로 더 높은 품질로 렌더링됩니다. 텍스트 최적화에는 여러 글꼴 또는 복잡한 글리프 세트 (CJK)를 사용할 때의 성능 향상, 텍스트 크기 조정 시의 렌더링 품질 향상, 그림자 렌더링 속도 향상이 포함됩니다.
창 버퍼 할당이 개선되어 앱의 이미지 버퍼 할당 속도가 빨라지므로 창을 만들 때 렌더링을 시작하는 데 걸리는 시간이 줄어듭니다.
최고 성능의 그래픽을 위해 Android 4.3에는 OpenGL ES 3.0 지원이 도입되어 프레임워크와 네이티브 API를 통해 앱에서 액세스할 수 있습니다. 지원되는 기기에서 하드웨어 가속 2D 렌더링 엔진은 OpenGL ES 3.0을 활용하여 텍스처 관리를 최적화하고 그라데이션 렌더링 충실도를 높입니다.
고성능 그래픽을 위한 OpenGL ES 3.0
Android 4.3에는 Khronos OpenGL ES 3.0 플랫폼 지원 기능이 도입되어 지원되는 기기에서 게임과 기타 앱이 최고 성능의 2D 및 3D 그래픽 기능을 제공합니다. Android 네이티브 개발 키트 (NDK)를 통해 프레임워크 API 또는 네이티브 API 바인딩을 사용하여 OpenGL ES 3.0 및 관련 EGL 확장 프로그램을 활용할 수 있습니다.
OpenGL ES 3.0에서 제공되는 새로운 주요 기능에는 고급 시각 효과 가속화, 표준 기능으로 고품질 ETC2/EAC 텍스처 압축, 정수 및 32비트 부동 소수점을 지원하는 새로운 버전의 GLSL ES 셰이딩 언어, 고급 텍스처 렌더링, 표준화된 텍스처 크기 및 렌더링 버퍼 형식이 포함됩니다.
OpenGL ES 3.0 API를 사용하여 다양한 호환 Android 기기에서 실행되는 매우 복잡하고 효율적인 그래픽을 만들 수 있으며 이러한 기기에서 단일 표준 텍스처 압축 형식을 지원할 수 있습니다.
OpenGL ES 3.0은 기본 그래픽 하드웨어에 종속되는 선택적 기능입니다. Nexus 7 (2013), Nexus 4, Nexus 10 기기에서는 이미 지원되고 있습니다.
향상된 블루투스 연결 기능
블루투스 스마트 기기 및 센서와 연결
이제 블루투스 스마트 기술을 사용하는 저전력의 최신 소형 기기 및 센서와 상호작용하는 앱을 설계하고 빌드할 수 있습니다.
![](https://developer.android.google.cn/static/images/jb-btle.png?authuser=8&hl=ko)
Android 4.3은 블루투스 스마트 기기와 상호작용하기 위한 단일 표준 API를 제공합니다.
Android 4.3은 중심 역할로 블루투스 스마트 지원을 위한 내장 플랫폼 지원을 도입하고 앱이 근처 기기를 검색하고 GATT 서비스를 쿼리하며 특성을 읽고 쓰는 데 사용할 수 있는 표준 API 집합을 제공합니다.
새로운 API를 사용하면 앱에서 관심 있는 기기와 서비스를 효율적으로 검색할 수 있습니다. 각 기기에서 UUID별로 지원되는 GATT 서비스를 확인하고 기기 ID 및 신호 강도별로 연결을 관리할 수 있습니다. 기기에서 호스팅되는 GATT 서버에 연결하여 특성을 읽거나 쓰거나 특성을 변경할 때마다 알림을 수신하도록 리스너를 등록할 수 있습니다.
GATT 프로필에 대한 지원을 구현할 수 있습니다. 표준 특성을 읽거나 쓰거나 필요에 따라 맞춤 특성 지원을 추가할 수 있습니다. 앱은 클라이언트 또는 서버로 작동할 수 있으며, 둘 중 어느 모드에서나 데이터를 송수신할 수 있습니다. API는 일반적이므로 근접 태그, 시계, 피트니스 측정기, 게임 컨트롤러, 리모컨, 건강 기기 등 다양한 기기와의 상호작용을 지원할 수 있습니다.
블루투스 스마트 지원 기능은 Nexus 7 (2013) 및 Nexus 4 기기에서 이미 지원되고 있으며, 향후 몇 달 내에 더 많은 Android 호환 기기에서 지원될 예정입니다.
AVRCP 1.3 프로필
Android 4.3에는 블루투스 AVRCP 1.3 지원이 기본 제공되므로 앱이 원격 스트리밍 미디어 기기와 더욱 풍부한 상호작용을 지원할 수 있습니다. 미디어 플레이어와 같은 앱은 Android 4.0에 도입된 원격 제어 클라이언트 API를 통해 AVRCP 1.3을 활용할 수 있습니다. 이제 앱은 블루투스를 통해 연결된 원격 기기의 재생 컨트롤을 노출하는 것 외에도 트랙 이름, 작곡가 및 기타 유형의 미디어 메타데이터와 같은 메타데이터를 전송할 수 있습니다.
AVRCP 1.3의 플랫폼 지원은 Android 4.2에서 Google 및 Broadcom에 의해 도입된 Bluedroid 블루투스 스택을 기반으로 합니다. Nexus 기기 및 A2DP/AVRCP 기능을 제공하는 기타 Android 호환 기기에서 즉시 지원됩니다.
제한된 프로필 지원
![제한된 프로필 설정](https://developer.android.google.cn/static/images/jb-profiles-create-n713.png?authuser=8&hl=ko)
태블릿 소유자는 설정에서 하나 이상의 제한된 프로필을 설정하고 독립적으로 관리할 수 있습니다.
![프로필에서 제한 설정](https://developer.android.google.cn/static/images/jb-profiles-restrictions-n713.png?authuser=8&hl=ko)
앱은 프로필에서 실행될 때 소유자가 앱 콘텐츠를 관리할 수 있도록 제한 사항을 제공할 수 있습니다.
Android 4.3은 단일 기기에서 사용자와 사용자의 기능을 관리하는 새로운 방법인 제한된 프로필로 태블릿의 멀티 사용자 기능을 확장합니다. 제한된 프로필을 사용하면 태블릿 소유자가 각 사용자를 위한 별도의 환경을 빠르게 설정할 수 있으며 이러한 환경에서 제공되는 앱의 세분화된 제한을 관리할 수 있습니다. 제한된 프로필은 친구 및 가족, 게스트 사용자, 키오스크, POS 기기 등에 이상적입니다.
각각의 제한된 프로필은 자체 로컬 저장소, 홈 화면, 위젯, 설정이 있는 안전한 격리된 공간을 제공합니다. 사용자와 달리 프로필은 소유자가 설치한 앱과 시스템 계정을 기반으로 태블릿 소유자의 환경에서 생성됩니다. 소유자는 새 프로필에서 사용 설정할 설치된 앱을 제어하며, 소유자 계정에 대한 액세스는 기본적으로 사용 중지됩니다.
로그인, 환경설정 또는 기타 용도로 소유자 계정에 액세스해야 하는 앱은 매니페스트 속성을 선언하여 선택할 수 있으며 소유자는 프로필 구성 설정에서 이러한 앱을 검토하고 관리할 수 있습니다.
개발자는 제한된 프로필을 통해 사용자에게 더 많은 가치와 제어 기능을 제공할 수 있습니다. 앱 제한(앱에서 지원하는 콘텐츠 또는 기능 제어)을 구현하고 프로필 구성 설정에서 태블릿 소유자에게 이를 알릴 수 있습니다.
사전 정의된 부울, 선택, 다중 선택 유형을 사용하여 프로필 구성 설정에 앱 제한을 직접 추가할 수 있습니다. 더 많은 유연성을 원한다면 프로필 구성 설정에서 자체 UI를 시작하여 원하는 유형의 제한을 제공할 수도 있습니다.
앱에서 실행될 때 앱은 소유자가 구성한 제한사항을 확인하고 적절하게 적용할 수 있습니다. 예를 들어 미디어 앱은 소유자가 프로필의 콘텐츠 수위를 설정하도록 제한을 제공할 수 있습니다. 런타임에 앱은 콘텐츠 수위 설정을 확인한 다음 기본 설정된 콘텐츠 수위에 따라 콘텐츠를 관리할 수 있습니다.
앱이 제한된 프로필에서 사용하도록 설계되지 않은 경우 모든 제한된 프로필에서 앱을 사용 설정할 수 없도록 완전히 선택 해제할 수 있습니다.
최적화된 위치 및 센서 기능
Google Play 서비스는 앱에서 사용할 수 있는 고급 위치 API를 제공합니다. Android 4.3은 배터리 사용을 최소화하는 새로운 하드웨어 및 소프트웨어 기능으로 지원되는 기기에서 이러한 API를 최적화합니다.
하드웨어 지오펜싱은 소프트웨어가 아닌 기기 하드웨어에서 위치 계산을 실행하여 전력 효율성을 최적화합니다. 하드웨어 지오펜싱을 지원하는 기기에서 Google Play 서비스 지오펜싱 API는 기기가 이동하는 동안 이 최적화를 활용하여 배터리를 절약할 수 있습니다.
Wi-Fi 검색 전용 모드는 사용자가 Wi-Fi 네트워크에 연결하지 않고도 Wi-Fi 검색을 켠 상태로 유지하여 위치 정확도를 개선하는 동시에 배터리를 절약할 수 있도록 하는 새로운 플랫폼 최적화입니다. 위치 서비스에 Wi-Fi를 사용하는 앱은 이제 사용자에게 Wi-Fi 고급 설정에서 검색 전용 모드를 사용 설정하도록 요청할 수 있습니다. Wi-Fi 검색 전용 모드는 기기 하드웨어에 종속되지 않으며 Android 4.3 플랫폼의 일부로 사용할 수 있습니다.
새로운 센서 유형을 통해 앱은 센서 판독값을 더 잘 관리할 수 있습니다. 게임 개발자는 게임 회전 벡터를 사용하여 자기 간섭에 대해 걱정할 필요 없이 기기의 회전을 감지할 수 있습니다. 보정되지 않은 자이로스코프 및 보정되지 않은 자기계 센서는 원시 측정값과 추정된 바이어스를 앱에 보고합니다.
새로운 하드웨어 기능은 Nexus 7 (2013) 및 Nexus 4 기기에서 이미 사용할 수 있으며 모든 기기 제조업체 또는 칩셋 공급업체는 자체 기기에 이러한 기능을 빌드할 수 있습니다.
새 미디어 기능
모듈식 DRM 프레임워크
차세대 미디어 서비스의 요구사항을 충족하기 위해 Android 4.3에는 미디어 애플리케이션 개발자가 MPEG DASH (Dynamic Adaptive Streaming over HTTP, ISO/IEC 23009-1)와 같은 자체 스트리밍 프로토콜에 DRM을 더 쉽게 통합할 수 있는 모듈식 DRM 프레임워크가 도입되었습니다.
미디어 DRM 프레임워크는 새로운 API와 기존 API의 개선사항을 결합하여 라이선스 및 프로비저닝 관리, 하위 수준의 코덱 액세스, 암호화된 미디어 데이터 디코딩을 위한 통합 서비스 세트를 제공합니다. 새 MediaExtractor API를 사용하면 DASH 미디어의 PSSH 메타데이터를 가져올 수 있습니다. 미디어 DRM 프레임워크를 사용하는 앱은 라이선스 서버와의 네트워크 통신을 관리하고 콘텐츠 라이브러리에서 암호화된 데이터의 스트리밍을 처리합니다.
VP8 인코더
Android 4.3에는 프레임워크 및 네이티브 API에서 액세스할 수 있는 VP8 인코딩 지원 기능이 내장되어 있습니다. 네이티브 API를 사용하는 앱의 경우 플랫폼에는 VP8 프로필과 수준을 지원하는 OpenMAX 1.1.2 확장 헤더가 포함됩니다. VP8 인코딩 지원에는 타겟 비트 전송률, 속도 제어, 프레임 속도, 토큰 파티션 나누기, 오류 복원력, 재구성 및 루프 필터 설정이 포함됩니다. 플랫폼 API는 다양한 형식의 VP8 인코더 지원을 도입하므로 개발자는 콘텐츠에 가장 적합한 형식을 활용할 수 있습니다.
VP8 인코딩은 Android 4.3을 실행하는 모든 호환 기기의 소프트웨어에서 사용할 수 있습니다. 또한 최고의 성능을 위해 이 플랫폼은 가능한 기기에서 하드웨어 가속 VP8 인코딩을 지원합니다.
표면에서 동영상 인코딩
Android 4.3부터는 노출 영역을 동영상 인코더의 입력으로 사용할 수 있습니다. 예를 들어 이제 버퍼 간에 복사할 필요 없이 OpenGL ES 노출 영역에서 인코더로 스트림을 전달할 수 있습니다.
Media Muxer
앱은 새로운 Media Muxer API를 사용하여 기본 오디오 및 동영상 스트림을 단일 출력 파일로 결합할 수 있습니다. 현재 앱은 단일 MPEG-4 오디오 스트림과 단일 MPEG-4 동영상 스트림을 단일 MPEG-4 출력 파일로 멀티플렉싱할 수 있습니다. 새 API는 Android 4.2에서 도입된 미디어 역다중화 API에 대응됩니다.
원격 제어 클라이언트의 재생 진행률 및 스크러빙
Android 4.0부터 미디어 플레이어 및 유사 애플리케이션은 기기 잠금 화면, 알림, 블루투스를 통해 연결된 원격 기기와 같은 원격 제어 클라이언트에서 재생 컨트롤을 제공할 수 있었습니다. Android 4.3부터 이러한 애플리케이션은 이제 원격 제어 클라이언트를 통해 재생 진행률과 속도를 노출하고 특정 재생 위치로 점프하는 명령어를 수신할 수 있습니다.
멋진 앱을 빌드할 수 있는 새로운 방법
알림에 액세스
알림을 통해 사용자가 시스템 전체의 정보와 업데이트를 모두 한곳에서 볼 수 있으므로 오래 전부터 알림이 널리 사용되어 왔습니다. 이제 Android 4.3에서 앱은 사용자의 권한으로 알림 스트림을 관찰하고 블루투스를 통해 연결된 근처 기기로 알림을 보내는 등 원하는 방식으로 알림을 표시할 수 있습니다.
알림 리스너 서비스를 등록하고 사용자의 권한으로 상태 표시줄에 표시되는 알림을 수신할 수 있는 새로운 API를 통해 알림에 액세스할 수 있습니다. 원래 앱, 게시 시간, 콘텐츠 뷰 및 스타일, 우선순위에 관한 모든 세부정보와 함께 알림이 전체적으로 전송됩니다. 알림의 관심 필드를 평가하고, 앱에서 컨텍스트를 처리하거나 추가하고, 원하는 방식으로 표시되도록 라우팅할 수 있습니다.
새 API는 알림이 추가, 업데이트, 삭제될 때 콜백을 제공합니다 (사용자가 알림을 닫았거나 원래 앱이 알림을 철회했기 때문). 알림 또는 알림의 작업에 연결된 인텐트를 시작할 수 있을 뿐만 아니라 시스템에서 닫을 수도 있으므로 앱에서 알림에 대한 완전한 사용자 인터페이스를 제공할 수 있습니다.
사용자는 알림을 수신할 수 있는 앱을 여전히 제어할 수 있습니다. 언제든지 설정을 통해 어떤 앱이 알림에 액세스할 수 있는지 확인하고 필요에 따라 액세스를 사용 설정 또는 중지할 수 있습니다. 알림 액세스는 기본적으로 사용 중지되어 있습니다. 앱은 새 인텐트를 사용하여 사용자를 설정으로 바로 안내하여 설치 후 리스너 서비스를 사용 설정할 수 있습니다.
뷰 오버레이
이제 View 및 ViewGroups 위에 투명 오버레이를 만들어 기본 레이아웃 계층 구조를 방해하지 않고 임시 뷰 계층 구조 또는 일시적인 애니메이션 효과를 렌더링할 수 있습니다. 오버레이는 뷰를 컨테이너 외부로 슬라이드하거나 뷰 계층 구조에 영향을 주지 않고 화면의 항목을 드래그하는 등의 애니메이션을 만들고자 할 때 특히 유용합니다.
광학 경계 레이아웃 모드
새로운 레이아웃 모드를 사용하면 클립 경계가 아닌 광학 경계에 따라 ViewGroups 내에서 View의 위치를 관리할 수 있습니다. 클립 경계는 위젯의 실제 외부 경계를 나타내며 새 광학 경계는 클립 경계 내에서 위젯이 표시되는 위치를 설명합니다. 광학 경계 레이아웃 모드를 사용하여 그림자, 빛과 같은 외부 시각 효과를 사용하는 위젯을 올바르게 정렬할 수 있습니다.
맞춤형 회전 애니메이션 유형
이제 앱은 기기가 회전할 때 창에서 사용되는 이탈 및 항목 애니메이션 유형을 정의할 수 있습니다. 창 속성을 설정하여 점프 컷, 크로스 페이드 또는 표준 창 회전을 사용 설정할 수 있습니다. 창이 전체 화면이고 다른 창에 의해 가려지지 않은 경우 시스템은 맞춤 애니메이션 유형을 사용합니다.
화면 방향 모드
앱은 기기를 뒤집을 때 올바른 방향으로 표시되도록 활동의 새로운 방향 모드를 설정할 수 있습니다. 또한 앱은 새 모드를 사용하여 현재 방향으로 화면을 잠글 수 있습니다. 이 기능은 동영상 촬영 중에 회전을 사용 중지하려는 카메라를 사용하는 앱에 유용합니다.
빠른 응답 처리를 위한 인텐트
Android 4.3에는 모든 앱에서 빠른 응답을 처리할 수 있는 새로운 공개 인텐트가 도입되었습니다. 빠른 응답(전화를 받거나 기기의 잠금을 해제할 필요 없이 수신 전화에 응답하여 사용자가 보내는 문자 메시지)을 처리하세요. 앱이 인텐트를 수신 대기하고 메시지 시스템을 통해 호출자에게 메시지를 보낼 수 있습니다. 인텐트에는 메시지 자체는 물론 수신자 (발신자)도 포함됩니다.
전 세계 사용자 지원
![](https://developer.android.google.cn/static/images/jb-rtl-arabic-n4.png?authuser=8&hl=ko)
![](https://developer.android.google.cn/static/images/jb-rtl-hebrew-n4.png?authuser=8&hl=ko)
Android 4.3의 더 많은 부분이 RTL 언어에 최적화됩니다.
RTL 개선
Android 4.3에는 RTL 성능이 향상되었으며, ProgressBar/Spinner 및 PotentialListView를 비롯한 프레임워크 UI 위젯에서 더 광범위한 RTL을 지원합니다. uiautomatorviewer
도구를 통해 더 많은 디버깅 정보를 볼 수 있습니다. 또한 이제 알림, 탐색 메뉴, 작업 모음 등 더 많은 시스템 UI 구성요소가 RTL을 인식합니다.
RTL 스크립트에서 더 나은 시스템 전체 환경을 제공하기 위해 이제 더 많은 기본 시스템 앱에서 런처, 빠른 설정, 휴대전화, 피플, 설정 마법사, 시계, 다운로드 등을 포함한 RTL 레이아웃을 지원합니다.
현지화를 위한 유틸리티
![](https://developer.android.google.cn/static/images/jb-pseudo-locale-zz.png?authuser=8&hl=ko)
Pseudo-locale을 사용하면 앱의 현지화를 더 쉽게 테스트할 수 있습니다.
Android 4.3에는 더 나은 RTL 문자열을 만들고 현지화된 UI를 테스트하기 위한 새로운 유틸리티 및 API도 포함되어 있습니다. 새로운 BidiFormatter 클래스는 유니코드 문자열을 래핑하기 위한 간단한 API를 제공하므로 RTL 스크립트 데이터가 LTR 언어 메시지에서 의도한 대로 표시되고 그 반대의 경우도 마찬가지입니다. 앱에서 이 유틸리티를 더 광범위하게 사용할 수 있도록 이제 Android SDK의 지원 패키지를 통해 이전 플랫폼 버전에서도 BidiFormatter API를 사용할 수 있습니다.
여러 언어의 날짜 형식을 관리하는 데 도움이 되도록 Android 4.3에는 개발자가 지정한 언어에 대해 현지화된 가장 적합한 유니코드 UTS 날짜 형식을 자동으로 생성하는 새로운 getBestDateTimePattern() 메서드가 포함되어 있습니다. 이는 사용자에게 좀 더 현지화된 환경을 제공할 수 있는 편리한 방법입니다.
다른 언어에서 앱을 더 쉽게 테스트할 수 있도록 Android 4.3에서는 새로운 개발자 옵션으로 pseudo-locale이 도입되었습니다. 유사 언어는 언어 또는 언어 그룹과 관련된 언어, 스크립트 및 디스플레이 특성을 시뮬레이션합니다. 현재 악센트 영어의 유사 언어로 테스트할 수 있습니다. 이를 통해 UI가 다양한 유럽 언어에서 사용되는 스크립트 악센트 및 문자와 어떻게 작동하는지 확인할 수 있습니다.
접근성 및 UI 자동화
Android 4.3부터 접근성 서비스는 단축키를 처리하거나 동작 기반 입력으로 탐색 패리티를 제공하는 등 주요 이벤트를 관찰하고 필터링할 수 있습니다. 서비스는 이벤트를 수신하고 시스템이나 설치된 다른 앱으로 전달되기 전에 필요에 따라 처리할 수 있습니다.
접근성 서비스는 새로운 기능 속성을 선언하여 서비스가 할 수 있는 작업과 사용하는 플랫폼 기능을 설명할 수 있습니다. 예를 들어 주요 이벤트를 필터링하거나, 창 콘텐츠를 검색하거나, 터치하여 탐색을 사용 설정하거나, 웹 접근성 기능을 사용 설정하는 기능을 선언할 수 있습니다. 경우에 따라 서비스는 기능 속성을 선언해야 관련 플랫폼 기능에 액세스할 수 있습니다. 시스템은 서비스의 기능 속성을 사용하여 사용자를 위한 선택 대화상자를 생성하므로 사용자는 실행 전에 기능을 보고 동의할 수 있습니다.
Android 4.3의 접근성 프레임워크를 기반으로 하는 새로운 UI 자동화 프레임워크를 사용하면 테스트가 사용자 작업을 시뮬레이션하고 화면 콘텐츠를 검사하여 기기의 UI와 상호작용할 수 있습니다. UI 자동화 프레임워크를 통해 기본 작업 실행, 화면 회전 설정, 입력 이벤트 생성, 스크린샷 찍기 등의 작업이 가능합니다. 이는 여러 앱에 걸쳐 있는 작업이나 시퀀스를 포함하여 현실적인 사용자 시나리오에서 테스트를 자동화하는 강력한 방법입니다.
엔터프라이즈 및 보안
WPA2-Enterprise 네트워크용 Wi-Fi 구성
이제 앱에서 WPA2 엔터프라이즈 액세스 포인트에 연결하는 데 필요한 Wi-Fi 사용자 인증 정보를 구성할 수 있습니다. 개발자는 새로운 API를 사용하여 엔터프라이즈에서 사용되는 인증 방법에 대해 확장 가능 인증 프로토콜 (EAP) 및 캡슐화된 EAP (2단계) 사용자 인증 정보를 구성할 수 있습니다. Wi-Fi에 액세스하고 변경할 수 있는 권한이 있는 앱은 다양한 EAP 및 Phase 2 인증 방법의 사용자 인증 정보를 구성할 수 있습니다.
SELinux로 강화된 Android 샌드박스
Android는 이제 Linux 커널의 강제 액세스 제어 (MAC) 시스템인 SELinux를 사용하여 UID 기반 애플리케이션 샌드박스를 보강합니다. 이를 통해 잠재적인 보안 취약점으로부터 운영체제를 보호합니다.
KeyChain 기능 향상
KeyChain API는 이제 애플리케이션에서 시스템 전체 키가 기기의 신뢰할 수 있는 하드웨어 루트에 바인딩되었는지 확인할 수 있는 메서드를 제공합니다. 이는 루트 또는 커널 손상이 발생한 경우에도 기기에서 내보낼 수 없는 비공개 키를 만들거나 저장할 장소를 제공합니다.
Android 키 저장소 공급자
Android 4.3에는 애플리케이션이 독점 사용 키를 만들 수 있는 API와 키 저장소 제공자가 도입되었습니다. API를 사용하면 앱은 다른 앱에서 보거나 사용할 수 없으며 사용자 상호작용 없이 키 저장소에 추가할 수 있는 비공개 키를 만들거나 저장할 수 있습니다.
키 저장소 제공자는 KeyChain API가 시스템 전체 사용자 인증 정보(예: 기기에 사용자 인증 정보 결합)에 제공하는 것과 동일한 보안 이점을 제공합니다. 키 저장소의 비공개 키는 기기에서 내보낼 수 없습니다.
Android 앱에서 Setuid 제한
이제 zygote로 생성된 프로세스를 위해 /system
파티션이 nosuid
마운트되어 Android 애플리케이션이 setuid
프로그램을 실행하지 못합니다. 따라서 루트 공격 표면과 잠재적인 보안 취약점의 가능성이 줄어듭니다.
성능 분석을 위한 새로운 방법
![](https://developer.android.google.cn/static/images/jb-systrace.png?authuser=8&hl=ko)
Systrace는 새로운 명령어 구문을 사용하여 사용자가 더 많은 유형의 프로파일링 데이터를 수집할 수 있도록 허용합니다.
향상된 Systrace 로깅
Android 4.3은 사용하기 더 쉽고 더 많은 유형의 정보에 액세스하여 앱 성능을 프로파일링할 수 있는 향상된 버전의 Systrace 도구를 지원합니다. 이제 하드웨어 모듈, 커널 함수, Dalvik VM(가비지 컬렉션, 리소스 로드 등)에서 트레이스 데이터를 수집할 수 있습니다.
Android 4.3에는 Systrace 시작/종료 이벤트를 사용하여 추적할 특정 코드 섹션을 표시하는 데 사용할 수 있는 새로운 Trace API도 포함되어 있습니다. 표시된 코드 섹션이 실행되면 시스템은 시작/종료 이벤트를 트레이스 로그에 씁니다. 앱 성능에 미치는 영향이 거의 없으므로 보고된 타이밍을 통해 앱이 실행하는 작업을 정확하게 볼 수 있습니다.
Systrace 출력 파일의 타임라인에서 앱별 이벤트를 시각화하고 다른 커널 및 사용자 공간 트레이스 데이터의 컨텍스트에서 이벤트를 분석할 수 있습니다. 기존 Systrace 태그와 함께 맞춤 앱 섹션을 사용하면 앱의 성능과 동작을 새로운 방식으로 이해할 수 있습니다.
![](https://developer.android.google.cn/static/images/jb-gpu-profile-clk-n4.png?authuser=8&hl=ko)
![](https://developer.android.google.cn/static/images/jb-gpu-profile-cal-n4.png?authuser=8&hl=ko)
Android 4.3의 화면 GPU 프로파일링
화면 GPU 프로파일링
Android 4.3에는 앱 성능을 분석하고 모든 기기나 에뮬레이터에서 렌더링 문제를 정확히 찾아낼 수 있는 새로운 개발자 옵션이 추가되었습니다.
프로필 GPU 렌더링 옵션에서 이제 앱이 실행되는 동안 앱의 효과적인 프레임 속도를 화면에 시각화할 수 있습니다. 화면의 막대 또는 선 그래프로 프로파일링 데이터를 표시할 수 있으며, 색상은 그리기 명령어 생성(파란색), 명령어 실행 (주황색), 명령어 완료 대기(노란색)에 소요된 시간을 나타냅니다. 시스템은 화면 그래프를 지속적으로 업데이트하여 탐색 메뉴와 알림바를 비롯하여 표시되는 각 활동의 그래프를 표시합니다.
녹색 선은 렌더링 작업의 16ms 임계값을 강조 표시하므로 60fps 목표를 기준으로 앱의 유효 프레임 속도를 평가할 수 있습니다 (1초의 1/60은 약 16ms이기 때문). 녹색 선을 넘는 작업이 발견되면 Systrace 및 기타 도구를 사용하여 작업을 추가로 분석할 수 있습니다.
Android 4.2 이상을 실행하는 기기에서는 개발자 옵션이 기본적으로 숨겨져 있습니다. 호환되는 Android 기기의 설정 > 휴대전화 정보 > 빌드 번호에서 7번 탭하여 언제든지 표시할 수 있습니다.
file URI에 대한 StrictMode 경고
StrictMode 도구의 최신 추가 기능은 앱이 file://
URI를 시스템이나 다른 앱에 노출할 때 경고를 표시하는 정책 제약 조건입니다. 경우에 따라 수신 앱이 file://
URI 경로에 액세스하지 못할 수도 있으므로 앱 간에 파일을 공유할 때 적절한 권한과 함께 content://
URI를 사용해야 합니다. 이 새로운 정책은 이러한 사례를 포착하고 수정하는 데 도움이 됩니다. 파일을 다른 앱에 저장하고 노출하는 편리한 방법을 찾고 있다면 지원 라이브러리에서 제공되는 FileProvider
콘텐츠 제공자를 사용해 보세요.
Android 4.2
![스마트폰과 태블릿의 Android 4.2](https://developer.android.google.cn/static/images/jb-device-2.png?authuser=8&hl=ko)
Jelly Bean의 최신 버전, Android 4.2에 오신 것을 환영합니다!
Android 4.2는 성능 최적화, 새로운 시스템 UI, 사용자와 개발자를 위한 뛰어난 새로운 기능을 제공합니다. 이 문서에서는 개발자를 위한 새로운 기능을 간략하게 설명합니다.
새로운 개발자 API에 관한 자세한 내용은 Android 4.2 API 문서를 참고하세요.
www.android.com에서 사용자를 위한 새로운 Jelly Bean 기능에 관해 자세히 알아보세요.
속도, 부드러움, 반응성 향상
Android 4.2는 vsync 타이밍, 트리플 버퍼링, 터치 지연 시간 단축, CPU 입력 부스트 등 Jelly Bean에 이미 포함된 성능 개선사항을 기반으로 하며 Android의 속도를 한층 더 높여주는 새로운 최적화 기능을 추가합니다.
하드웨어 가속 2D 렌더기가 개선되어 스크롤 및 스와이프와 같은 일반적인 애니메이션이 더 부드럽고 빨라집니다. 특히 레이어, 클리핑, 특정 도형 (둥근 직사각형, 원형, 타원형)의 경우 그리기가 최적화됩니다.
다양한 WebView 렌더링 최적화로 웹페이지 스크롤이 더 부드러워지고 잡음과 지연이 사라집니다.
Android의 Renderscript Compute는 휴대기기 GPU에서 직접 실행되도록 이식된 최초의 계산 플랫폼입니다. 가능한 경우 항상 GPU 계산 리소스를 자동으로 활용하여 그래픽 및 이미지 처리 성능을 크게 개선합니다. 지원되는 기기에서 RenderScript를 사용하는 모든 앱은 재컴파일 없이 GPU 통합의 이점을 즉시 누릴 수 있습니다.
새로워진 세련된 UI
Android 4.2는 Jelly Bean 사용자 환경을 개선하고 상태 표시줄, 시스템 표시줄, 알림 창과 같은 친숙한 Android UI 패턴을 모든 태블릿에 제공합니다.
이제 모든 화면 크기에서 상단에 상태 표시줄이 있으며, 알림 풀다운 액세스 및 새로운 빠른 설정 메뉴도 제공됩니다. 양손에서 쉽게 액세스할 수 있는 버튼과 함께 친숙한 시스템 표시줄이 하단에 나타납니다. 애플리케이션 트레이도 모든 화면 크기에서 사용할 수 있습니다.
여러 사용자가 하나의 태블릿 공유
이제 여러 사용자가 단일 Android 태블릿을 공유할 수 있으며, 각 사용자는 전용 사용자 공간에 편리하게 액세스할 수 있습니다. 사용자는 잠금 화면에서 한 번의 터치로 자신의 공간으로 전환할 수 있습니다.
멀티 사용자 기기에서 Android는 사용자별로 에뮬레이션된 SD 카드 저장소를 비롯한 별도의 환경을 각 사용자에게 제공합니다. 사용자는 자신만의 홈 화면, 위젯, 계정, 설정, 파일, 앱도 가지며 시스템에서 이러한 항목을 별도로 유지합니다. 모든 사용자는 핵심 시스템 서비스를 공유하지만 시스템은 각 사용자의 애플리케이션과 데이터를 격리된 상태로 유지합니다. 실제로 여러 사용자 각각이 고유한 Android 기기를 가지고 있습니다.
사용자는 언제든지 자신의 환경에서 앱을 설치 및 제거할 수 있습니다. 저장공간을 절약하기 위해 Google Play는 기기의 다른 사용자가 아직 설치하지 않은 경우에만 APK를 다운로드합니다. 앱이 이미 설치되어 있으면 Google Play는 일반적인 방법으로 신규 사용자의 설치를 기록하지만 앱의 다른 사본을 다운로드하지는 않습니다. 시스템에서 사용자별 데이터 디렉터리를 포함하여 각 사용자에 대해 새 인스턴스를 생성하므로 여러 사용자가 동일한 APK 사본을 실행할 수 있습니다.
개발자에게는 멀티 사용자 지원이 투명합니다. 앱이 멀티 사용자 환경에서 정상적으로 실행하기 위해 특별한 작업을 할 필요가 없으며, 기존 또는 게시된 APK를 변경할 필요가 없습니다. 시스템은 단일 사용자 환경에서와 마찬가지로 각 사용자 공간에서 앱을 관리합니다.
사용자 참여를 유도하는 새로운 방법
![캘린더 잠금 화면 위젯](https://developer.android.google.cn/static/images/jb-lock-calendar.png?authuser=8&hl=ko)
콘텐츠에 즉시 액세스할 수 있도록 앱 위젯을 확장하여 잠금 화면에서 실행할 수 있습니다.
잠금 화면 위젯
Android 4.2에서 사용자는 잠금을 해제하지 않고도 즐겨찾는 앱 콘텐츠에 즉시 액세스할 수 있도록 앱 위젯을 잠금 화면에 직접 배치할 수 있습니다. 사용자는 설치된 앱에서 제공하는 위젯 중에서 선택하여 최대 5개의 잠금 화면 위젯을 추가할 수 있습니다. 잠금 화면에서는 각 위젯이 자체 패널에 표시되므로 사용자가 좌우로 스와이프하여 여러 패널과 위젯을 볼 수 있습니다.
모든 앱 위젯과 마찬가지로 잠금 화면 위젯은 모든 종류의 콘텐츠를 표시할 수 있으며 사용자 상호작용을 직접 허용할 수 있습니다. 음악 재생 컨트롤을 제공하는 위젯과 같이 완전히 독립적일 수도 있고, 필요에 따라 잠금을 해제한 후 사용자가 앱의 활동으로 바로 이동할 수도 있습니다.
개발자에게 잠금 화면 위젯은 사용자의 참여를 유도하는 새로운 방법을 제공합니다. 광고 단위를 사용하면 사용자가 자주 보는 위치에 콘텐츠를 표시할 수 있으며 사용자를 앱으로 직접 유도할 수 있는 기회를 더 많이 확보할 수 있습니다.
새 앱 위젯을 빌드하거나 기존 홈 화면 위젯을 확장하여 이 새로운 기능을 활용할 수 있습니다. 앱에 이미 홈 화면 위젯이 포함되어 있다면 최소한의 변경만으로 위젯을 잠금 화면으로 확장할 수 있습니다. 사용자에게 최적의 환경을 제공하기 위해 가능한 경우 전체 잠금 화면 영역을 사용하고 작은 화면에서는 필요에 따라 크기를 조절하도록 위젯을 업데이트할 수 있습니다. 잠금 화면에서 특히 유용하거나 편리한 기능을 위젯에 추가할 수도 있습니다.
Daydream
Daydream은 사용자 기기가 도킹되거나 충전될 때 시작되는 대화형 화면 보호기 모드입니다. 이 모드에서 시스템은 기기 화면 보호기로 Daydream(설치된 앱에서 제공하는 원격 콘텐츠 서비스)을 시작합니다. 사용자는 설정 앱에서 Daydream을 사용 설정한 다음 표시할 화면 보호기를 선택할 수 있습니다.
Daydream은 라이브 배경화면과 홈 화면 위젯의 최고의 기능을 결합하지만 더 강력합니다. 완전히 새로운 컨텍스트에서 모든 종류의 콘텐츠를 제공할 수 있으며, 사진 넘기기, 오디오 또는 동영상 재생, 한 번의 터치로 앱으로 바로 이동하기와 같은 사용자 상호작용을 통해 제공할 수 있습니다.
기기가 충전되거나 도킹될 때 Daydream이 자동으로 시작될 수 있으므로 앱에서 Leanback 또는 전시 모드, 데모 또는 키오스크 모드, '유인 모드'와 같은 새로운 유형의 사용자 환경을 지원할 수 있는 좋은 방법을 제공합니다. 이 모두 특별한 하드웨어 없이도 가능합니다.
![Daydream 화면 보호기 모드](https://developer.android.google.cn/static/images/jb-dream-1.png?authuser=8&hl=ko)
Daydream을 사용하면 모든 종류의 콘텐츠를 표시하는 강력한 대화형 화면 보호기를 만들 수 있습니다.
Daydream은 활동과 유사하며, UI 계층 구조 렌더링 (RemoteViews를 사용하지 않고)부터 캔버스, OpenGL, SurfaceTexture 등을 사용하여 직접 그리기까지 활동이 할 수 있는 모든 작업을 할 수 있습니다. 동영상과 오디오를 재생할 수 있으며 직접적인 사용자 상호작용도 허용할 수 있습니다. 그러나 Daydream은 활동이 아니므로 백 스택에 영향을 미치거나 최근 항목에 표시되지 않으며 앱에서 직접 실행할 수 없습니다.
화면 보호기를 구현하는 것은 간단하며 앱의 다른 부분을 위해 이미 만든 UI 구성요소와 리소스를 활용할 수 있습니다. 앱에 여러 화면 보호 모드를 제공하고 각각에 고유한 콘텐츠와 디스플레이 설정을 제공할 수 있습니다.
외부 디스플레이 지원
Android 4.2에는 미러링을 훨씬 뛰어넘는 외부 디스플레이용 플랫폼 지원이 도입되었습니다. 이제 앱은 Android 기기에 연결된 하나 또는 여러 디스플레이에 고유한 콘텐츠를 타겟팅할 수 있습니다. 이를 기반으로 앱은 사용자에게 새로운 종류의 상호작용 및 엔터테인먼트 환경을 제공할 수 있습니다.
디스플레이 관리자
앱은 새로운 디스플레이 관리자 시스템 서비스를 통해 디스플레이와 상호작용합니다. 앱은 디스플레이를 열거하고 크기, 밀도, 표시 이름, ID, 보안 동영상 지원 등 각 디스플레이를 확인할 수 있습니다. 앱은 디스플레이가 추가되거나 삭제될 때 또는 기능이 변경될 때 콜백을 수신하여 외부 디스플레이에서 콘텐츠를 더 잘 관리할 수 있습니다.
Presentation 창
외부 디스플레이에 콘텐츠를 쉽게 표시할 수 있도록 프레임워크는 특정 외부 디스플레이에 앱 콘텐츠 창을 나타내는 일종의 대화상자인 Slides라는 새로운 UI 객체를 제공합니다. 앱은 사용할 디스플레이, 창의 테마 및 표시할 고유한 콘텐츠를 제공합니다. 프레젠테이션은 타겟팅된 디스플레이의 특성에 따라 리소스를 확장하고 콘텐츠를 렌더링합니다.
![](https://developer.android.google.cn/static/images/external-display.png?authuser=8&hl=ko)
Presentation을 사용하여 둘 이상의 독립된 디스플레이를 완벽하게 제어할 수 있습니다.
프레젠테이션을 사용하면 앱에서 원격 디스플레이 창과 콘텐츠를 완전히 제어할 수 있으며 키 누름, 동작, 모션 이벤트 등의 사용자 입력 이벤트를 기반으로 이를 관리할 수 있습니다. 임의의 뷰 계층 구조 빌드에서 SurfaceView 또는 SurfaceTexture를 사용하여 스트리밍 콘텐츠 또는 카메라 미리보기를 위해 창에 직접 그리기까지 모든 일반 도구를 사용하여 프레젠테이션에서 UI를 만들고 콘텐츠를 렌더링할 수 있습니다.
기본 디스플레이 선택
여러 개의 외부 디스플레이를 사용할 수 있는 경우 필요한 만큼 Slides를 만들 수 있습니다. 각 프레젠테이션은 특정 디스플레이에 고유한 콘텐츠를 표시합니다. 대부분의 경우 단일 외부 디스플레이에만 콘텐츠를 표시하고 싶을 수 있지만, 항상 프레젠테이션 콘텐츠에 가장 적합한 곳에 표시되도록 할 수 있습니다. 이를 위해 시스템은 앱이 사용하기에 가장 적합한 디스플레이를 선택하도록 도와줄 수 있습니다.
사용하기에 가장 적합한 디스플레이를 찾기 위해 앱은 디스플레이 관리자에 시스템의 기본 Slides 디스플레이를 쿼리하고 디스플레이가 변경될 때 콜백을 수신할 수 있습니다. 또는 Android 4.2에서 확장된 미디어 라우터 서비스를 사용하여 시스템 동영상 경로가 변경될 때 알림을 받을 수 있습니다. 앱은 기본 프레젠테이션 디스플레이가 연결될 때까지 기본적으로 기본 활동에 콘텐츠를 표시할 수 있으며, 연결되면 기본 디스플레이의 프레젠테이션 콘텐츠로 자동 전환할 수 있습니다. 앱에서 미디어 라우터의 MediaRouteActionProvider 및 MediaRouteButton을 사용하여 표준 디스플레이 선택 UI를 제공할 수도 있습니다.
보호된 콘텐츠
보호되거나 암호화된 콘텐츠를 처리하는 앱의 경우 디스플레이 API가 이제 연결된 디스플레이의 보안 동영상 기능을 보고합니다. 앱은 디스플레이를 쿼리하여 보안 동영상 출력을 제공하는지 또는 보호된 그래픽 버퍼를 제공하는지 확인한 다음 적절한 콘텐츠 스트림 또는 디코딩을 선택하여 콘텐츠를 볼 수 있도록 만듭니다. SurfaceView 객체의 보안을 강화하기 위해 앱은 보안 플래그를 설정하여 미러링된 경우에도 스크린샷이나 비보안 디스플레이 출력에 콘텐츠가 표시되면 안 된다는 것을 나타낼 수 있습니다.
무선 디스플레이
Android 4.2부터 지원되는 기기의 사용자는 Wi-Fi 디스플레이 (MiracastTM 인증 프로그램을 준수하는 P2P 무선 디스플레이 솔루션)를 사용하여 Wi-Fi를 통해 외부 디스플레이에 연결할 수 있습니다. 무선 디스플레이가 연결되면 사용자는 사진, 게임, 지도 등 모든 유형의 콘텐츠를 대형 화면에 스트리밍할 수 있습니다.
앱은 다른 외부 디스플레이와 동일한 방식으로 무선 디스플레이를 활용할 수 있으며 추가 작업이 필요하지 않습니다. 시스템은 네트워크 연결을 관리하고 필요에 따라 프레젠테이션 또는 기타 앱 콘텐츠를 무선 디스플레이로 스트리밍합니다.
기본 RTL 지원
![RTL 레이아웃 미러링](https://developer.android.google.cn/static/images/jb-rtl.png?authuser=8&hl=ko)
개발자는 이제 RTL 언어에 대해 레이아웃을 미러링할 수 있습니다.
Android 4.2에는 레이아웃 미러링을 포함하여 RTL(오른쪽에서 왼쪽) 레이아웃을 완벽하게 지원합니다. 기본 RTL 지원을 통해 사용자 언어가 오른쪽에서 왼쪽으로 읽는 스크립트를 사용하는지 왼쪽에서 오른쪽으로 읽는 스크립트를 사용하는지에 관계없이 모든 사용자에게 동일한 훌륭한 앱 환경을 제공할 수 있습니다.
사용자가 시스템 언어를 오른쪽에서 왼쪽 스크립트로 전환하면 시스템은 이제 읽기 및 문자 입력을 위한 텍스트 요소의 입찰가 미러링 외에도 앱 UI 레이아웃과 모든 뷰 위젯의 자동 미러링을 제공합니다.
앱은 최소한의 노력으로 RTL 레이아웃 미러링을 활용할 수 있습니다. 앱을 미러링하려면 앱 매니페스트에서 새 속성을 선언하고 모든 '왼쪽/오른쪽' 레이아웃 속성을 새로운 '시작/종료' 속성으로 변경하면 됩니다. 그러면 시스템은 UI의 미러링과 표시를 적절하게 처리합니다.
앱 UI를 정밀하게 제어하기 위해 Android 4.2에는 뷰 구성요소에서 레이아웃 방향, 텍스트 방향, 텍스트 정렬, 중력 및 언어 방향을 관리할 수 있는 새로운 API가 포함되어 있습니다. 오른쪽에서 왼쪽으로 쓰는 스크립트를 사용할 때 표시할 레이아웃, 드로어블 및 기타 리소스의 맞춤 버전을 만들 수도 있습니다.
맞춤 오른쪽에서 왼쪽 레이아웃을 디버그하고 최적화할 수 있도록 HierarchyViewer 도구를 사용하면 계층 구조에 있는 모든 뷰의 시작/종료 속성, 레이아웃 방향, 텍스트 방향 및 텍스트 정렬을 볼 수 있습니다.
국제 언어 기능 향상
Android 4.2에는 전 세계 사용자를 위한 다양한 글꼴 및 문자 최적화가 포함되어 있습니다.
- 한국어 사용자는 한국어 스크립트용으로 특별히 설계된 유니코드 글꼴인 Nanum (나눔글꼴) 고딕과 같은 새로운 글꼴을 선택할 수 있습니다.
- WebView에 표시되는 일본어 세로 텍스트에 대한 지원이 향상되었습니다.
- 인도어, 태국어, 아랍어, 히브리어 기본 글꼴의 글꼴 커닝 및 위치가 개선되었습니다.
기본 Android 키보드에는 업데이트된 사전 모음도 포함되어 있습니다.
- 프랑스어 (bigram 지원), 영어, 러시아어 사전 개선
- 덴마크어, 그리스어, 핀란드어, 리투아니아어, 라트비아어, 폴란드어, 슬로베니아어, 세르비아어, 스웨덴어, 터키어에 대한 새로운 사전
멋진 UI를 만드는 새로운 방법
중첩된 프래그먼트
Android 4.2에서는 UI 구성요소를 더 세밀하게 제어하고 모듈화하기 위해 프래그먼트 내에 프래그먼트를 중첩할 수 있습니다. 어떤 프래그먼트든 새 프래그먼트 관리자를 사용하면 다른 프래그먼트를 뷰 계층 구조의 하위 노드로 삽입할 수 있습니다.
중첩된 프래그먼트는 다양한 방법으로 사용할 수 있지만 그 자체가 동적이고 재사용 가능한 UI 구성요소 내부에서 동적이고 재사용 가능한 UI 구성요소를 구현하는 데 특히 유용합니다. 예를 들어 ViewPager를 사용하여 왼쪽과 오른쪽으로 스와이프하는 프래그먼트를 만드는 경우 이제 뷰 페이저의 각 프래그먼트에 프래그먼트를 삽입할 수 있습니다.
앱에서 중첩된 프래그먼트를 더 광범위하게 활용할 수 있도록 이 기능이 최신 버전의 Android 지원 라이브러리에 추가되었습니다.
접근성
시스템은 이제 접근성 서비스가 터치 탐색 모드에서 터치 탐색과 접근성 동작을 구별할 수 있도록 지원합니다. 사용자가 화면을 터치하면 시스템은 일반 터치 상호작용이 시작되었음을 서비스에 알립니다. 그런 다음 터치 상호작용의 속도를 추적하고 터치 탐색 (느림)인지 접근성 동작(빠름)인지 확인하고 서비스에 알립니다. 터치 상호작용이 종료되면 시스템이 서비스에 알립니다.
시스템은 접근성 서비스에서 사용자의 작업에 따라 빠른 설정 메뉴를 열 수 있는 새로운 전역 접근성 옵션을 제공합니다. Android 4.2에는 점자 기기를 위한 새로운 접근성 의견 유형도 추가되었습니다.
접근성 서비스에 접근성을 위해 뷰의 의미에 관한 유용한 정보를 제공하기 위해 프레임워크는 뷰를 다른 뷰의 라벨로 연결하는 새 API를 제공합니다. 각 뷰의 라벨은 AccessibilityNodeInfo를 통해 접근성 서비스에서 사용할 수 있습니다.
HDR로 카메라 기능 개선
Android 4.2에는 성능 향상을 위해 새로운 카메라 하드웨어 인터페이스 및 파이프라인이 도입되었습니다. 지원되는 기기에서 앱은 새로운 HDR 카메라 장면 모드를 사용하여 HDR(High Dynamic Range) 이미징 기술로 이미지를 캡처할 수 있습니다.
또한 프레임워크는 이제 앱이 카메라 셔터 소리를 사용 중지할 수 있는지 확인할 수 있는 API를 제공합니다. 그러면 앱에서 사용자가 사운드를 사용 중지하거나 표준 셔터 사운드 대신 다른 사운드를 선택할 수 있습니다(권장).
Renderscript 계산
Android 4.2에서는 계산 작업에서 최고의 성능을 발휘하도록 Renderscript Compute에 새로운 스크립팅 기능, 새로운 최적화, 직접적인 GPU 통합이 도입되었습니다.
Filterscript
Filterscript는 광범위한 기기 칩셋 전반에 걸쳐 최적화된 이미지 처리에 중점을 둔 Renderscript의 하위 집합입니다. 개발자는 표준 RenderScript 런타임 API를 사용하지만 CPU, GPU, DSP 전반에 걸쳐 더 폭넓은 호환성과 개선된 최적화를 보장하는 더 엄격한 제약 조건 내에서 Filterscript로 이미지 처리 작업을 작성할 수 있습니다.
Filterscript는 OpenGL ES 프래그먼트 셰이더용으로 작성할 수 있는 작업과 같이 하드웨어 가속을 위한 간단한 이미지 처리 및 계산 작업에 이상적입니다. 하드웨어에 대한 제약 조건을 완화하기 때문에 더 많은 유형의 기기 칩셋에서 작업이 최적화되고 가속화됩니다. API 레벨 17 이상을 타겟팅하는 앱은 Filterscript를 사용할 수 있습니다.
스크립트 내부 기능
Android 4.2에서 Renderscript는 작성해야 하는 코드의 양을 줄이고 앱이 가능한 최대 성능을 얻을 수 있도록 하기 위해 가속화되는 사전 구현된 필터링 프리미티브인 스크립트 내장 기능 모음을 지원합니다.
내장 기능은 블렌딩, 블러, 색상 매트릭스, 3x3 및 5x5 컨볼브, 채널별 조회 테이블 및 Android YUV 버퍼를 RGB로 변환하는 데 사용할 수 있습니다.
스크립트 그룹
이제 Renderscript 스크립트의 그룹을 만들고 단일 스크립트의 일부인 것처럼 단일 호출로 모두 실행할 수 있습니다. 이를 통해 Renderscript는 스크립트가 개별적으로 실행될 때 할 수 없는 방식으로 스크립트 실행을 최적화할 수 있습니다.
![Renderscipt 최적화 차트](https://developer.android.google.cn/static/images/jb-rs-chart-versions.png?authuser=8&hl=ko)
Renderscript 이미지 처리 벤치마크는 Galaxy Nexus 기기의 CPU에서만 다양한 Android 플랫폼 버전 (Android 4.0, 4.1, 4.2)에서 실행됩니다.
![](https://developer.android.google.cn/static/images/jb-rs-chart-gpu.png?authuser=8&hl=ko)
GPU + CPU로 실행되는 작업과 동일한 Nexus 10 기기에서만 CPU로 실행되는 작업을 비교하는 Renderscript 이미지 처리 벤치마크입니다.
실행할 Renderscript 작업의 방향성 비순환 그래프가 있는 경우 빌더 클래스를 사용하여 작업을 정의하는 스크립트 그룹을 만들 수 있습니다. Renderscript는 실행 시 최상의 성능을 위해 실행 순서와 이러한 작업 간의 연결을 최적화합니다.
지속적인 최적화 개선
계산 작업에 Renderscript를 사용하면 앱은 앱 코드에 영향을 미치거나 재컴파일할 필요 없이 RenderScript 엔진 자체의 지속적인 성능 및 최적화 개선의 이점을 누릴 수 있습니다.
최적화가 개선됨에 따라 별도의 조치 없이도 더 많은 칩셋에서 작업이 더 빠르게 실행됩니다. 오른쪽의 차트는 Android 플랫폼의 후속 버전에서 지속적인 Renderscript 최적화 개선사항을 통해 얻은 성능 향상을 보여줍니다.
GPU Compute
Renderscript Compute는 휴대기기 GPU에서 직접 실행되도록 포팅된 최초의 계산 플랫폼입니다. 이제는 가능한 경우 항상 GPU 계산 리소스를 자동으로 활용하여 성능을 개선합니다. GPU 통합을 사용하면 그래픽 또는 이미지 처리와 관련하여 가장 복잡한 계산도 성능을 대폭 향상하면서 실행할 수 있습니다.
지원되는 기기에서 Renderscript를 사용하는 모든 앱은 재컴파일 없이 GPU 통합의 이점을 즉시 누릴 수 있습니다. Nexus 10 태블릿은 이 통합을 지원하는 첫 번째 기기입니다.
내장된 새로운 개발자 옵션
Android 4.2 시스템에는 다양한 새 개발자 옵션이 포함되어 있어 성능이 뛰어난 멋진 앱을 더욱 쉽게 만들 수 있습니다. 새로운 옵션을 통해 모든 기기 또는 에뮬레이터에서 앱을 디버깅 및 프로파일링할 수 있는 기능이 제공됩니다.
Android 4.2를 실행하는 기기에서는 개발자 옵션이 기본적으로 숨겨져 있어 사용자에게 더 나은 환경을 제공할 수 있습니다. 호환되는 Android 기기의 설정 > 휴대전화 정보 > 빌드 번호에서 7번 탭하여 언제든지 개발자 옵션을 표시할 수 있습니다.
![](https://developer.android.google.cn/static/images/jb-dev-options-device.png?authuser=8&hl=ko)
새로운 개발자 옵션은 기기에서 프로파일링 및 디버깅할 수 있는 더 많은 방법을 제공합니다.
Android 4.2의 새로운 개발자 옵션은 다음과 같습니다.
- 버그 신고 - 즉시 스크린샷을 생성하고 기기 상태 정보를 로컬 파일 저장소에 덤프한 다음 새 발신 이메일 메시지에 첨부합니다.
- 전원 메뉴 버그 신고 - 기기 전원 메뉴와 빠른 설정에 버그 신고를 위한 새 옵션을 추가합니다 (위 참고).
- USB를 통해 앱 확인 - USB를 통해 앱을 사이드로드하기 위해 앱 검사를 사용 중지하는 동시에 브라우저와 같은 다른 소스의 앱을 계속해서 검사할 수 있습니다. 이렇게 하면 보안 기능을 사용 설정된 상태로 유지하면서 개발 프로세스 속도를 높일 수 있습니다.
- 하드웨어 레이어 업데이트 표시 - 업데이트할 때 하드웨어 레이어를 녹색으로 깜박입니다.
- GPU 오버드로 표시 - GPU 오버드로 영역을 강조표시합니다.
- 4x MSAA 강제 사용 - Open GL ES 2.0 앱에서 4x MSAA를 사용 설정합니다.
- 보조 디스플레이 시뮬레이션 - 시뮬레이션된 원격 디스플레이로 사용하기 위해 현재 화면에 하나 이상의 비보안 오버레이 창을 만듭니다. 시뮬레이션된 디스플레이의 크기와 밀도를 제어할 수 있습니다.
- OpenGL 트레이스 사용 설정 - glGetError에서 Logcat, Systrace 또는 콜스택을 사용하여 OpenGL 실행을 추적할 수 있습니다.
새로운 플랫폼 기술
Android 4.2에는 광범위한 하드웨어 기기에서 혁신적인 통신 사용 사례를 지원하기 위한 새롭고 다양한 고급 플랫폼 기술이 포함되어 있습니다. 대부분의 경우 새로운 플랫폼 기술과 개선사항은 앱에 직접적인 영향을 주지 않으므로 아무런 수정 없이도 이점을 누릴 수 있습니다.
보안 기능 향상
모든 Android 버전에는 사용자를 보호하기 위한 수십 가지 보안 향상 기능이 포함되어 있습니다. 다음은 Android 4.2의 향상된 기능 중 일부입니다.
- 애플리케이션 인증 - 사용자는 설치 전에 '앱 인증'을 사용 설정하고 애플리케이션 인증 기관이 애플리케이션을 검사하도록 선택할 수 있습니다. 사용자가 유해할 수 있는 앱을 설치하려고 하면 앱 인증을 통해 사용자에게 이를 알릴 수 있습니다. 매우 불량한 애플리케이션이라면 설치를 차단할 수 있습니다.
- 프리미엄 SMS를 더 효과적으로 제어 - 애플리케이션에서 추가 요금이 발생할 수 있는 프리미엄 서비스를 사용하는 짧은 코드로 SMS를 보내려고 하면 Android에서 알림을 제공합니다. 사용자는 애플리케이션이 메시지를 보내도록 허용할지 또는 차단할지를 선택할 수 있습니다.
- VPN 상시 사용 설정 - VPN 연결이 설정될 때까지 애플리케이션이 네트워크에 액세스하지 못하도록 VPN을 구성할 수 있습니다. 이렇게 하면 애플리케이션이 다른 네트워크를 통해 데이터를 전송할 수 없습니다.
- 인증서 고정 - 이제 libcore SSL 구현이 인증서 고정을 지원합니다. 인증서가 예상 인증서 모음에 연결되지 않으면 고정된 도메인에서 인증서 유효성 검사 실패 메시지를 수신합니다. 이렇게 하면 인증 기관의 침해 가능성으로부터 보호됩니다.
- Android 권한 표시 개선 - 사용자가 더 쉽게 이해할 수 있는 그룹으로 권한이 구성되었습니다. 권한을 검토하는 동안 사용자는 권한을 클릭하여 권한에 관한 자세한 정보를 볼 수 있습니다.
- installd 강화 - installd 데몬은 루트 사용자로 실행되지 않으므로 루트 권한 에스컬레이션에 대한 잠재적인 공격 영역이 줄어듭니다.
- init 스크립트 강화 - init 스크립트는 이제 심볼릭 링크 관련 공격을 방지하기 위해 O_NOFOLLOW 의미 체계를 적용합니다.
- FORTIFY_SOURCE - 이제 Android는 FORTIFY_SOURCE를 구현합니다. 이는 시스템 라이브러리 및 애플리케이션에서 메모리 손상을 방지하는 데 사용됩니다.
- ContentProvider 기본 구성 - API 수준 17을 타겟팅하는 애플리케이션의 'export'는 기본적으로 각 ContentProvider에 대해 'false'로 설정되어 애플리케이션의 기본 공격 표면을 줄입니다.
- 암호화 - OpenSSL을 사용하도록 SecureRandom 및 Cipher.RSA의 기본 구현을 수정했습니다. OpenSSL 1.0.1을 사용하여 TLSv1.1 및 TLSv1.2에 SSLSocket 지원이 추가되었습니다.
- 보안 수정사항 - 보안 수정사항으로 업그레이드된 오픈소스 라이브러리에는 WebKit, libpng, OpenSSL 및 LibXML이 포함됩니다. Android 4.2에는 Android 관련 취약점에 관한 수정사항도 포함되어 있습니다. 이러한 취약점 관련 정보는 Open Handset Alliance 멤버에게 제공되었으며 Android 오픈소스 프로젝트에서 수정사항을 사용할 수 있습니다. 보안을 개선하기 위해 이전 버전의 Android가 설치된 일부 기기에도 이러한 수정사항이 포함될 수 있습니다.
새로운 블루투스 스택
Android 4.2에는 Android 기기와 함께 사용하도록 최적화된 새로운 블루투스 스택이 도입되었습니다. Google과 Broadcom의 공동작업으로 개발된 새로운 블루투스 스택은 BlueZ 기반의 스택을 대체하며 향상된 호환성과 안정성을 제공합니다.지연 시간이 짧은 오디오
Android 4.2에서는 Android 4.1 출시에서 OpenSL ES, Soundpool 및 톤 생성기 API를 사용한 오디오 출력 지연 시간 관련 개선사항을 시작으로 지연 시간이 짧은 오디오 재생 지원을 개선합니다. 이러한 개선사항은 하드웨어 지원에 따라 달라집니다. 지연 시간이 짧은 오디오 기능을 제공하는 기기는 하드웨어 기능 상수를 통해 앱 지원을 광고할 수 있습니다. 이 기능을 요구하는 기기에서 사용할 수 있도록 네이티브 오디오 샘플링 레이트와 버퍼 크기를 쿼리하는 새 AudioManager API가 제공됩니다.
새로운 카메라 하드웨어 인터페이스
Android 4.2에는 새로운 카메라 스택 구현이 도입됩니다. 카메라 하위 시스템에는 처리 컨트롤이 있는 버스트 모드 캡처와 같은 카메라 파이프라인 구성요소의 구현이 포함됩니다.새로운 NFC 하드웨어 인터페이스 및 컨트롤러 인터페이스
Android 4.2에는 NFC-Forum의 NCI 표준을 기반으로 한 컨트롤러 지원이 도입되었습니다. NCI는 NFC 컨트롤러 (NFCC)와 기기 호스트 간의 표준 통신 프로토콜을 제공하며, Google과 Broadcom 간의 협업을 통해 개발된 새로운 NFC 스택이 이를 지원합니다.Dalvik 런타임 최적화
Dalvik 런타임은 광범위한 아키텍처에서 성능 및 보안을 위한 개선사항을 포함합니다.
- Intel의 x86 JIT 지원 및 MIPS의 MIPS JIT 지원
- 512MB보다 큰 기기에 맞게 최적화된 가비지 컬렉션 매개변수
- SecureRandom 및 Cipher.RSA의 기본 구현은 이제 OpenSSL을 사용합니다.
- OpenSSL 1.0.1을 통해 SSLSocket에서 TLSv1.1 및 TLSv1.2 지원
- StrictMath 메서드 abs, min, max 및 sqrt에 대한 새로운 내부 기능 지원
- BouncyCastle이 1.47로 업데이트됨
- zlib가 1.27로 업데이트됨
- dlmalloc가 2.8.6으로 업데이트됨
Android 4.1
![](https://developer.android.google.cn/static/images/jb-android-4.1.png?authuser=8&hl=ko)
Jelly Bean의 첫 번째 버전인 Android 4.1에 오신 것을 환영합니다!
Android 4.1은 가장 빠르고 원활하게 작동하는 Android 버전입니다. 플랫폼 전체를 개선하고 사용자와 개발자를 위한 훌륭한 새 기능을 추가했습니다. 이 문서에서는 개발자를 위한 새로운 기능을 개략적으로 설명합니다.
새로운 개발자 API에 관한 자세한 내용은 Android 4.1 API 문서를 참조하세요.
www.android.com에서 사용자를 위한 Jelly Bean 기능에 관해 자세히 알아보세요.
속도, 부드러움, 반응성 향상
Android 4.1은 직관적인 간편한 UI에서 Android 최고의 성능과 가장 짧은 터치 지연 시간을 제공하도록 최적화되었습니다.
Android 4.1은 일관된 프레임 속도를 보장하기 위해 Android 프레임워크에서 실행되는 모든 그리기 및 애니메이션에서 vsync 타이밍을 확장합니다. 애플리케이션 렌더링, 터치 이벤트, 화면 구성 및 디스플레이 새로고침 등 모든 것이 16밀리초 vsync 하트비트에 대해 잠금 상태로 실행되므로 프레임이 앞뒤로 이동하지 않습니다.
Android 4.1은 그래픽 파이프라인에 트리플 버퍼링을 추가하므로, 스크롤링에서 페이징 및 애니메이션에 이르기까지 모든 것이 더 매끄럽게 느껴지는 일관된 렌더링이 가능합니다.
Android 4.1은 터치를 vsync 타이밍과 동기화할 뿐만 아니라 화면을 새로 고칠 때 손가락 위치를 실제로 예측하여 터치 지연 시간을 단축합니다. 그 결과 터치 반응이 빠르고 균일합니다. 또한 일정 기간 활동이 없으면 Android는 다음 터치 이벤트에서 CPU 입력 부스트를 적용하여 지연 시간이 없는지 확인합니다.
툴링은 앱에서 최고의 성능을 발휘하도록 지원합니다. Android 4.1은 systrace라는 새로운 도구와 함께 작동하도록 설계되었습니다. 이 도구는 Linux 커널에서 직접 데이터를 수집하여 시스템 활동의 전반적인 상황을 생성합니다. 데이터는 렌더링 중단 및 기타 문제를 격리하는 데 도움이 되도록 세로로 누적된 시계열 그래프 그룹으로 표시됩니다. 이 도구는 현재 Android SDK (Tools R20 이상)에서 사용할 수 있습니다.
![](https://developer.android.google.cn/static/images/jb-accessibility-focus-250.png?authuser=8&hl=ko)
접근성 향상
새로운 접근성 서비스용 API를 사용하면 사용자가 접근성 동작, 액세서리 및 기타 입력을 사용하여 화면 요소와 탐색 버튼을 이동할 때 동작을 처리하고 접근성 포커스를 관리할 수 있습니다. 접근성 포커스를 더 쉽게 사용하고 개발자용 API 전체 모음을 제공하기 위해 TalkBack 시스템 및 터치하여 탐색 기능이 다시 설계되었습니다.
접근성 서비스는 사용자가 서비스를 더 쉽게 구성하고 사용할 수 있도록 자체 가이드를 접근성 설정에 연결할 수 있습니다.
표준 뷰 구성요소를 사용하는 앱은 코드 변경 없이도 새로운 접근성 기능에 대한 지원을 자동으로 상속합니다. 맞춤형 뷰를 사용하는 앱은 접근성 서비스에 관심을 갖는 뷰의 부분을 나타내기 위해 새로운 접근성 노드 API를 사용할 수 있습니다.
전 세계 사용자 지원
![](https://developer.android.google.cn/static/images/jb-r2l.png?authuser=8&hl=ko)
양방향 텍스트 및 기타 언어 지원
Android 4.1은 더 많은 사용자에게 도달할 수 있도록 TextView 및 EditText 요소의 양방향 텍스트를 지원합니다. 앱은 왼쪽에서 오른쪽 또는 오른쪽에서 왼쪽 스크립트로 텍스트를 표시하거나 텍스트 편집을 처리할 수 있습니다. 앱은 새로운 아랍어와 히브리어 및 관련 글꼴을 사용할 수 있습니다.
기타 새로운 언어 지원 유형은 다음과 같습니다.
- 추가 인도어: 칸나다어, 텔루구어 및 말라얄람어
- 유니코드 버전 6.0의 새로운 이모티콘 문자
- 일본어 사용자를 위한 향상된 글리프 지원(시스템 언어가 일본어로 설정된 경우 일본어 관련 글리프 버전을 렌더링)
- TextView의 아랍어 글리프 외에 WebView에 최적화된 아랍어 글리프
- Ruby 텍스트 및 추가 세로 텍스트 글리프를 포함하여 WebView에서 세로 텍스트 지원
- 굵은 스타일을 표현하는 전용 글리프가 없는 모든 글꼴에 대해 이제 Synthetic Bold를 사용할 수 있습니다.
사용자 설치 가능 키맵
이제 플랫폼에서 국제 키보드 및 특수 레이아웃 유형과 같은 사용자 설치 가능 키보드 맵이 지원됩니다. 기본적으로 Android 4.1에는 Dvorak을 포함하여 키보드에 27개의 국제 키맵이 포함되어 있습니다. 사용자는 키보드를 연결하면 설정 앱으로 이동하여 해당 키보드에 사용할 하나 이상의 키맵을 선택할 수 있습니다. 입력할 때 사용자는 단축키(ctrl-space)를 사용하여 키맵 간에 전환할 수 있습니다.
시스템에 추가 키맵을 게시하는 앱을 만들 수 있습니다. 표준 Android 키맵 형식에 따라 APK에 키보드 레이아웃 리소스가 포함됩니다. 애플리케이션은 manifest에서 ACTION_QUERY_KEYBOARD_LAYOUTS에 적합한 broadcast receiver를 선언하여 사용자에게 추가 키보드 레이아웃을 제공할 수 있습니다.
멋진 UI를 만드는 새로운 방법
![](https://developer.android.google.cn/static/images/jb-notif-ex1.png?authuser=8&hl=ko)
개발자는 위의 예와 같은 맞춤 알림 스타일을 만들어 리치 콘텐츠와 작업을 표시할 수 있습니다.
펼칠 수 있는 알림
알림은 Android에서 오랫동안 널리 애용되어 온 고유한 기능입니다. 개발자는 이 기능을 사용하여 알림바 또는 앱의 일반 UI 외부에서 사용자 앞에 시간 기반 정보 또는 중요한 정보를 배치할 수 있습니다.
Android 4.1은 Android 알림 프레임워크에 관한 주요 업데이트를 제공합니다. 이제 앱은 손가락 모으기나 스와이프로 확장 및 축소할 수 있는 더 크고 풍부한 알림을 사용자에게 표시할 수 있습니다. 알림은 사진을 비롯한 새로운 유형의 콘텐츠를 지원하고, 구성 가능한 우선순위를 가지며, 여러 작업을 포함할 수도 있습니다.
향상된 알림 빌더를 통해 앱은 최대 256dp 높이의 더 넓은 영역을 사용하는 알림을 만들 수 있습니다. 세 가지 템플릿 알림 스타일을 사용할 수 있습니다.
- BigTextStyle - 여러 줄 TextView 객체를 포함하는 알림
- BigInboxStyle - 메시지, 헤드라인 등과 같은 모든 종류의 목록을 표시하는 알림
- BigPictureStyle - 비트맵과 같은 시각적 콘텐츠를 보여주는 알림
템플릿 스타일 외에도 원격 뷰를 사용하여 고유한 알림 스타일을 만들 수 있습니다.
앱은 알림에 최대 3개의 작업을 추가할 수 있으며, 이러한 작업은 알림 콘텐츠 아래에 표시됩니다. 따라서 사용자는 앱을 방문하지 않고도 이메일 또는 전화 통화와 같은 다른 방법으로 알림의 정보에 직접 응답할 수 있습니다.
확장 가능한 알림을 통해 앱은 필요에 따라 더 간편하게 더 많은 정보를 사용자에게 제공할 수 있습니다. 사용자는 제어 기능을 유지하면서 알림을 길게 눌러 발신자에 대한 정보를 확인하고, 선택적으로 앱에서 추가 알림을 사용 중지할 수 있습니다.
![](https://developer.android.google.cn/static/images/jb-appwidgets.png?authuser=8&hl=ko)
앱 위젯은 홈 화면에 맞게 자동으로 크기를 조정하고 크기가 변경될 때 다른 콘텐츠를 로드할 수 있습니다.
크기 조정 가능한 앱 위젯
Android 4.1은 홈 화면에서 사용자가 배치하는 위치, 사용자가 확장하는 크기, 홈 화면에서 사용 가능한 공간의 양을 기반으로 자동으로 크기 조정이 가능한 향상된 앱 위젯을 도입합니다. 새로운 App Widget API를 사용하면 위젯 크기가 변경될 때 이 기능을 활용하여 앱 위젯 콘텐츠를 최적화할 수 있습니다.
위젯의 크기가 변경되면 시스템은 호스트 앱의 위젯 공급자에 알리며, 위젯 공급자는 필요에 따라 위젯의 콘텐츠를 다시 로드할 수 있습니다. 예를 들어 위젯은 더 크고 더 풍부한 그래픽 또는 추가 기능이나 옵션을 표시할 수 있습니다. 개발자는 여전히 최대 및 최소 크기를 제어할 수 있으며 필요할 때마다 다른 위젯 옵션을 업데이트할 수 있습니다.
화면 방향이 변경될 때 시스템이 적절히 팽창시키는 위젯에 대해서는 별도의 가로 및 세로 레이아웃을 제공할 수도 있습니다.
이제 새로운 바인드 인텐트(AppWidgetManager.ACTION_APPWIDGET_BIND)를 통해 앱 위젯을 타사 런처 및 기타 호스트 앱에 표시할 수 있습니다.
간소화된 작업 탐색
Android 4.1을 사용하면 앱 내부에서 사용자가 사용할 수 있는 'Up' 탐색을 쉽게 관리하고 사용자에게 일관된 환경을 보장할 수 있습니다.
앱의 manifest 파일에 새로운 XML 속성을 추가하여 UI의 개별 활동 구성요소에 대해 의도된 Up 탐색을 정의할 수 있습니다. 런타임에 활동이 시작되면 시스템은 manifest 파일에서 Up 탐색 트리를 추출하고 작업 표시줄에 Up 유도를 자동으로 만듭니다. manifest에서 Up 탐색을 선언하는 개발자는 더 이상 런타임에 콜백으로 탐색을 관리할 필요가 없지만 필요한 경우 그렇게 할 수도 있습니다.
PendingIntent에서 활동이 시작될 때 즉시 시작하거나 사용할 합성 작업 스택을 빠르게 한데 모으기 위해 새로운 TaskStackBuilder 클래스를 사용할 수 있습니다. 합성 작업 스택을 만들면 사용자가 홈 화면 위젯 및 알림과 같은 원격 뷰에서 활동을 시작할 때 특히 유용합니다. 개발자가 Back 탐색에서 일관된 관리형 환경을 제공할 수 있기 때문입니다.
활동 시작을 위한 쉬운 애니메이션
활동을 시작할 때 표시되는 애니메이션을 만들고 제어하기 위해 새로운 도우미 클래스인 ActivityOptions를 사용할 수 있습니다. 도우미 클래스를 통해, 활동이 시작될 때 사용할 맞춤형 애니메이션 리소스를 지정하거나 화면에 지정한 사각형에서 시작되고 선택적으로 미리보기 이미지 비트맵을 포함하는 새로운 확대/축소 애니메이션을 요청할 수 있습니다.
Lights Out 및 전체 화면 모드로 전환
뷰의 새로운 시스템 UI 플래그를 사용하면 일반 애플리케이션 UI(작업 표시줄, 탐색 메뉴 및 시스템 표시줄이 표시됨)에서 'Lights Out'(상태 표시줄과 작업 표시줄이 숨겨지고 탐색 메뉴가 흐리게 표시됨) 또는 '전체 화면 모드'(상태 표시줄, 작업 표시줄 및 탐색 메뉴가 모두 숨겨짐)로 깔끔하게 전환할 수 있습니다.
새로운 유형의 원격 뷰
개발자는 이제 홈 화면 위젯 및 알림에서 GridLayout 뷰와 ViewStub 뷰를 사용할 수 있습니다. GridLayout을 사용하면 원격 뷰의 콘텐츠를 구성하고 더 얕은 UI 계층 구조로 하위 뷰 정렬을 관리할 수 있습니다. ViewStub은 런타임 시 레이아웃 리소스를 느리게 팽창시키는 데 사용할 수 있는 보이지 않는 제로 크기의 뷰입니다.
라이브 배경화면 미리보기
Android 4.1에서는 사용자가 앱에서 더 쉽게 라이브 배경화면을 찾고 설치할 수 있습니다. 앱에 라이브 배경화면이 포함되어 있다면 이제 사용자에게 앱의 라이브 배경화면 미리보기를 보여주는 활동 (ACTION_CHANGE_LIVE_WALLPAPER)을 시작할 수 있습니다. 사용자는 미리보기에서 라이브 배경화면을 직접 로드할 수 있습니다.
고해상도 연락처 사진
Android 4.1에서는 720x720 크기의 연락처 사진을 저장하여 연락처를 더 멋지고 개성 있게 만들 수 있습니다. 앱은 이 크기의 연락처 사진을 저장 및 검색하거나 필요한 다른 크기를 사용할 수 있습니다. 특정 기기에서 지원되는 최대 사진 크기는 다를 수 있으므로 앱은 런타임에 내장된 연락처 제공자에 쿼리하여 현재 기기의 최대 크기를 가져와야 합니다.
새로운 입력 유형 및 기능
추가 및 삭제되는 기기에 관해 알아보기
USB, 블루투스 또는 기타 연결 유형을 통해 새로운 입력 기기가 연결될 때 앱이 알림을 받도록 등록할 수 있습니다. 앱은 이 정보를 사용하여 필요에 따라 상태나 기능을 변경할 수 있습니다. 예를 들어 게임은 새로운 키보드나 조이스틱이 부착되어 새로운 플레이어가 있음을 나타내는 알림을 수신할 수 있습니다.
입력 기기의 기능 쿼리
Android 4.1에는 연결되어 있고 사용 가능한 모든 입력 기기를 앱과 게임이 최대한 활용할 수 있도록 하는 API가 포함되어 있습니다.
앱은 현재 연결된 모든 입력 기기를 열거하고 각각의 기능을 알아보기 위해 기기에 쿼리할 수 있습니다.
입력 기기에서 진동기 제어
앱은 이제 여러 기능 중에서 연결된 입력 기기와 관련된 진동기 서비스(예: Rumble Pak 컨트롤러)를 사용할 수 있습니다.
애니메이션 및 그래픽
앱용 Vsync
Android 프레임워크에서 vsync를 확장하면 더 일관된 프레임 속도와 부드럽고 안정적인 UI를 얻을 수 있습니다. 앱에도 도움이 되도록 Android 4.1은 앱에서 시작된 모든 그리기 및 애니메이션으로 vsync 타이밍을 확장합니다. 이를 통해 앱은 UI 스레드에서 작업을 최적화하고 동기화를 위한 안정적인 타임베이스를 제공합니다.
앱은 Android의 애니메이션 프레임워크를 통해 무료로 vsync 타이밍을 활용할 수 있습니다. 애니메이션 프레임워크는 이제 vsync 타이밍을 사용하여 애니메이터 간 동기화를 자동으로 처리합니다.
특별한 사용을 위해 앱은 새로운 Choreographer 클래스에서 노출하는 API를 통해 vsync 타이밍에 액세스할 수 있습니다. 앱은 다음 vsync 프레임에서 무효화를 요청할 수 있습니다. 이는 앱이 애니메이션 프레임워크를 사용하지 않을 때 애니메이션을 예약하는 좋은 방법입니다. 고급 사용을 위해 앱은 Choreographer 클래스가 다음 프레임에서 실행할 콜백을 게시할 수 있습니다.
새로운 애니메이션 작업 및 전환 유형
애니메이션 프레임워크를 사용하면 ViewPropertyAnimator 애니메이션을 실행할 때 해야 할 시작 및 종료 작업을 정의하여 애플리케이션의 다른 애니메이션 또는 작업과 동기화할 수 있습니다. 이 작업으로 어떤 실행 가능한 객체든 실행할 수 있습니다. 예를 들어, 실행 가능한 객체는 이전 애니메이션이 완료될 때 시작할 다른 애니메이션을 지정할 수 있습니다.
이제 ViewPropertyAnimator가 애니메이션 과정에서 레이어를 사용하도록 지정할 수도 있습니다. 전에는 애니메이션을 시작하기 전에 레이어를 설정한 다음 애니메이션이 완료될 때 레이어를 삭제하도록 onAnimationEnd() 이벤트를 처리함으로써 복잡한 뷰를 애니메이션 처리하는 것이 권장사항이었습니다. 이제 ViewPropertyAnimator의 withLayer() 메서드는 단일 메서드 호출로 이 프로세스를 단순화합니다.
LayoutTransition의 새로운 전환 유형을 사용하면 ViewGroup의 모든 레이아웃 변경에 대한 응답으로 애니메이션을 자동화할 수 있습니다.
새로운 유형의 연결
Android Beam
Android Beam은 널리 사용되는 NFC 기반 기술입니다. 사용자는 NFC 지원 스마트폰 2개를 함께 터치하면 즉시 공유할 수 있습니다.
Android 4.1의 Android Beam은 데이터 전송에 블루투스를 활용하여 이미지, 동영상 및 기타 페이로드를 더 쉽게 공유할 수 있도록 만들어줍니다. 사용자가 전송을 트리거하면 Android Beam이 NFC에서 블루투스로 넘어가므로 한 기기에서 다른 기기로의 파일 전송을 매우 쉽게 관리할 수 있습니다.
Wi-Fi 네트워크 서비스 검색
Android 4.1에는 멀티캐스트 DNS 기반 서비스 검색 지원 기능이 도입되어 애플리케이션에서 Wi-Fi 네트워크를 통해 휴대기기, 프린터, 카메라, 미디어 플레이어 등을 비롯한 피어 기기가 제공하는 서비스를 찾아 연결할 수 있습니다. 개발자는 Wi-Fi 네트워크 서비스 검색을 활용하여 크로스 플랫폼 또는 멀티플레이어 게임 및 애플리케이션 환경을 구축할 수 있습니다.
앱은 서비스 검색 API를 사용하여 다른 모든 NSD 지원 기기가 검색할 수 있도록 모든 종류의 서비스를 만들고 등록할 수 있습니다. 이 서비스는 사람이 읽을 수 있는 문자열 식별자를 사용하여 네트워크를 통해 멀티캐스트 방식으로 전달되므로 사용자는 서비스 유형을 더 쉽게 식별할 수 있습니다.
소비자 기기는 API를 사용하여 로컬 Wi-Fi 네트워크에 연결된 기기에서 사용 가능한 서비스를 스캔 및 검색할 수 있습니다. 검색 후 앱은 API를 사용하여, 소켓 연결을 설정할 수 있는 IP 주소 및 포트에 대해 서비스를 확인할 수 있습니다.
이 API를 활용하여 앱에 새로운 기능을 빌드할 수 있습니다. 예를 들어 사용자가 Wi-Fi P2P 연결을 지원하는 다른 휴대기기의 웹캠, 프린터 또는 앱에 연결하도록 허용할 수 있습니다.
Wi-Fi P2P 서비스 검색
Ice Cream Sandwich는 고대역폭 P2P 연결(Wi-Fi Alliance의 Wi-Fi DirectTM 인증 프로그램에 따라)을 통해 앱이 직접 찾고 페어링할 수 있는 기술인 Wi-Fi P2P 지원을 도입했습니다. Wi-Fi P2P는 사용 가능한 셀 네트워크나 Wi-Fi가 없는 경우에도 미디어, 사진, 파일, 기타 유형의 데이터와 세션을 공유하는 이상적인 방법입니다.
Android 4.1은 Wi-Fi P2P를 더욱 발전시켜 사전 연결된 서비스 검색 위한 API 지원을 추가합니다. 사전 연결된 서비스 검색을 통해 앱은 연결을 시도하기 전에, 지원하는 서비스에 관해 주변 기기에서 유용한 정보를 얻을 수 있습니다. 앱은 특정 서비스에 관한 검색을 시작하고, 타겟 서비스 또는 애플리케이션을 실제로 지원하는 기기를 찾기 위해 검색된 기기 목록을 필터링할 수 있습니다.
이는 예를 들어 앱이 근처의 모든 Wi-Fi P2P 기기를 검색하는 대신 '프린터' 또는 특정 게임을 사용할 수 있는 기기만 검색할 수 있음을 의미합니다. 한편 앱은 제공하는 서비스를 다른 기기에 알릴 수 있으며, 기기 검색 후 연결을 협상할 수 있습니다. 이를 통해 사용자의 검색 및 페어링이 크게 간소화되고 앱이 Wi-Fi P2P를 더욱 효과적으로 활용할 수 있습니다.
Wi-Fi P2P 서비스 검색을 사용하면 인터넷이나 모바일 네트워크 없이도 사진, 동영상, 게임플레이, 점수 또는 기타 거의 모든 정보를 공유하는 앱 및 멀티플레이어 게임을 만들 수 있습니다. 사용자는 직접 p2p 연결만을 사용하여 연결할 수 있으며, 모바일 대역폭이 사용되지 않습니다.
네트워크 대역폭 관리
Android 4.1은 기기가 종량제 네트워크에 연결되었을 때(모바일 핫스팟의 테더링 포함) 앱이 데이터 사용량을 적절히 관리하도록 지원합니다. 앱은 상대적으로 비쌀 수 있는 대규모 다운로드를 시작하기 전에 사용자에게 현재 네트워크의 요금이 측정되는지 여부를 쿼리할 수 있습니다. API를 통해 데이터 사용량에 민감한 네트워크를 명확하게 파악하고 그에 따라 네트워크 활동을 관리할 수 있습니다.
새 미디어 기능
미디어 코덱 액세스
Android 4.1은 플랫폼 하드웨어 및 소프트웨어 코덱에 낮은 수준의 액세스를 제공합니다. 앱은 기기에서 어떤 낮은 수준의 미디어 코덱을 사용할 수 있는지 검색하도록 시스템에 쿼리한 다음 필요한 방식으로 사용할 수 있습니다. 예를 들어 이제 미디어 코덱의 여러 인스턴스를 만들고, 입력 버퍼를 대기열에 추가하고, 출력 버퍼를 수신할 수 있습니다. 또한 미디어 코덱 프레임워크는 보호된 콘텐츠를 지원합니다. 앱은 기기에서 사용 가능한 DRM 솔루션으로 보호된 콘텐츠를 재생할 수 있는 사용 가능한 코덱을 쿼리할 수 있습니다.
USB 오디오
USB 오디오 출력 지원을 통해 하드웨어 공급업체는 Android 기기와 인터페이스로 연결된 오디오 도크와 같은 하드웨어를 빌드할 수 있습니다. 이 기능은 모든 개발자가 자신의 하드웨어를 만들 수 있는 기회를 제공하기 위해 Android ADK (Open Accessory Development Kit)와 함께 제공됩니다.
오디오 녹음 트리거링
이제 Android에서 오디오 재생 트랙의 완료를 기반으로 오디오 녹음을 트리거할 수 있습니다. 이 기능은 사용자에게 음성 녹음을 시작하도록 알리기 위해 신호음을 재생하는 등의 상황에 유용합니다. 이 기능은 현재 재생 중인 오디오를 녹음하지 않도록 녹음을 동기화하는 데 도움이 되며, 녹음이 너무 늦게 시작되는 것을 방지합니다.
멀티채널 오디오
Android 4.1은 HDMI 포트를 통해 하드웨어 멀티채널 오디오가 출력되는 기기에서 멀티채널 오디오를 지원합니다. 멀티채널 오디오는 게임, 음악 앱, 동영상 플레이어 등의 애플리케이션 사용자에게 리치 미디어 환경을 제공합니다. 지원되는 하드웨어가 없는 기기의 경우 Android는 기기에서 지원하는 채널 수(일반적으로 스테레오)로 오디오를 자동으로 다운믹스합니다.
또한 Android 4.1에는 AAC 5.1 오디오 인코딩/디코딩 지원 기능이 내장되어 있습니다.
오디오 사전 처리
개발자는 녹음 중인 오디오에 음성 녹음 품질 개선을 위한 노이즈 제거, 어쿠스틱 에코를 위한 에코 취소, 볼륨 레벨이 일치하지 않는 오디오를 위한 자동 게인 제어와 같은 사전 처리 효과를 적용할 수 있습니다. 고품질의 깨끗한 오디오 녹음이 필요한 앱에는 이러한 전처리기가 매우 도움이 됩니다.
오디오 체이닝
MediaPlayer는 일시중지 없이 오디오 파일을 재생할 수 있도록 오디오 스트림 체이닝을 지원합니다. 이 기능은 연속 트랙 앨범 또는 게임을 재생하기 위해 음악 플레이어와 같은 오디오 파일 간에 끊김 없는 전환이 필요한 앱에 유용합니다.
Media Router
새로운 API MediaRouter, MediaRouteActionProvider 및 MediaRouteButton은 미디어 재생 위치를 선택하기 위한 표준 메커니즘과 UI를 제공합니다. 유선 헤드셋과 a2dp 블루투스 헤드셋 및 스피커가 기본적으로 지원되며, 개발자는 앱에 고유한 라우팅 옵션을 추가할 수 있습니다.
Renderscript 계산
Android 4.1은 Renderscript 계산을 확장하여 더 많은 유연성을 제공합니다. 이제 Renderscript Compute 스크립트에서 텍스처를 샘플링할 수 있으며, 스크립트에 필요한 부동 소수점 정밀도를 정의하기 위해 새로운 pragmas를 사용할 수 있습니다. 이렇게 하면 CPU 경로에서 빠른 벡터 수학 연산과 같은 NEON 명령어를 사용 설정할 수 있습니다. 이는 전체 IEEE 754-2008 표준으로는 불가능할 수 있습니다.
이제 x86 기반 에뮬레이터 및 하드웨어 기기에서 Renderscript Compute 스크립트를 디버그할 수 있습니다. 단일 Renderscript 소스 파일에서 여러 루트 스타일 커널을 정의할 수도 있습니다.
Android 브라우저 및 WebView
Android 4.1의 Android 브라우저 및 WebView에는 다음과 같은 향상된 기능이 포함되어 있습니다.
- 터치하여 재생/일시중지 및 인라인에서 전체 화면 모드로의 부드러운 전환을 포함하여 HTML5 동영상 사용자 환경 개선
- 스크롤과 확대/축소 성능 개선을 위한 렌더링 속도 향상 및 메모리 사용량 감소
- HTML5/CSS3/Canvas 애니메이션 성능 향상
- 향상된 텍스트 입력
- 자바스크립트 성능 향상을 위해 자바스크립트 엔진(V8) 업데이트
- 업데이트된 HTML5 Media Capture 사양 지원(input type=file 요소의 'capture' 속성)
Google API 및 서비스
Android의 기능을 더욱 확장하기 위해 몇 가지 새로운 Android용 서비스를 사용할 수 있습니다.
Android용 Google 클라우드 메시징
Google 클라우드 메시징(GCM)은 개발자가 독점적인 동기화 솔루션 없이도 Android 기기에서 사용자에게 짧은 메시지 데이터를 보내기 위해 사용할 수 있는 서비스입니다.
GCM은 큐잉 메시지의 모든 세부정보를 처리하여 타겟 Android 기기로 효율적으로 전달합니다. 메시지 멀티캐스팅을 지원하고 단일 요청으로 최대 1,000대의 연결된 기기에 동시에 연결할 수 있습니다. 또한 메시지 페이로드를 지원하므로 개발자는 기기의 앱에 tickle 메시지를 보내는 것 외에도 최대 4K의 데이터를 보낼 수 있습니다.
Google 클라우드 메시징은 모든 개발자에게 완전 무료이며 가입이 쉽습니다. 등록, 다운로드, 설명서는 Google 클라우드 메시징 페이지를 참조하세요.
앱 암호화
Android 4.1부터 Google Play는 전달되어 기기에 저장되기 전 기기별 키로 모든 유료 앱을 암호화함으로써 애플리케이션 자산 보호를 지원합니다.
스마트 앱 업데이트
스마트 앱 업데이트는 앱 업데이트를 더 효과적인 방법으로 기기에 전달하기 위한 Google Play의 새로운 기능입니다. 개발자가 업데이트를 게시하면 이제 Google Play에서 전체 APK가 아닌 변경된 비트만 기기에 제공합니다. 이렇게 하면 대부분의 경우 업데이트가 훨씬 가벼워지므로 다운로드 속도가 빨라지고 기기 배터리가 절약되며 사용자의 모바일 데이터 요금제에서 대역폭 사용량을 절약할 수 있습니다. 평균적으로 스마트 앱 업데이트는 전체 APK 업데이트 크기의 약 1/3입니다.
Google Play 서비스
개발자는 Google Play 서비스를 사용하여 인증과 같은 Google 서비스를 Google Play를 통해 제공되는 앱에 통합할 수 있습니다.
Google Play 서비스는 Google Play에서 최종 사용자 기기에 자동으로 프로비저닝되므로, 앱에 씬 클라이언트 라이브러리만 있으면 됩니다.
앱에는 작은 클라이언트 라이브러리만 포함되어 있으므로 다운로드 크기 및 저장 공간을 크게 늘리지 않고도 이러한 서비스를 활용할 수 있습니다. Google Play는 또한 서비스에 정기적인 업데이트를 제공하므로, 개발자는 이를 활용하기 위해 앱 업데이트를 게시할 필요가 없습니다.
Google Play 서비스에 포함된 API에 관한 자세한 내용은 Google Play 서비스 개발자 페이지를 참조하세요.