Android 6.0 API

Android 6.0 (M) 사용자와 앱 개발자를 위한 새로운 기능을 제공합니다. 이 문서에서는 API에 대해 알아봤습니다

개발 시작

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

대상 API 레벨 업데이트

Android를 실행하는 기기에 맞게 앱을 더 효과적으로 최적화하려면 targetSdkVersion을(를) 다음으로 설정 "23"님, Android에 앱을 설치하세요 테스트한 후 확인할 수 있습니다

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

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

지문 인증

이 릴리스에서는 사용자의 지문 스캔을 사용하여 사용자를 인증할 수 있는 새로운 API를 제공합니다. 이러한 API를 Android 키 저장소 시스템.

지문 스캔을 통해 사용자를 인증하려면 새로운 FingerprintManager 클래스를 열고 authenticate() 메서드를 사용하여 축소하도록 요청합니다. 앱이 호환되는 훨씬 빠릅니다. 지문의 사용자 인터페이스를 구현해야 합니다. 인증 흐름을 관리하고 UI에서 표준 Android 지문 아이콘을 사용합니다. Android 지문 아이콘 (c_fp_40px.png)은 다음에 포함됩니다. 생체 인식 인증 샘플 지문 인증을 사용하는 앱을 여러 개 개발하는 경우 각 앱은 사용자의 지문을 독립적으로 인증합니다.

앱에서 이 기능을 사용하려면 먼저 USE_FINGERPRINT 권한을 선언해야 합니다.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />
지문 인증 기능이 표시된 휴대기기

지문 인증의 앱 구현을 확인하려면 다음을 참조하세요. 생체 인식 인증 샘플 이러한 인증을 사용하는 방법에 대한 데모 API를 다른 Android API와 함께 사용하려면 동영상을 참조하세요. <ph type="x-smartling-placeholder"></ph> 지문 및 결제 API.

이 기능을 테스트하는 경우, 다음 단계를 따릅니다.

  1. Android SDK 도구 수정 버전 24.3을 설치합니다(아직 설치하지 않은 경우).
  2. 다음으로 이동하여 에뮬레이터에 새 지문을 등록합니다. 설정 > 보안 > 지문을 다운로드한 다음 등록 안내를 따릅니다.
  3. 에뮬레이터를 사용하여 실행할 수도 있습니다 동일한 명령을 사용하여 잠금 화면에서 지문 터치 이벤트를 에뮬레이트하거나 확인할 수 있습니다.
    adb -e emu finger touch <finger_id>
    

    Windows에서는 telnet 127.0.0.1 <emulator-id>를 실행한 다음 finger touch <finger_id>입니다.

자격 증명 확인

사용자가 최근에 기기를 마지막으로 잠금 해제한 방식에 따라 앱에서 사용자를 인증할 수 있습니다. 이 기능을 사용하면 사용자가 앱 비밀번호를 추가로 기억하지 않아도 되며 자체 인증 사용자 인터페이스를 구현할 수 있습니다. 앱에서 이 기능을 사용해야 하는 경우 사용자 인증을 위한 공개 또는 비밀 키 구현과 연계합니다.

사용자가 성공적으로 로그인한 후 동일한 키를 재사용할 수 있는 제한 시간 설정 인증되면 새 setUserAuthenticationValidityDurationSeconds() KeyGenerator 또는 KeyPairGenerator입니다.

재인증 대화상자를 과도하게 표시하지 마세요. 앱에서 먼저 암호화 객체를 사용하고, 제한 시간이 만료되면 createConfirmDeviceCredentialIntent() 메서드를 사용하여 앱 내에서 사용자를 재인증해야 합니다.

앱 연결

이 릴리스는 더 강력한 앱 링크를 제공하여 Android의 인텐트 시스템을 강화합니다. 이 기능을 이용하면 앱을 여러분이 소유하고 있는 웹 도메인과 연관시킬 수 있습니다. 기반 플랫폼은 특정 작업을 처리하는 데 사용할 기본 앱을 결정할 수 있습니다. 사용자에게 앱을 선택하라는 메시지를 건너뛸 수 있습니다. 이 기능을 구현하는 방법은 앱 링크 처리

