Android 5.0 API

API 수준: 21

Android 5.0 (LOLLIPOP) 사용자와 앱 개발자를 위한 새로운 기능을 제공합니다. 이 문서에서는 주요 새 API를 소개해 드립니다.

앱을 게시한 경우 Android 5.0 동작 앱에서 고려해야 하는 변경사항 이러한 동작 변경사항은 새 API를 사용하지 않더라도 Android 5.0 기기에서 앱에 영향을 미칠 수 있음 새 기능을 타겟팅할 수 있습니다

새로운 플랫폼 기능을 개괄적으로 살펴보려면 자세한 내용은 Android Lollipop 하이라이트

개발 시작

Android 5.0용 앱을 빌드하려면 먼저 Android 버전 Android SDK를 참고하세요. 그런 다음 SDK Manager 를 다운로드하여 Android 5.0 SDK 플랫폼과 시스템 이미지를 다운로드하세요.

대상 API 레벨 업데이트

Android 5.0을 실행하는 기기에 대해 앱을 더 잘 최적화하려면, targetSdkVersion을(를) 다음으로 설정 "21"님, Android에 앱을 설치하세요 5.0 시스템 이미지를 다운로드하고 테스트한 다음 확인할 수 있습니다

Android 5.0 API를 사용하면서 이전 버전 시스템 API 수준을 확인하는 조건을 코드에 추가하여 버전 관리 를 실행하기 전에 minSdkVersion에서 지원하지 않는 API를 실행해야 합니다. 이전 버전과의 호환성 유지에 관한 자세한 내용은 지원 다양한 플랫폼 버전.

API 수준의 작동 방식에 대한 자세한 내용은 API란 무엇인가요? 레벨?

중요한 동작 변경 사항

이전에 Android용 앱을 게시한 적이 있는 경우, Android 5.0에서의 변경으로 인해 앱이 영향을 받을 수 있다는 점을 유의하세요.

자세한 내용은 Android 5.0 변경사항을 참조하세요.

사용자 인터페이스

머티리얼 디자인 지원

Android 5.0은 Android의 새로운 머티리얼 디자인 지원을 추가합니다. 있습니다. 시각적으로 역동적이고 멋진 머티리얼 디자인으로 앱을 만들 수 있습니다. 사용자가 자연스럽게 느끼는 UI 요소 전환이 있어야 합니다. 이 지원에는 다음 사항이 포함됩니다.

  • 머티리얼 테마
  • 그림자 보기
  • RecyclerView 위젯
  • 드로어블 애니메이션과 스타일링 효과
  • 머티리얼 디자인 애니메이션과 액티비티 전환 효과
  • 뷰 상태에 따른 뷰 속성의 애니메이션
  • 개발자가 제어하는 색상 팔레트가 포함된 사용자 지정 가능한 UI 위젯과 앱 모음
  • XML 벡터 그래픽에 기초한 애니메이션 및 비애니메이션 드로어블

앱에 머티리얼 디자인 기능을 추가하는 방법을 자세히 알아보려면 다음을 참조하세요. Material Design

최근 화면의 동시 문서 및 액티비티

이전 출시에서는 최근 화면 사용자가 상호작용한 각 앱에서 하나의 작업만 표시할 수 있음 합니다. 이제 앱에서 필요에 따라 더 많은 작업을 열어 문서의 동시 실행 활동을 정의합니다. 이 기능은 사용자가 개별 활동 및 문서 사이를 빠르게 오갈 수 있도록 최근 화면과 동기화되며 모든 앱에서 일관된 전환 환경이 제공됩니다. 이러한 동시 작업의 예로는 웹에서 열린 탭 등이 있습니다. 브라우저 앱, 생산성 앱의 문서, 동시 일치 메시지를 보낼 수 있습니다. 앱에서 작업을 관리할 수 있습니다. ActivityManager.AppTask 클래스를 통해 전달됩니다.

시스템에서 활동을 새로운 것으로 취급하도록 논리적 중단 삽입 다음 경우에 FLAG_ACTIVITY_NEW_DOCUMENT 사용 startActivity()로 활동을 시작합니다. 또한 <활동> 요소의 documentLaunchMode 속성을 "intoExisting" 또는 "always"를 선언해야 합니다.

최근 항목 화면이 어수선해지지 않도록 할 수 있습니다. 이렇게 하려면 <애플리케이션> 속성 android:maxRecents. 현재 지정할 수 있는 최대값은 사용자당 작업 50개 (RAM이 낮은 기기의 경우 25개)입니다.

