정리를 안하면 대충 읽게되서 적기 시작했는데, 역시나 막판에는 귀찮아서 대충하게 된다.
다음에는 P에서의 동작 변경 사항에 대해 정리해 봐야겠다.
Android P Features and APIs
원문 : https://developer.android.com/preview/features.html
상세 변경 사항은 아래 링크에서 확인
API diff report : https://developer.android.com/sdk/api_diff/p-dp1/changes.html
Api reference : https://developer.android.com/reference/classes.html
Indoor Positioning with Wi-Fi RTT
- 실내에서 측위를 위한 기술인 Wi-Fi RTT(Round-Trip-Time) 를 지원
- 새로운 RTT APIs를 사용하여 근처의 Wi-Fi AP와의 거리 측정 가능
- 단말의 Wi-Fi scanning이 켜져 있어야함(Settings > Location)
- ACCESS_COARSE_LOCATION 퍼미션이 있어야함
- 단말이 AP와 연결되지는 않음
- AP는 단말의 정보를 저장하지 않음
- 3개 이상의 AP에서 거리를 측정할 수 있다면 Multilateration 알고리즘을 사용하여 1~2미터의 정확도로 거리를 위치를 측정할 수 있음
- 실내에서 "이 전등 켜줘", "이 제품에 대한 특별 할인이 있나요?" 와 같은 서비스가 가능해짐.
Display cutout support
- 노치 디자인 폰을 위한 개발을 지원함. (
애플은 이제 안한다는데...)
- DisplayCutout 이라는 새로운 클래스가 추가되었음
- cutout 에서 제외된 영역을 알 수 잇음
- 단말이 cutout 영역이 있는지 알 수 있는 API가 있음 : getDisplayCutout() cutout 디자인이 아니면 null을 리턴함
- layoutInDisplayCutoutMode를 통해 cutout 이외의 영역에 컨텐츠를 배치 할 수 있음(추천)
- Android Studio 3.1 이상 버전에서 Android P 에뮬레이터를 실행하여 테스트 할 수 있음(위 스크린샷 참고)
Notifications
여러가지 향상된 notification 기능을 제공함(targetSDK p 이상)
Enhanced messaging experience
Android 7.0(API level 24)부터 알림에서 바로 메시지를 답장하거나 텍스트가 입력 가능했음. Android P에서는 이 기능을 더 향상시킴
- setData()를 사용하여 알림에 이미지를 표시 할 수 있음
- Person 클래스를 사용하여 대화 상태의 이미지, 이름 등을 표현 할 수 있음
- 메시지 입력 중, 실수로 알림을 닫는 경우 EXTRA_REMOTE_INPUT_DRAFT를 참고하여 이전의 입력 내용을 알 수 있음
- setGroupConversation() 으로 그룹 대화인지 아닌지 설정 할 수 있음
- setSemanticAction() 으로 Notification Action에 읽음, 삭제, 삭제, 무음 등의 의미를 부여 할 수 있음
- setChoices() 으로 사용자가 입력 가능한 텍스트를 선택하게 할 수 있음
Channel settings, broadcasts, and Do Not Disturb
Android Oreo에서 Notification Channels이 추가되어 사용자가 받고자 하는 알림을 설정 할 수 있었음. P에서는 이 설정을 단순화 하였음
- 차단 채널 그룹 : 사용자는 앱의 알림 설정에서 전체 채널을 차단 할 수 있음
- 새로운 브로드캐스트가 추가되어 채널의 차단과 관련된 설정이 변경되면 브로드캐스트를 보냄
- 방해금지 우선순위 카테고리 추가 : NotificationManager.Policy 에 새로운 상수가 2개 추가되었음 : PRIORITY_CATEGORY_ALARMS, PRIORITY_CATEGORY_MEDIA_SYSTEM_OTHER
Multi-camera support and camera updates
멀티카메라를 위한 지원이 추가되고, 기존 카메라 관련된 지원이 향상 되었음
- 전방 or 후방에 있는 2개 이상의 카메라 동시 제어 지원
- 초기 캡쳐 딜레이를 줄일 수 있는 Session parameter 추가
- Surface sharing 기능 : 카메라를 시작/중지하지 않고 다양한 use-cases에 활용
- Display-based(?) flash support API 추가
- OSI timestamps 접근을 위한 API 추가
- external USB/UVC cameras 지원
ImageDecoder for bitmaps and drawables
이미지 디코딩을 위한 ImageDecoder 를 제공함. 이제 BitmapFactory와 BitmapFactory.Options API는 떠나보내도됨.(하위버전은??)
- 디코딩 뿐만 아니라, 리사이징, 크롭, 라운드 코너 등의 기능이 포함되어 있음
Animation
GIF와 WebP 애니메이션 이미지를 위해 AnimatedImageDrawable 이 추가되었음.(진작 좀 해주지..)
- RenderThread에서 동작함
- RenderThread는 workerthread에서 디코딩 하므로, 디코딩은 렌더 쓰레드를 방해하지 않음
- App의 UI 쓰레드를 방해하지 않으면서 애니메이션이 돌아감
- AnimatedImageDrawable은 새로운 ImageDecoder 를 사용하여 디코딩 할 수 있음
- 아래 코드는 ImageDecoder를 사용하여 AnimatedImageDrawable을 디코딩 하는 것을 보여줌
Drawable d = ImageDecoder.decodeDrawable(...);
if (d instanceof AnimatedImageDrawable) {
((AnimatedImageDrawable) d).start(); // Prior to start(), the first frame is displayed
}
- ImageDecoder는 setPostProcessor() 함수를 사용하여 원형 마스크나 라운드된 코너를 적용할 수 있음
HDR VP9 Video, HEIF image compression, and Media APIs
- HDR(High Dynamic Range) VP9 Profile 2를 내장 지원함
- HEIF(High Efficiency Image File Format) 이미지 인코딩을 지원함
- HEIF와 JPEG의 가장 큰 차이점은 여러장의 이미지를 하나의 파일로 저장할 수 있는가?(아이폰 라이브포토)
- MediaPlayer2 가 추가됨. DataSourceDesc를 통해 만들어진 플래이 리스트를 재생함
- MediaDRM 클래스에 함수를 추가함. metrics, HDCP levels, security levels, 세션수 를 얻어오는 함수 등 보안을 강화하기 위한 함수 등
Data cost sensitivity in JobScheduler
JobScheduler가 네트워크 관련된 사용자 job을 더 잘 처리할 수 있도록 향상되었음
- 통신사가 제공하는 별도의 네트워크 상태 신호 등을 사용하여 향상. 네트워크가 혼잡한 경우 대규모의 네트워크 요청을 지연시킴.
- Job에 예상 데이터 크기, 상세한 네트워크 요구사항, signal prefetching(?)을 지정 가능함
- setEstimatedNetworkBytes()
- setIsPrefetch()
- setRequiredNetwork()
Neural Networks API 1.1
Neural Networks API는 Android 8.1(API level 27)에 포함되었음. P에서는 다음의 9가지 작업애 대한 지원이 추가
- Pad, BatchToSpaceND, SpaceToBatchND, Transpose, Strided Slice, Mean, Div, Sub, and Squeeze
Autofill framework
Autofill framework는 Android 8.0(API level 26)에 포함됨(써봤는데 효용성이 크게 와닫지 않았었음) P 에서 여러가지 기능들이 향상되었는데 상세한 내용은 여기에 별도 페이지로 정리되어 있음(내용이 많다. 다음에..)
Security enhancements
여러가지 보안 관련된 새로운 내용들이 소개되었음 상세 내용은 여기에 별도 페이지로 정리되어 있음(내용이 많다. 이것도 다음에..)
- 통합 지문 인증 다이얼로그
- High-assurance 사용자 확인
- 하드웨어 보안 보듈
- Keystore를 통해 보안키 가져오기
Client-side encryption of Android backups
Android P에서는 클라이언트의 secret을 사용하여 Android backup의 암호화가 가능하다. 데이터를 복원 할 때는 pin 패턴, 암호 등이 필요하다. 상세 내용은 여기를 확인하자
(안써봐서 무슨 내용인지 모르겠다)
Accessibility
접근성 향상을 위해 여러가지 action, attributes, method 등이 assessibilty framework 에 추가되었다. 상세 내용은 여기를 확인하자
(개발할때 생각은 하지만 우선순위가 높지 않은 부분이다. 항상 고려하여 개발을 하자)