앱용 자동 백업

시스템에서 이제 앱에 대한 완전한 데이터 백업과 복원을 자동으로 수행합니다. 앱에서 타겟팅해야 하는 Android 6.0 (API 수준 23)에서 이 동작을 사용 설정해야 합니다. 코드를 더 추가할 필요가 없습니다. 사용자가 Google 계정을 삭제하면 계정의 백업 데이터도 함께 삭제됩니다. 이 방법을 파일 시스템에서 백업할 항목을 구성하는 방법에 대해 자세히 알아보려면 앱용 자동 백업 구성하기

직접 공유

직접 공유 기능이 표시된 모바일 하단

이 릴리스에서는 사용자가 공유 기능을 간편하고 신속하게 이용할 수 있도록 해주는 API를 제공합니다. 이제 할 수 있습니다. 앱에서 특정 활동을 실행하는 직접 공유 타겟을 정의합니다. 이러한 직접 공유는 공유 메뉴를 통해 사용자에게 노출됩니다. 이 기능을 통해 사용자는 다른 앱 내의 타겟(예: 연락처)에 콘텐츠를 전송할 수 있습니다. 예를 들어 직접 공유 대상은 다른 소셜 네트워크 앱에서 활동을 시작할 수 있습니다. 그러면 사용자가 특정 친구 또는 커뮤니티를 찾을 수 있습니다.

직접 공유 타겟을 사용 설정하려면 ChooserTargetService 클래스. 서비스 내에 있습니다 해당 선언 내에서 BIND_CHOOSER_TARGET_SERVICE 권한 및 인텐트 필터를 SERVICE_INTERFACE 작업

다음 예는 ChooserTargetService를 선언해야 합니다.

<service android:name=".ChooserTargetService"
        android:label="@string/service_name"
        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
    <intent-filter>
        <action android:name="android.service.chooser.ChooserTargetService" />
    </intent-filter>
</service>

노출하려는 각 활동에 대해 ChooserTargetService, 이름이 지정된 <meta-data> 요소 "android.service.chooser.chooser_target_service"에 포함해야 합니다.

<activity android:name=".MyShareActivity”
        android:label="@string/share_activity_label">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
    </intent-filter>
<meta-data
        android:name="android.service.chooser.chooser_target_service"
        android:value=".ChooserTargetService" />
</activity>

음성 상호작용

이 릴리스에서는 새로운 음성 상호작용 API를 제공하며, 음성 액션, 대화형 음성 환경을 앱에 빌드할 수 있습니다. 먼저 isVoiceInteraction() 메서드를 사용하여 음성 작업이 트리거되었는지 확인 확인할 수 있습니다. 설정된 경우 앱에서 VoiceInteractor 수업에서 사용자에게 음성 확인을 요청하려면 다음 중에서 선택하세요. 선택할 수 있습니다.

대부분 음성 상호작용은 사용자 음성 액션에서 발생합니다. 음성 상호작용 활동을 통해 사용자 입력 없이도 시작할 수 있습니다. 예: 음성을 통해 실행되는 다른 앱 음성 상호작용을 시작하기 위한 인텐트를 전송할 수도 있습니다. 사용자의 활동이 앱이 사용자 음성 쿼리나 다른 음성 상호작용 앱에서 시작된 경우 isVoiceInteractionRoot() 메서드를 사용하여 지도 가장자리에 패딩을 추가할 수 있습니다. 다른 앱에서 활동이 있는 경우 메서드는 false를 반환합니다. 그러면 앱에서 사용자에게 그들이 이 액션을 의도한 것이었습니다.

음성 액션 구현에 대해 자세히 알아보려면 다음을 참조하세요. 음성 액션 개발자 사이트에서 확인하세요.

Assist API

이 릴리스에서는 사용자가 도우미를 통해 앱에 참여하게 하는 새로운 방식을 제시합니다. 이 기능을 사용하려면 사용자는 어시스턴트가 현재 컨텍스트를 사용하도록 설정해야 합니다. 사용 설정되면 사용자는 버튼을 길게 눌러 모든 앱에서 어시스턴트를 호출할 수 있습니다.