최근 화면의 작업은 재부팅 시에도 지속되도록 설정할 수 있습니다. 제어 구현하려는 경우 android:persistableMode 속성의 값을 제공합니다. 또한 최근 화면에서 활동의 시각적 속성(예: 액티비티의 색상, 라벨, 아이콘을 지정할 수 있습니다. setTaskDescription() 메서드를 사용하여 축소하도록 요청합니다.

WebView 업데이트

Android 5.0은 WebView를 업데이트합니다. Chromium M37에 구현되고 보안 및 안정성 향상 버그 수정도 이루어졌습니다 포드의 기본 user-agent 문자열은 Android 5.0에서 실행되는 WebView의 특징은 다음과 같습니다. 은 버전 번호로 37.0.0.0을 포함하도록 업데이트되었습니다.

이 출시 버전에는 PermissionRequest 클래스가 도입되었습니다. 이렇게 하면 앱이 WebView 권한을 부여할 수 있습니다. 웹 API를 통해 카메라 및 마이크와 같은 보호된 리소스에 액세스 (예: getUserMedia()) 앱에는 적절한 Android 권한이 있어야 WebView입니다.

onShowFileChooser() 메서드를 사용하면 이제 WebView의 입력 양식 필드를 사용할 수 있습니다. 파일 선택기를 실행하여 Android 기기에서 이미지와 파일을 선택합니다.

또한 이번 릴리스에서는 WebAudio, WebGL WebRTC 개방형 표준. 이 버전에 포함된 새로운 기능에 대해 자세히 알아보려면 다음을 참조하세요. Android용 WebView

화면 캡처 및 공유

Android 5.0에서는 화면 캡처 및 화면 공유 기능을 추가하여 새로운 android.media.projection API로 앱을 빌드합니다. 이 기능은 예를 들어 동영상에서 화면 공유를 활성화하려는 경우 회의 앱으로 전환할 수 있습니다.

createVirtualDisplay() 메서드 앱이 기본 화면의 콘텐츠를 캡처할 수 있도록 합니다 (기본값 표시)를 Surface 객체로 전달하면 됩니다. 네트워크를 통해 전송할 수 없습니다. API가 비보안 화면 캡처만 허용합니다. 오디오 콘텐츠로서, 시스템 오디오가 아닙니다. 화면 캡처를 시작하려면 앱에서 먼저 다음과 같이 화면 캡처 대화상자를 시작하고 IntentcreateScreenCaptureIntent() 메서드를 사용하여 축소하도록 요청합니다.

새 API를 사용하는 방법의 예는 MediaProjectionDemo를 참고하세요. 클래스를 만들 수 있습니다.

알림

잠금 화면 알림

Android 5.0의 잠금 화면에는 화면 표시 기능이 있습니다. 있습니다. 사용자는 설정에서 허용 여부를 선택할 수 있습니다. 민감한 알림 콘텐츠를 보안 잠금 화면에 표시할 수 있습니다.

앱에서 알림을 표시할 때 표시되는 세부정보 수준을 제어할 수 있습니다. 보안 잠금 화면 위에 표시됩니다. 공개 상태를 제어하려면 다음을 호출합니다. setVisibility() 및 다음 값 중 하나를 지정합니다.

  • VISIBILITY_PRIVATE: 알림 아이콘 등의 기본 정보는 표시하지만 알림의 전체 콘텐츠를 확인하세요.
  • VISIBILITY_PUBLIC: 알림의 전체 내용을 표시합니다.
  • VISIBILITY_SECRET: 알림 아이콘을 제외하고 아무것도 표시하지 않습니다.

공개 상태 수준이 VISIBILITY_PRIVATE인 경우 수정된 버전의 알림을 제공하면 개인 정보를 숨기는 콘텐츠 예를 들어 SMS 앱은 '새 문자 메시지가 3개 있습니다'라는 알림 메시지가 숨겨짐 확인할 수 있습니다. 이 대체 알림을 제공하려면 먼저 교체 알림을 Notification.Builder 사용하여 교체할 수 있습니다. 날짜 비공개 알림 객체를 만든 다음 대체 알림을 첨부합니다. setPublicVersion() 메서드를 사용하여 지도 가장자리에 패딩을 추가할 수 있습니다.

알림 메타데이터

Android 5.0은 앱 알림과 연결된 메타데이터를 사용합니다. 알림을 더 지능적으로 정렬합니다. 메타데이터를 설정하려면 Notification.Builder의 다음 메서드를 호출할 때 다음과 같이 알림을 구성합니다.

  • setCategory(): 앱이 실행될 때 앱 알림을 처리하는 방법을 시스템에 알려줍니다. 기기가 우선순위 모드에 있는 경우 (예: 수신 전화, 채팅 메시지 또는 알람).
  • setPriority(): 알림을 일반 알림보다 더 중요하거나 덜 중요하다고 표시합니다. 우선순위 필드가 설정된 알림 PRIORITY_MAX 또는 PRIORITY_HIGH이(가) 표시되는 작은 플로팅 창으로 표시합니다.
  • addPerson(): 알림과 관련된 사용자를 한 명 이상 추가할 수 있습니다. 앱은 이를 사용하여 시스템에 함께 그룹화해야 한다고 알릴 수 있습니다. 지정된 사용자로부터 받은 알림 또는 이 사용자로부터 받은 알림 순위 지정 더 중요하다고 생각할 수 있습니다

그래픽

OpenGL ES 3.1 지원

Android 5.0은 Java 인터페이스와 OpenGL 기본 지원을 추가함 ES 3.1. OpenGL ES 3.1에서 제공되는 핵심적인 신기능은 다음과 같습니다.

  • 컴퓨트 셰이더
  • 개별 셰이더 객체
  • 간접 드로우 명령
  • 다중 샘플 및 스텐실 텍스처
  • 셰이딩 언어 개선
  • 고급 혼합 모드 및 디버깅을 위한 확장 기능
  • OpenGL ES 2.0 및 3.0의 구 버전 호환성

Android의 OpenGL ES 3.1용 Java 인터페이스는 GLES31 OpenGL ES 3.1을 사용할 때는 매니페스트 파일에서 <uses-feature> 태그와 android:glEsVersion 속성 예를 들면 다음과 같습니다.

<manifest>
    <uses-feature android:glEsVersion="0x00030001" />
    ...
</manifest>

OpenGL ES 사용에 관한 자세한 내용은 런타임 시 기기의 지원되는 OpenGL ES 버전을 확인하려면 OpenGL ES API 가이드

Android 확장 기능 팩

이 릴리스는 OpenGL ES 3.1 외에도 Java 인터페이스 및 고급 그래픽 기능에 대한 네이티브 지원 이러한 확장 프로그램은 Android에서 단일 패키지로 취급됩니다. ( ANDROID_extension_pack_es31a 확장 프로그램이 있는 경우 앱에서 다음 작업을 할 수 있습니다. 패키지의 모든 확장 프로그램이 있다고 가정하고 셰이딩 언어를 사용 설정합니다. 특성을 단일 #extension 문으로 지정할 수 있습니다.)

확장 기능 팩 지원 항목:

  • 셰이더 저장소 버퍼, 이미지 및 원자적 (프래그먼트 셰이더 지원은 OpenGL ES 3.1에서 선택 사항임)
  • 조각화 및 기하학 셰이더
  • ASTC(LDR) 텍스처 압축 형식
  • 샘플당 보간 및 셰이딩
  • 프레임 버퍼에서 각 색상 첨부에 대한 다양한 혼합 모드

확장 프로그램 팩용 Java 인터페이스는 GLES31Ext 앱 매니페스트에서 다음과 같이 선언할 수 있습니다. 앱이 확장 프로그램 팩을 지원하는 기기에만 설치되어야 합니다. 예를 들면 다음과 같습니다.

<manifest>
    <uses-feature android:name=“android.hardware.opengles.aep”
        android:required="true" />
    ...
</manifest>

미디어

고급 카메라 기능용 Camera API

Android 5.0에서는 Android.hardware.camera2 API를 사용하여 세밀한 사진 캡처 및 이미지 처리를 용이하게 합니다. 이제 할 수 있습니다. 시스템에서 사용할 수 있는 카메라 기기에 프로그래밍 방식으로 액세스합니다. getCameraIdList() 특정 기기에 연결할 때 openCamera()입니다. 이미지 캡처를 시작하려면 CameraCaptureSession를 만드세요. Surface 객체를 지정하여 캡처된 이미지를 전송합니다. CameraCaptureSession는 다음과 같이 구성할 수 있습니다. 한 번 또는 여러 장의 이미지를 촬영할 수 있습니다.

새 이미지가 캡처되었을 때 알림을 받으려면 CameraCaptureSession.CaptureCallback 리스너 캡처 요청에서 설정합니다 이제 시스템이 이미지를 완료하면 캡처 요청, 내 CameraCaptureSession.CaptureCallback 리스너는 onCaptureCompleted(), 이미지 캡처 메타데이터를 CaptureResult입니다.

CameraCharacteristics 클래스를 사용하면 앱이 기기에서 사용 가능한 카메라 기능을 감지합니다. 객체의 INFO_SUPPORTED_HARDWARE_LEVEL 속성은 카메라의 기능 수준을 나타냅니다.

  • 모든 기기는 최소 다음 기능이 포함된 하드웨어 수준 INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY개 지원 중단된 Camera와 거의 동일 API에 액세스할 수 있습니다.
  • INFO_SUPPORTED_HARDWARE_LEVEL_FULL 하드웨어 수준을 지원하는 기기는 수동이 가능합니다. 캡처 및 후처리, 고해상도 이미지 캡처 제어 높은 프레임 속도를 제공합니다.

업데이트된 카메라 API: Camera2BasicCamera2Video 구현 참고 샘플에 대해 자세히 알아보세요.

오디오 재생

이번 릴리스에서는 AudioTrack:

  • 이제 앱에서 오디오 데이터를 부동 소수점 형식으로 제공할 수 있습니다. (ENCODING_PCM_FLOAT) 이 더 큰 동적 범위, 더 일관된 정밀도 및 더 큰 헤드룸을 허용합니다. 특히, 부동 소수점 산술 연산은 중간 계산 시 유용합니다. 재생 엔드포인트는 오디오 데이터에 정수 형식을 사용하고 비트 깊이가 상대적으로 낮습니다. (Android 5.0에서는 내부 파이프라인의 일부가 아직 있습니다.)
  • 이제 앱에서 오디오 데이터를 ByteBuffer로 제공할 수 있습니다. MediaCodec에서 제공한 것과 동일한 형식입니다.
  • WRITE_NON_BLOCKING 옵션을 사용하면 일부 앱의 버퍼링과 멀티스레딩을 간소화할 수 있습니다.

미디어 재생 컨트롤

새로운 알림과 미디어 API를 사용하여 시스템 UI는 미디어 재생에 대해 알고 있으며 앨범 아트를 추출하여 표시할 수 있습니다. 이제 새로운 API를 사용하면 UI와 서비스에서 미디어 재생을 더 쉽게 제어할 수 있습니다. MediaSession 및 클래스 MediaController

새로운 MediaSession 클래스는 지원 중단된 RemoteControlClient 클래스를 대체하고 전송 컨트롤과 미디어 버튼을 처리하기 위한 콜백 메서드의 단일 세트입니다. 앱이 미디어 재생을 제공하고 Android TV 또는 Wear 플랫폼에서는 운송을 처리하는 MediaSession 클래스 컨트롤을 사용합니다.

이제 새로운 MediaController 클래스. 이 클래스는 앱의 UI 프로세스에서 미디어 재생을 모니터링하고 제어하는 스레드로부터 안전한 방법입니다. 컨트롤러를 만들 때 MediaSession.Token 지정 그러면 앱이 지정된 MediaSession와 상호작용할 수 있습니다. MediaController.TransportControls 메서드를 사용하면 play(), stop(), skipToNext(), 및 setRating() 해당 세션에서 미디어 재생을 제어합니다. 컨트롤러를 사용하여 MediaController.Callback 객체를 등록하여 세션의 메타데이터 및 상태 변경을 수신 대기합니다.

또한 재생 컨트롤을 허용하는 리치 알림을 만들 수 있습니다. 새 Notification.MediaStyle로 미디어 세션에 연결됨 클래스에 대해 자세히 알아보세요.

미디어 탐색

Android 5.0에는 앱이 미디어 콘텐츠를 탐색하는 기능이 도입됨 새 버전의 라이브러리를 통해 android.media.browse를 사용하여 API에 액세스할 수 있습니다. 앱의 미디어 콘텐츠를 노출하려면 MediaBrowserService 클래스. 귀하가 구현한 MediaBrowserService 앱에서 MediaSession.Token 앱이 미디어 콘텐츠를 재생할 수 있도록 하기 100% 업타임 체크를 제공합니다

미디어 브라우저 서비스와 상호작용하려면 MediaBrowser 클래스. 구성요소 지정 MediaSession의 이름을 지정합니다. MediaBrowser 인스턴스. 이 브라우저 인스턴스를 사용하여 그런 다음 앱이 연결된 서비스에 연결하고 노출된 콘텐츠를 재생하는 MediaSession.Token 객체 사용할 수 있습니다

저장용량

디렉터리 선택

Android 5.0은 저장소 액세스 프레임워크 사용자가 전체 디렉터리 하위 트리를 선택할 수 있도록 하여 앱에 읽기/쓰기 액세스 권한을 부여 포함된 모든 문서에 액세스할 수 있습니다.

디렉터리 하위 트리를 선택하려면 OPEN_DOCUMENT_TREE 인텐트를 지정할 수 있습니다. 시스템에서 하위 트리 선택을 지원하는 인스턴스 DocumentsProvider개 사용자가 디렉터리를 탐색 및 선택할 수 있습니다. 반환된 URI는 액세스할 수 있습니다 그런 다음 buildChildDocumentsUriUsingTree()를 사용하면 됩니다. 및 buildDocumentUriUsingTree() 와 <ph type="x-smartling-placeholder">query()</ph> 하위 트리를 살펴볼 수 있습니다

새로운 createDocument() 메서드를 사용하면 어디서나 새 문서나 디렉터리를 만들 수 있습니다. 하위 트리에 표시됩니다. 기존 문서를 관리하려면 다음을 사용하세요. renameDocument()deleteDocument()입니다. COLUMN_FLAGS 확인 이를 호출하기 전에 이러한 호출에 대한 공급자 지원을 확인해야 합니다.

DocumentsProvider를 구현하고자 하는 경우 하위 트리 선택을 지원하려면 isChildDocument()를 구현하고 FLAG_SUPPORTS_IS_CHILD를 포함합니다. (COLUMN_FLAGS에 있음)

Android 5.0은 또한 앱이 미디어 파일을 포함할 수 있는 공유 저장소 MediaStore 새로운 getExternalMediaDirs()는 다음 항목의 경로를 반환합니다. 모든 공유 저장 장치에 있는 디렉터리입니다. 다음과 유사: getExternalFilesDir(), 앱은 반환된 경로에 액세스하기 위해 추가 권한이 필요하지 않습니다. 이 플랫폼에서 새 미디어를 정기적으로 스캔하지만, MediaScannerConnection를 사용하여 있습니다.

무선 및 연결

다중 네트워크 연결

Android 5.0은 새로운 멀티 네트워킹 API를 제공하여 앱이 특정 기능을 갖춘 사용 가능한 네트워크를 동적으로 스캔하고, 연결을 설정합니다 이 기능은 앱이 SUPL, MMS 또는 이동통신사 청구 네트워크와 같은 특수 네트워크가 필요한 경우 또는 특정 유형의 전송 프로토콜을 사용하여 데이터를 전송하려는 경우에 사용합니다.

앱에서 네트워크를 동적으로 선택하고 연결하려면 단계:

  1. ConnectivityManager를 만듭니다.
  2. NetworkRequest.Builder 클래스를 사용하여 NetworkRequest 객체 및 네트워크 기능 지정 전송 유형을 선택할 수 있습니다
  3. 적합한 네트워크를 검색하려면 requestNetwork()를 호출합니다. 또는 registerNetworkCallback()이고, NetworkRequest 객체 및 ConnectivityManager.NetworkCallback입니다. 사용 requestNetwork() 메서드: 감지된 후 적절한 네트워크로 적극적으로 전환하려는 경우 받기 능동적으로 전환하지 않고 검색된 네트워크의 알림만 받으려면 registerNetworkCallback() 메서드를 사용하세요.

시스템이 적절한 네트워크를 감지하면 네트워크에 연결하고 는 onAvailable() 있습니다. 콜백의 Network 객체를 사용하여 네트워크에 대한 추가 정보를 얻거나 선택할 수 있습니다.

저전력 블루투스

Android 4.3에는 저전력 블루투스 (블루투스 LE)를 할당합니다. Android 5.0에서 Android 기기는 이제 블루투스 LE 주변기기 역할을 합니다. 앱에서 이 기능을 사용할 수 있음 주변 기기에 존재를 알릴 수 있습니다. 예를 들어, 장치가 만보계 또는 건강 모니터 역할을 하고 다른 블루투스 LE 장치로 데이터를 보냅니다.

새로운 android.bluetooth.le API를 사용하면 앱에서 광고를 검색하고, 응답을 스캔하고, 근처 블루투스로 연결을 설정하세요 LE 기기. 새로운 광고 및 스캔 기능을 사용하려면 BLUETOOTH_ADMIN 권한을 부여할 수 있습니다. 사용자가 Play 스토어에서 앱을 업데이트하거나 다운로드할 때 앱에 다음 권한을 부여하라는 메시지가 표시됩니다. "Bluetooth 연결 정보: 앱이 Bluetooth를 제어하도록 허용합니다. "근처 블루투스 장치에 대한 정보를 얻거나 브로드캐스팅하는 것 등이 포함됩니다."

다른 기기가 앱에 startAdvertising() 그런 다음 AdvertiseCallback 클래스. 콜백 객체 광고 작업의 성공 또는 실패에 대한 보고서를 수신합니다.

Android 5.0에는 ScanFilter 클래스가 도입되므로 사용자의 앱에서 특정 유형의 기기를 찾는 데 도움이 됩니다. 블루투스 검색을 시작하려면 다음 단계를 따르세요. 저전력 기기, startScan()번으로 전화 필터 목록을 전달합니다. 메서드 호출에서 ScanCallback를 구현하여 블루투스 LE 광고를 찾았습니다.

NFC 강화

Android 5.0에는 이러한 개선사항이 추가되어 더 폭넓고 다양한 애플리케이션을 유연한 NFC 사용:

  • 이제 공유 메뉴에서 Android Beam을 사용할 수 있습니다.
  • 앱은 다음과 같이 사용자 기기에서 Android Beam을 호출하여 데이터를 공유할 수 있습니다. invokeBeam()를 호출합니다. 이렇게 하면 사용자가 기기를 다른 쪽에 직접 탭하지 않아도 됩니다. 데이터 전송을 완료할 수 있는 NFC 지원 기기
  • createTextRecord() 메서드를 사용하여 UTF-8 텍스트 데이터가 포함된 NDEF 레코드를 만들 수 있습니다.
  • 결제 앱을 개발하는 경우 이제 다음 작업을 할 수 있습니다. 다음을 호출하여 NFC 애플리케이션 ID (AID)를 동적으로 등록합니다. registerAidsForService() setPreferredService()를 사용하여 기본 카드 에뮬레이션 서비스를 설정할 수도 있습니다. 는 특정 활동이 포그라운드에 있을 때 사용됩니다.

프로젝트 Volta

Android 5.0은 새로운 기능 외에 배터리 개선도 강조합니다. 중요합니다 새로운 API와 도구를 사용하여 앱의 성능을 파악하고 최적화하세요. 있습니다

작업 예약

Android 5.0은 새로운 JobScheduler를 제공합니다. 시스템에서 실행할 작업을 정의하여 배터리 수명을 최적화할 수 있게 해주는 API 비동기식으로 처리하거나 지정된 조건 (예: 충전 중). 작업 예약은 다음과 같은 상황에 유용합니다.

  • 앱에 차별화가 가능한 사용자 비대면 작업이 있을 경우.
  • 앱에 기기가 연결되어 있을 때 수행하고자 하는 작업이 있습니다.
  • 앱에 네트워크 액세스 또는 Wi-Fi가 필요한 작업이 있음 연결
  • 앱에 정기적으로 실행하려는 있습니다

작업 단위는 JobInfo 객체로 캡슐화됩니다. 이 객체는 예약 기준을 지정합니다.

JobInfo.Builder 클래스를 사용하여 예약된 태스크가 실행되어야 합니다. 작업을 예약하면 다음과 같은 조건이 있습니다.

  • 기가가 충전 중일 때 시작
  • 기기가 무제한 네트워크에 연결되었을 때 시작
  • 기기가 유휴 상태일 때 시작
  • 특정 마감 전에 또는 최소한의 지연으로 종료

예를 들어 이와 같은 코드를 추가하여 무제한 네트워크:

Kotlin

val uploadTask: JobInfo = JobInfo.Builder(
        jobId,
        serviceComponent /* JobService component */
).run {
    setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
    build()
}
val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
jobScheduler.schedule(uploadTask)

자바

JobInfo uploadTask = new JobInfo.Builder(jobId,
                                         serviceComponent /* JobService component */)
        .setRequiredNetworkCapabilities(JobInfo.NETWORK_TYPE_UNMETERED)
        .build();
JobScheduler jobScheduler =
        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(uploadTask);

기기의 전원이 안정적인 경우 (즉, 기기가 더 오랫동안 전원에 연결되어 있기 때문에 배터리가 방전된 경우 건강 수준) 시스템이 작업을 실행할 준비가 된 모든 예약된 작업을 실행합니다. 기한이 만료되지 않았습니다.

JobScheduler API 사용 방법의 예를 보려면 다음 안내를 따르세요. 이 버전의 JobSchedulerSample 구현 샘플을 참고하세요.

배터리 사용량을 위한 개발자 도구

새로운 dumpsys batterystats 명령어는 순 사용자 ID별로 구성된 기기의 배터리 사용량에 관한 통계 데이터입니다. (UID). 이러한 통계 데이터에는 다음이 포함됩니다.

  • 배터리 관련 이벤트 내역
  • 기기의 전역 통계
  • UID 및 시스템 구성요소당 대략적인 전력 사용
  • 각 앱의 패킷당 모바일 ms
  • 집계된 시스템 UID 통계
  • 집계된 앱 UID 통계

--help 옵션을 사용하여 모델을 학습시키는 작업도 반복해야 합니다 예를 들어 배터리 사용량을 출력하려면 앱 패키지의 통계를 보려면 이 명령어:

$ adb shell dumpsys batterystats --charged <package-name>

Battery Historian dumpsys 명령어의 출력에서 도구를 로그에서 전력 관련 이벤트의 HTML 시각화를 생성합니다. 이 이 정보를 통해 배터리를 더 쉽게 파악하고 진단할 수 있습니다. 관련 문제를 해결할 수 있습니다.

직장과 교육용 Android

관리 프로비저닝

Android 5.0은 Android에서 앱을 실행하기 위한 새로운 기능을 엔터프라이즈 환경입니다. 가 기기 관리자는 관리 프로비저닝 프로세스를 시작하여 사용자에게 기존 개인 계정이 있는 경우 관리 프로필을 기기에 추가할 수 있습니다. 관리 프로필과 연결된 앱이 비관리 앱이 사용자의 런처, 최근 화면, 알림에 표시됩니다.

관리 프로비저닝 프로세스를 시작하려면 IntentACTION_PROVISION_MANAGED_PROFILE 만약 호출이 성공하면 시스템에서 onProfileProvisioningComplete() 콜백입니다. 그런 다음 setProfileEnabled()를 호출하여 이 관리 프로필을 사용 설정합니다.

기본적으로 관리된 프로필에서는 앱의 작은 하위 세트만 활성화됩니다. 다음을 호출하여 관리 프로필에서 추가 앱을 설치할 수 있습니다. enableSystemApp()

런처 앱을 개발하는 경우 새 LauncherApps 클래스를 사용하여 시작 가능한 활동 목록을 가져올 수 있습니다. 사용자 및 연결된 모든 관리 프로필에 대한 액세스 권한을 제공합니다 런처를 사용하면 아이콘에 직장 배지를 추가하여 관리 앱을 시각적으로 눈에 띄게 표시 드로어블을 설정할 수 있습니다. 배지가 있는 아이콘을 가져오려면 다음을 호출합니다. getUserBadgedIcon()

새로운 기능을 사용하는 방법은 이 버전의 BasicManagedProfile 구현 샘플입니다.

기기 소유자

Android 5.0에는 기기 소유자 앱을 배포하는 기능이 도입되었습니다. 기기 소유자기기 관리자 보조 사용자를 생성 및 삭제하고 기기에서 전체 설정을 구성할 수 있습니다. 기기 소유자 앱에서 DevicePolicyManager 클래스의 메서드 관리 기기의 구성, 보안, 앱을 세밀하게 제어할 수 있습니다. 기기는 한 번에 활성 기기 소유자를 1개만 가질 수 있습니다.

기기 소유자를 배포하고 활성화하려면 NFC 데이터 전송을 수행해야 합니다. 프로비저닝되지 않은 기기에 프로그래밍 앱에서 기기로 전송 있습니다. 이 데이터 전송은 프로비저닝 인텐트와 동일한 정보를 전송합니다. 이는 관리 프로비저닝에 설명된 대로 제공됩니다.

화면 고정

Android 5.0에는 새로운 화면 고정 API가 도입되어 사용자가 할 일을 떠나거나 알림에 의해 방해를 받지 못하도록 제한하세요. 예를 들어 이 프로젝트는 교육용 앱을 개발하고 중요한 평가 요구사항이나 단일 목적 또는 사용할 수 있습니다. 앱에서 화면 고정을 활성화하면 사용자는 알림을 받거나, 다른 앱에 액세스하거나, 홈 화면으로 돌아가거나, 종료되어야 합니다.

화면 고정을 활성화하는 방법은 2가지가 있습니다.

  • 수동: 사용자가 다음 화면에서 화면 고정을 사용 설정할 수 있습니다. 설정 > 보안 > 화면 고정을 클릭한 후 원하는 작업을 선택합니다. 최근 항목 화면에서 녹색 핀 아이콘을 터치하여 핀을 고정할 수 있습니다.
  • 프로그래매틱 방식: 화면 고정을 활성화합니다. 프로그래매틱 방식으로 startLockTask() 호출 할 수 있습니다. 요청하는 앱이 기기 소유자가 아닌 경우 사용자에게 메시지가 표시됩니다. 확인 기기 소유자 앱은 setLockTaskPackages() 메서드를 사용하여 사용자 확인 단계 없이 앱을 고정할 수 있습니다.

작업 잠금이 활성화되면 다음 동작이 발생합니다.

  • 상태 표시줄이 비어 있고 사용자 알림 및 상태 정보가 표시됩니다. 숨김 처리됨
  • Home과 Recent Apps 버튼이 숨겨집니다.
  • 다른 앱이 새로운 액티비티를 시작하지 못합니다.
  • 현재 앱은 새로운 활동을 시작할 수 있습니다. 단, 새로운 활동을 시작할 수 없습니다. 새 할 일 만들기
  • 기기 소유자가 화면 고정을 호출하면 사용자가 잠긴 상태로 유지됩니다. 앱이 호출될 때까지 stopLockTask()
  • 기기 소유자가 아닌 다른 앱에서 화면 고정을 활성화했거나 가 있는 경우, 사용자는 뒤로 및 최근 버튼을 모두 길게 눌러 종료할 수 있습니다.

인쇄 프레임워크

PDF를 비트맵으로 렌더링

이제 새 PdfRenderer 클래스를 사용합니다. 먼저 탐색 가능한 ParcelFileDescriptor (즉, 콘텐츠 무작위로 액세스될 수 있음)을 사용하는 것이 좋습니다. 앱은 다음을 사용하여 렌더링할 페이지를 얻을 수 있습니다. openPage() 후 호출 render() 열린 PdfRenderer.Page를 비트맵으로 변환합니다. 나 또한 일부 매개변수만 변환하려는 경우에는 추가 매개변수를 문서를 비트맵 이미지로 변환 (예: 타일 렌더링 를 누릅니다.)

새 API를 사용하는 방법의 예는 PdfRendererBasic를 참고하세요. 샘플입니다.

시스템

앱 사용량 통계

이제 Android 기기에서 앱 사용 기록에 액세스할 수 있습니다. 새로운 android.app.usage API를 제공합니다. 이 API는 더 이상 사용하지 않는 것보다는 getRecentTasks() 메서드를 사용하여 지도 가장자리에 패딩을 추가할 수 있습니다. 이 API를 사용하려면 먼저 "android.permission.PACKAGE_USAGE_STATS" 권한을 선언해야 합니다. 또한 사용자는 설정 > 보안 > 앱 사용 권한을 부여할 수 있습니다

시스템에서 앱별로 사용 데이터를 수집하여 일간, 주간, 월간, 연간 간격의 데이터를 제공합니다. 최대 기간 보관하는 방법은 다음과 같습니다.

  • 일일 데이터: 7일
  • 주간 데이터: 4주
  • 월별 데이터: 6개월
  • 연간 데이터: 2년

각 앱에서 시스템은 다음 데이터를 기록합니다.

  • 앱을 마지막으로 사용한 시간
  • 해당 시간 간격 동안 앱이 포그라운드에 있었던 총 시간 (일별, 주별, 월별 또는 연도별)
  • 구성요소 (패키지 및 활동 이름으로 식별됨)를 캡처하는 타임스탬프 하루 동안 포그라운드 또는 백그라운드로 이동됨
  • 기기 설정이 변경되었을 때 (예: 회전으로 인해 기기 방향이 변경됨)

테스트 및 접근성

테스트 및 접근성 개선

Android 5.0은 테스트 및 추적을 위해 다음과 같은 지원을 추가합니다. 접근성:

  • 새로운 getWindowAnimationFrameStats()getWindowContentFrameStats() 메서드는 창 애니메이션과 콘텐츠의 프레임 통계를 캡처합니다. 이러한 메서드 앱이 렌더링되고 있는지 평가하는 계측 테스트를 작성할 수 있음 충분한 새로고침 빈도로 프레임을 설정해야 합니다.
  • 새로운 executeShellCommand() 메서드를 사용하면 계측 테스트에서 셸 명령어를 실행할 수 있습니다. 이 명령어 실행은 호스트에서 adb shell를 실행하는 것과 비슷합니다. 이를 통해 웹 서버와 같은 셸 기반 도구를 사용할 수 있으며, dumpsys, am, content, pm
  • 접근성 API를 사용하는 접근성 서비스 및 테스트 도구 (예: UiAutomator) 이제 웹 영역에서 창 속성에 대한 자세한 정보를 이용할 수 있도록 돕는 것입니다. 목록에서 AccessibilityWindowInfo 객체에서 새로운 getWindows() 메서드를 사용하여 축소하도록 요청합니다.
  • 새로운 AccessibilityNodeInfo.AccessibilityAction 클래스를 사용하면 AccessibilityNodeInfo입니다. 새로운 AccessibilityNodeInfo.AccessibilityAction 클래스는 이전에 확인된 작업 관련 API를 대체합니다. AccessibilityNodeInfo입니다.
  • Android 5.0은 있습니다. 새로운 Voice 클래스를 사용하면 앱에서 다음 작업을 할 수 있습니다. 특정 언어, 품질, 지연 시간과 관련된 음성 프로필 사용 평점, 텍스트 음성 변환 엔진 관련 매개변수입니다.

IME

입력 언어의 간편한 전환

Android 5.0부터 사용자는 모든 입력 메서드 편집기 (IME)를 사용해야 합니다. 지정된 전환 동작 (일반적으로 소프트 키보드에서 지구본 아이콘 터치)의 주기가 반복될 때마다 모든 IME를 통과해야 합니다. 이러한 동작 변경은 shouldOfferSwitchingToNextInputMethod() 메서드를 사용하여 축소하도록 요청합니다.

또한 이제 프레임워크는 다음 IME에 모든 전환 메커니즘이 있으며, 따라서 해당 IME가 뒤에 오는 IME). 전환 메커니즘이 포함된 IME는 전환 메커니즘이 없는 IME로 순환되지 않습니다. 이 동작의 변경사항은 switchToNextInputMethod() 메서드를 사용하여 축소하도록 요청합니다.

업데이트된 IME 전환 API를 사용하는 방법의 예를 보려면 다음을 참고하세요. 이 릴리스에서 소프트 키보드 구현 샘플을 업데이트했습니다. 자세히 알아보려면 IME 간 전환을 구현하는 방법은 입력 방법 만들기.

매니페스트 선언

선언이 필요한 기능

이제 다음 값이 <uses-feature> 드림 요소를 사용하여 앱 또는 게임이 특정 유형의 제공할 수 있습니다

사용자 권한

이제 <uses-permission> 드림 요소를 사용하여 앱이 특정 API에 액세스하는 데 필요한 권한을 선언할 수 있습니다.