본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android 10] 개발자를 위한 Android Q 가이드 (Highlights)

by 돼지왕왕돼지 2020. 3. 17.

[android 10] 개발자를 위한 Android Q 가이드 (Highlights)


https://developer.android.com/about/versions/10/highlights


-

안드로이드 10 은 세가지 중요한 주제로 개발.

첫번째는 모바일 분야의 혁신적인 최신 기술을 적용한 것 (ML (Machine-learning), foldable 지원, 5G 가능 폰)

두번째로는 보안에 중요 포인트를 두었다는 것.

마지막은 사용자의 digital wellbeing 확장.




Innovation and new experiences


* Foldables


-

multi-resume 에 대한 지원이 강화됨.

resizeableActivity manifest attribute 의 작동방식이 수정되었다.



* 5G networks


-

5G 에 대한 지원을 하는 API 들이 추가되었다.



* Smart Reply in notifications


-

notification 에 ML 을 이용한 contextual action 을 제안한다.

예를 들어 메시지에 대해서는 "회신", 주소에 대해서는 "맵으로 보기" 등.

앱에서 어떤 것도 하지 않고 이런 기능을 활성화시킬 수 있다. (기본으로 활성화됨)

setAllowGeneratedReplies(), setAllowSystemGeneratedContextualActions() 등으로 enability 를 control 할 수 있다.



* Dark Theme


-

system 에서 dark theme 을 제공한다.

dark theme 은 빛이 별로 없는 곳에서 이상적이며, 배터리 절약도 도와준다.

Setting - Battery Saver 에서 on/off 할 수 있다.



* Gesture navigation


-

navigation bar 영역을 제거하는 gesture navigation 을 구현하였다.

setSystemUiVisibility() API 와 WindowInsets 를 적절히 사용하여 UI 가 gesture navigation 을 방해하지 않도록 할 수 있다.



* Settings Panels


-

app 에서 바로 context 에 관련된 system setting 을 보여줄 수 있다.

이는 Settings Panel API 를 통해 이루어진다.

이는 floating UI 로 예를 들면 인터넷 연결, NFC 설정, audio volume control 등을 바로 보여줄 수 있다.



* Sharing shortcuts


-

Share UI 에서 보여지는 것을 설정할 수 있다.

ShortcutInfo API 를 사용하며, AndroidX 의 ShareTarget 을 통해서도 구현할 수 있다.






Privacy for users


* Giving users more control over location data


-

새로운 permission option 으로 위치 정보에 대한 더 상세한 컨트롤이 가능하다.

기존의 항상 allow 가 앱이 사용중일 때만 allow 를 할 수 있는 option 으로 세분화되었다.



* Protecting location data in network scans


-

대부분의 network scan API 들이 coarse location permission 을 요구한다.

하지만, 이번에는 fine location 으로 더 높은 permission 을 요구하게 되었다.



* Preventing device tracking


-

앱은 더 이상 non-resettable device identifiers 에 접근할 수 없다.

이것들은 IMEI, serial number 등이다.



* Securing user data in external storage


-

앱은 file 을 private sandbox 에 저장할 수 있고, MediaStore 를 통해 shared 공간에 저장할 수도 있다.



* Blocking unwanted interruptions


-

background 에서 앱이 의도하지 않게 뜨는 것을 방지한다.




Security


* Storage encryption


-

Android 10 단말에서는 user data 가 모두 암호화되어야 한다.



* TLS 1.3 by default


-

TLS 1.3 에서는 성능이 개선되었다.



* Platform hardening



* Improved Biometrics


-

BiometricPrompt framework 가 확장되었다.




Camera and media


* Dynamic depth for photos


-

App 이 Dynamic Depth image 를 요청할 수 있다.

이는 JPEG 와 depth 관련된 XMP metadata 로 이루어졌다.

Dynamic Depth 는 open format 이다.



* Audio playback capture


-

새로운 audio playback capture API 를 통해 audio stream 을 capture 할 수 있다.

그리고 captioning 도 가능하다.



* New audio and video codecs


-

고해상도 video stream 을 가능하게 하는 AV1 를 지원한다.

대화와 음악 스트리밍에 최적화된 royalty-free codec Opus 를 이용한 audio encoding 도 지원.

high dynamic range video 를 위한 HDR10+ 도 지원한다. (단말이 지원하면)

MediaCodecInfo API 를 통해 쉽게 사용 가능하다.



* Native MIDI API


-

C++ 에서 audio processing 하는 앱들을 위해 native MIDI API 가 등장했다.



* Directional, zoomable microphones


-

MicrophoneDirection API 를 통해 audio capture 에 더 많은 기능을 제공한다.

audio recording 시 더 선호하는 마이크의 방향을 설정할 수 있다.

예를 들어 셀카 비디오를 찍을 때 front-facing mic 를 요청할 수 있다.



* Vulkan everywhere


-

cross-platform 이며, overhead 가 적고, 고성능 3D graphic 인 Vulkan 을 확장한다.

Vulkan 1.1 은 64bit 단말 & Android 10 이상에서 돌아간다.






Connectivity


* Improved peer-to-peer and internet connectivity


-

Local Wi-Fi 와 IoT 단말과의 연결에 대한 API 들이 강화되었다.

network connection API 를 사용하면 된다.



* Wi-Fi performance modes


-

high performance and low latency modes 를 enable 시켜 Adaptive Wi-Fi 를 사용할 수 있다.

이는 실시간 게임, 음성 통화같은 실시간성(low latency)를 요구할 때 아주 좋다.

WifiManager.WifiLock.createWifiLock 을 WIFI_MODE_FULL_LOW_LATENCY 또는 WIFI_MODE_FULL_HIGH_PERF 로 설정할 수 있다.

이렇게 하면 베터리를 적게 소비하며 요구사항에 맞는 모드로 작동한다.




Android foundations


* ART optimization


-

ART runtime 의 개선으로 앱이 더 빨리 시작하고, memory 를 덜 먹고, 더 부드럽게 작동한다.

Android 10 은 Concurrent Copying (CC) GC 에 Generational GC 기능을 추가하여 더 효율적으로 GC 를 수행하여 앱의 성능을 개선했다.



* Neural Networks API 1.2



* Thermal API


-

단말이 너무 뜨거우면 CPU 와 GPU 에 throttle 이 걸린다.

thermal API 를 통해서 온도 변화를 monitor 할 수 있다.

예를 들어 streaming app 에서 단말이 너무 뜨거우면 resolution, bit rate 등을 조정할 수 있다.

camera 에서는 flash 를 disable 시킨다던지, game 에서는 frame rate 를 줄인다던지를 할 수 있다.



* Compatibility through public APIs


-

non-SDK interface 에 대한 제약을 계속 가져간다.

방향은 오직 public API 만 사용하도록 하는 것이다.




Faster updates, fresher code


-

 Project Treble 을 통해 더 빠른 업데이트를 가능하게 했다.

이는 Android 와 제조사, 그리고 칩셋 개발자간의 일관되고, 테스트 가능한 interface 를 제공함으로서 가능해진 것이다.



-

Project Mainline (공식적으로 Google Play system updates) 를 적용한 첫번째 release 이다.

Google Play system updates 를 통해 internal components 를 제조사의 full system update 없이 가능하도록 했다.




댓글0