앱은 FLAG_SECURE 플래그. 'API 약관'의 플랫폼이 어시스턴트에 전달하는 표준 정보 집합이기 때문에 앱은 새 AssistContent 클래스를 사용하여 추가 정보를 얻을 수 있습니다.

도우미에게 앱에서 가져온 추가 컨텍스트를 제공하려면, 다음 단계를 따릅니다.

  1. Application.OnProvideAssistDataListener 인터페이스를 구현합니다.
  2. 다음을 사용하여 이 리스너를 등록합니다. registerOnProvideAssistDataListener()
  3. 활동별 문맥 정보를 제공하려면 onProvideAssistData() 콜백하고 선택적으로 새로운 onProvideAssistContent() 있습니다.

채택 가능한 저장소 기기

이번 출시로 사용자는 SD 카드와 같은 외부 저장소 기기를 채택할 수 있습니다. 도입으로 외부 저장소 기기 내부 저장소처럼 작동하도록 기기를 암호화하고 포맷합니다. 이 기능을 사용하면 사용자가 앱과 해당 앱의 비공개 데이터를 여러 저장 기기 간에 이동할 수 있습니다. 날짜 시스템을 이동하는 경우 시스템은 android:installLocation 드림 환경설정을 지정할 수도 있습니다

앱이 다음 API 또는 필드에 액세스하는 경우 API나 필드가 반환하는 파일 경로에 유의하세요. 는 앱이 내부 및 외부 저장소 기기 간에 이동할 때 동적으로 변경됩니다. 파일 경로를 빌드할 때 항상 이 API를 동적으로 호출할 것을 적극 권장합니다. 하드코드된 경로를 사용하거나 이전에 빌드된 정규화된 파일 경로를 유지하지 마십시오.

이 기능을 디버그하려면 다음 명령어를 실행하여 USB OTG (On-The-Go) 케이블을 통해 Android 기기에 연결합니다.

$ adb shell sm set-force-adoptable true

알림

이 릴리스에서는 알림 기능에 다음과 같은 API 변경이 추가되었습니다.

블루투스 스타일러스 지원

이 릴리스에서는 블루투스 스타일러스를 사용하는 사용자 입력에 대한 지원이 개선되었습니다. 사용자가 페어링할 수 있음 호환되는 블루투스 스타일러스를 휴대전화나 태블릿에 연결하세요. 연결되어 있는 동안 위치 터치 스크린의 정보가 스타일러스의 압력 및 버튼 정보와 합쳐져 터치 스크린만 사용할 때보다 훨씬 다양한 표현을 제공할 수 있습니다. 앱이 리슨할 수 있는 경우 스타일러스 버튼 누름을 등록하여 View.OnContextClickListenerGestureDetector.OnContextClickListener 객체

MotionEvent 메서드와 상수를 사용하여 스타일러스 버튼 감지 상호작용:

블루투스 저전력 스캔 개선

앱이 저전력 블루투스 검색을 수행하는 경우 새로운 setCallbackType() 메서드를 사용하여 시스템에서 콜백을 처음 찾거나 오래 걸리는 경우 세트 ScanFilter와 일치하는 광고 패킷입니다. 이 은 이전 플랫폼 버전에서 제공된 것보다 더 전력 효율적입니다.

핫스팟 2.0 릴리스 1 지원

이 릴리스에서는 Nexus 6 및 Nexus 9 기기에서의 핫스팟 2.0 릴리스 1 사양에 대한 지원이 추가되었습니다. 받는사람 핫스팟 2.0 자격 증명을 프로비저닝하려면 WifiEnterpriseConfig 클래스. 예: setPlmn()setRealm()입니다. WifiConfiguration 객체에서 설정 가능한 FQDNproviderFriendlyName 필드 새로운 isPasspointNetwork() 메서드는 핫스팟 2.0 액세스 포인트를 나타냅니다.

4K 디스플레이 모드

이제 플랫폼에서 앱이 디스플레이 해상도를 4K 렌더링으로 업그레이드하도록 요청할 수 있습니다. 실행할 수 있습니다 현재의 물리적 해상도를 쿼리하려면 새로운 Display.Mode API UI가 더 낮은 논리 해상도에서 그려졌고 더 큰 물리적 해상도로 업스케일링되면 기본 해상도가 getPhysicalWidth() 메서드 반환은 논리 연산자와 다를 수 있습니다. getSize()에서 보고한 해상도

앱이 실행되는 동안 다음과 같은 실제 해상도를 변경하도록 시스템에 요청할 수 있습니다. 앱의 preferredDisplayModeId 속성 창 이 기능은 4K 디스플레이 해상도로 전환하고자 하는 경우 무척 유용합니다. 4K 디스플레이 사용 UI가 원래 해상도 (예: 1080p)에서 계속 렌더링되고 4K이지만 SurfaceView 객체는 기본 해상도로 콘텐츠를 표시할 수 있습니다.

테마 지정 가능 ColorStateList

이제 테마 속성이 다음에서 지원됩니다. Android 6.0 (API 수준 23)에서 실행되는 기기의 경우 ColorStateListResources.getColorStateList() 및 메서드 Resources.getColor()개가 지원 중단되었습니다. 이러한 API를 호출하는 경우 새 Context.getColorStateList() 또는 대신 Context.getColor() 메서드를 사용하세요. 이러한 메서드는 ContextCompat를 통해 v4 appcompat 라이브러리에서도 사용할 수 있습니다.

오디오 기능

이 릴리스에서는 Android에서의 오디오 처리에 개선점을 더했습니다.

  • MIDI 지원 새로운 android.media.midi API를 사용합니다. 다음 API를 사용하여 MIDI를 주고받습니다. 이벤트를 수신합니다.
  • AudioRecord.BuilderAudioTrack.Builder 클래스를 사용하여 각각 디지털 오디오 캡처 및 재생 객체를 만들고 오디오를 소스 및 싱크 속성을 사용하여 시스템 기본값을 재정의합니다.
  • 오디오 및 입력 기기를 연관시키기 위한 API Hook이 추가되었습니다. 이는 앱이 사용자가 Android에 연결된 게임 컨트롤러나 리모컨에서 음성 검색을 시작할 수 있습니다. TV. 시스템에서 새 onSearchRequested() 사용자가 검색을 시작할 때 콜백을 호출합니다. 사용자의 입력 기기에 마이크를 가져온 다음 이 콜백에서 InputDevice 객체를 가져온 후 새 hasMicrophone() 메서드
  • 새로운 getDevices() 메서드를 사용하면 현재 시스템에 연결된 모든 오디오 기기의 목록을 검색합니다. 또한 AudioDeviceCallback 객체: 시스템에서 앱에 알리도록 하려는 경우 오디오 기기가 연결되거나 연결 해제될 때

동영상 기능

이 릴리스에서는 비디오 처리 API에 새로운 기능을 추가합니다.

  • 애플리케이션이 동기식으로 렌더링하는 데 도움이 되는 새로운 MediaSync 클래스 오디오 및 동영상 스트림 오디오 버퍼는 비블로킹 방식으로 제출되며 콜백을 통해 반환됩니다. 이것은 동적 재생 속도도 지원합니다.
  • 새로운 EVENT_SESSION_RECLAIMED 이벤트를 사용하면 앱에서 연 세션을 리소스 관리자가 회수했습니다. 앱이 DRM 세션을 사용하는 경우 이 이벤트를 처리해야 하며 회수된 세션을 사용하지 않도록 해야 합니다.
  • 새로운 ERROR_RECLAIMED 오류 코드는 코덱이 사용한 미디어 리소스를 회수했다는 것을 의미합니다. 이 예외를 제외하고 코덱이 종료 상태로 이동했으므로 해제되어야 합니다.
  • 지원되는 최대 개수에 관한 힌트를 가져오는 새로운 getMaxSupportedInstances() 인터페이스 동시 코덱 인스턴스를 지원합니다.
  • 새로운 setPlaybackParams() 메서드를 사용하여 미디어 재생 속도를 빠르게 설정하거나 슬로 모션 재생 또한 오디오 재생을 자동으로 늘리거나 속도를 높이기도 합니다. 매우 중요합니다.

카메라 기능

이 릴리스에는 카메라의 손전등에 액세스하고 카메라 이미지 재처리:

Flashlight API

카메라 기기에 플래시 장치가 있는 경우 setTorchMode() 메서드를 사용하여 카메라 기기를 열지 않고도 플래시 장치의 토치 모드를 켜거나 끌 수 있습니다. 앱 플래시 장치 또는 카메라 장치에 대한 독점적인 소유권이 없습니다. Torch 모드가 사용 설정되었습니다. 카메라 기기가 꺼지거나 다른 카메라가 사용 중지될 때마다 사용할 수 없게 됩니다. 토치를 켜진 상태로 유지하는 리소스를 사용할 수 없게 됩니다 다른 앱에서도 전화를 걸 수 있음 setTorchMode() 토치 모드를 사용 중지합니다 토치 모드를 켠 마지막 앱이 종료되면 토치가 모드가 꺼집니다.

토치 모드 상태에 관해 알림을 받기 위한 콜백을 등록하려면 registerTorchCallback() 메서드를 사용하여 축소하도록 요청합니다. 콜백이 처음 등록되면 즉시 토치 모드로 호출됩니다. 상태를 보여줍니다. Torch 모드가 사용 설정되어 있거나 꺼지면 onTorchModeChanged() 메서드가 호출됩니다.

Reprocessing API

YUV 및 비공개를 지원하도록 Camera2 API가 확장됨 불투명 형식 이미지 재처리입니다. 이러한 재처리 기능을 사용할 수 있는지 확인하려면 getCameraCharacteristics()를 호출하여 REPROCESS_MAX_CAPTURE_STALL 키. 만약 재처리를 지원하는 경우 다음 함수를 호출하여 재처리 가능한 카메라 캡처 세션을 생성할 수 있습니다. createReprocessableCaptureSession()님, 입력 버퍼 재처리를 위한 요청을 생성할 수 있습니다.

ImageWriter 클래스를 사용하여 입력 버퍼 흐름을 카메라에 연결 재처리하는 것입니다. 빈 버퍼를 가져오려면 다음과 같은 프로그래밍 모델을 따르면 됩니다.

  1. dequeueInputImage() 메서드를 호출합니다.
  2. 입력 버퍼에 이 데이터를 채웁니다.
  3. 다음 메서드를 호출하여 버퍼를 카메라에 전송합니다. queueInputImage() 메서드를 사용하여 지도 가장자리에 패딩을 추가할 수 있습니다.

ImageWriter 객체를 PRIVATE 이미지, 앱에서 이미지에 액세스할 수 없음 데이터를 직접 관리할 수 있습니다 대신 PRIVATE 이미지를 ImageWriter: queueInputImage() 메서드 디코더를 생성할 수 있습니다.

이제 ImageReader 클래스가 다음을 지원합니다. PRIVATE 형식 이미지 스트림 이 지원을 통해 앱에서 다음 작업을 할 수 있습니다. 출력 이미지 ImageReader개의 원형 이미지 큐를 유지하거나 하나 이상 선택하세요. 카메라 재처리를 위해 ImageWriter로 전송합니다.

Android for Work 기능

이 릴리스에는 다음과 같은 Android for Work에 대한 새 API가 포함되어 있습니다.

  • 회사 소유, 일회용 기기의 향상된 제어 기능: 기기 소유자 이제 은(는) 다음 설정을 제어하여 관리를 개선할 수 있습니다. 회사 소유, 일회용 (COSU) 기기: <ph type="x-smartling-placeholder">
      </ph>
    • 키가드를 사용 중지하거나 다시 사용 설정하려면 setKeyguardDisabled() 메서드를 사용하여 지도 가장자리에 패딩을 추가할 수 있습니다.
    • 상태 표시줄 (빠른 설정, 알림, 위로 스와이프하는 탐색 동작) 및 setStatusBarDisabled() 메서드를 사용하여 축소하도록 요청합니다.
    • UserManager 상수로 안전 부팅을 사용 중지하거나 다시 사용 설정합니다. DISALLOW_SAFE_BOOT입니다.
    • 전원에 연결된 상태에서 화면이 꺼지지 않도록 하려면 STAY_ON_WHILE_PLUGGED_IN 상수.
  • 기기 소유자의 앱 자동 설치 및 제거: 이제 기기 소유자가 다음 작업을 할 수 있습니다. PackageInstaller를 사용하여 애플리케이션을 자동으로 설치 및 제거 API를 제공합니다. 이제 기기 소유자를 통해 기기를 프로비저닝할 수 있습니다. 사용자 상호작용 없이 앱을 가져오고 설치할 수 있습니다. 이 기능은 원터치 사용 설정 시 Google 계정을 활성화하지 않고 키오스크 또는 기타 유사한 기기를 프로비저닝하는 행위
  • 자동 엔터프라이즈 인증서 액세스: 앱이 choosePrivateKeyAlias(), 사용자에게 인증서를 선택하라는 메시지가 표시되기 전에 프로필 또는 기기 소유자가 onChoosePrivateKeyAlias() 메서드를 사용하여 요청하는 애플리케이션에 별칭을 자동으로 제공할 수 있습니다. 이 기능을 사용하면 관리 앱이 사용자 상호작용 없이 인증서에 액세스할 수 있습니다.
  • 시스템 업데이트 자동 수락. 다음을 사용하여 시스템 업데이트 정책을 설정함 setSystemUpdatePolicy(), 이제 기기 소유자가 시스템을 자동으로 수락할 수 있습니다. 예를 들어 키오스크 기기의 경우 업데이트를 연기하거나 사용할 수 있습니다. 또한 관리자는 업데이트를 받아야 합니다(예: 키오스크 기기를 사용하지 않는 시간). 날짜 시스템 업데이트를 사용할 수 있는 경우 시스템은 기기 정책 컨트롤러 앱에서 시스템을 설정했는지 확인합니다. 정책을 업데이트하고 그에 따라 동작합니다
  • 위임된 인증서 설치: 이제 프로필 또는 기기 소유자가 서드 파티 앱에서 이 DevicePolicyManager 인증서를 호출할 수 있는 기능 관리 API를 제공합니다. <ph type="x-smartling-placeholder">
  • Android for Work 내의 작업 상태 알림 기능이 표시된 휴대기기
  • 데이터 사용량 추적. 이제 프로필 또는 기기 소유자가 다음을 쿼리할 수 있습니다. 설정 > 데이터 사용량에 따라 NetworkStatsManager 메서드를 사용하여 지도 가장자리에 패딩을 추가할 수 있습니다. 프로필 소유자는 자동으로 부여됨 기기 소유자는 사용 데이터에 액세스할 수 있으며 관리 프로필의 데이터를 쿼리할 수 있는 권한 관리 기본 사용자의 역할을 합니다
  • 런타임 권한 관리:

    프로필 또는 기기 소유자가 권한 정책을 설정할 수 있음 모든 애플리케이션의 모든 런타임 요청에 setPermissionPolicy(): 사용자에게 권한을 부여하라는 메시지를 표시하거나 자동으로 또는 조용히 권한을 거부할 수 있습니다. 후자의 정책이 설정되어 있으면 사용자가 다음 작업을 할 수 없습니다. 앱의 권한 화면에서 프로필 또는 기기 소유자가 선택한 내용을 수정할 수 있습니다. 설정을 탭합니다.

  • 설정의 VPN: 이제 VPN 앱이 다음에 표시됩니다. 설정 > 더보기 > VPN 또한, VPN 사용량에 수반되는 알림은 이제 VPN이 구성할 수 있습니다 프로필 소유자의 경우 알림은 VPN 구성 여부에 따라 달라집니다. (관리 프로필, 개인 프로필 또는 둘 다에 해당) 기기 소유자의 경우 알림은 다음과 같습니다. VPN이 전체 장치에 대해 구성되었는지 여부에 따라 다릅니다.
  • 직장 상태 알림: 이제 작업 상태 표시줄 서류 가방 아이콘이 관리 프로필의 앱에 포그라운드에 활동이 있는 경우 또한 기기가 관리 프로필의 앱 활동에 직접 잠금 해제되면 알림 메시지가 표시되어 직장 프로필 내에 있음을 사용자에게 알립니다.