What’s New in Android (Google I/O’19)

 

#io19 What’s New in Android 세션을 정리한 내용입니다.

Bubbles API

안드로이드 Q에 새로 도입어 사용자는 Bubbles를 이용해 기기상 어디서나 쉽게 멀티태스킹을 할 수 있습니다. 페이스북의 챗헤드와 같아 보입니다. 자세한 내용은 공식문서에서 확인가능합니다.

Dark Theme

Android Q는 Android 시스템 UI와 기기에서 실행중인 앱에 모두 적용되는 새로운 어두운 테마를 제공합니다. 어두운 테마는 많은 이점을 가지고 있습니다. 디스플레이에 따라 전력 소비를 줄일수도 있고, 밝은 빛에 민감한 사용자들의 사용성을 개선시킵니다.  

Android Q에는 Dark 테마를 사용 설정하는 세 가지 방법이 있습니다.

  • 새로운 시스템 설정 (Settings -> Display -> Theme)을 사용하면 사용자가 Dark 테마를 활성화 할 수 있습니다.
  • 새로운 Quick Setting 타일을 사용하면 알림 트레이에서 테마를 신속하게 전환 할 수 있습니다 (한 번 사용 설정 한 경우).
  • 픽셀 장치에서 배터리 절약 모드는 동시에 다크 테마를 활성화합니다. 다른 제조사들도 이 동작을 지원할 수도 있고 지원하지 않을 수도 있습니다.

개선된 공유 메뉴

개발자가 공유 메뉴에서 파일, 사진 등을 공유 할 수 있는 새로운 옵션을 만들 수 있도록 합니다. 자세한 내용은 공식문서를 참고해주세요.

Notification actions

알림화면에서 자동으로 생성된 텍스트 기반의 메시지로 답장이 가능해집니다.

Gestural Navigation

Android Q는 제스처로 동작하는 네비게이팅 옵션을 제공합니다. 개발자가 이 기능을 준비하기 위해 해야하는 두가지 작업이 있습니다.

  • 앱 콘텐츠를 가장자리에서 가장가자리로(edge-to-edge)로 확장하세요
  • 충돌하는 앱 동작을 처리합니다.

 

WebView 렌더러 중단 감지

WebViewRendererClient에서 응답이 없는 경우 앱에서 이를 감지하는데 사용할 수 있는 새로운 WebView 추상 클래스를 Android Q에서 도입했습니다.

Accessibility(접근성)

  • AccessibilityNodeInfo 입력 키 플래그
    Android Q에서는 텍스트 입력 키를 나타내는지 여부를 지정하는 새로운 플래그로 AccessibilityNodeInfo를 개선했습니다. AccessibilityNodeInfo.isTextEntryKey() 메서드를 사용하여 이 플래그에 액세스할 수 있습니다.
  • 접근성 대화상자 음성 피드백
    접근성 서비스에서 사용자가 서비스를 시작하기 위해 접근성 바로가기를 반복해야 하고 서비스에서 요청할 경우 이제 텍스트 음성 변환 프롬프트를 통해 대화상자를 표시할 수 있습니다.
  • 물리적 키보드의 접근성 바로가기
    Android Q에서 사용자는 이제 물리적 키보드의 Control+Alt+Z를 눌러 접근성 바로가기를 트리거할 수 있습니다.
  • 소프트 키보드 컨트롤러 향상
    Android Q의 접근성 서비스에서는 이제 기기에 연결된 하드 키보드가 감지되더라도 소프트 키보드를 표시하도록 요청할 수 있습니다. 사용자는 이 동작을 재정의할 수 있습니다.
  • 사용자 정의 접근성 시간 제한
    Android Q에서는 대화형 및 비대화형 접근성 UI 요소에 대한 사용자 정의 시간 제한을 지원하는 AccessibilityManager.getRecommendedTimeoutMillis() API 메서드가 도입되었습니다. 반환되는 값은 사용자 환경설정과 접근성 서비스 API 모두의 영향을 받습니다.

Text관련

  • Hyphenation이 API23에서 기본값이였는데, 퍼포먼스 문제로 안드로이드 Q부터는 기본값이 아니게 되었습니다.
  • 자바 및 네이티브 코드에서 시스템 폰트를 찾는 코드를 사용할 수 있습니다
  • LineBackgroundSpan 과 LineHeightSpan 구현
  • TextAppearance로부터 모든 attribute를 TextAppearanceSpan이 읽을 수 있게 되었습니다.
  • LineBreaker와 MeasuredText 추가
  • Zawgyi 지원 

Magnifier widget(돋보기)

the magnifier appears after grabbing the right selection handle

Magnifier.Builder를 통해 Magnifier객체를 빌드 할 수 있게 되었습니다.

Android Runtime(ART)

  • Startup 개선
  • GC 개선
    – 새로운 객체 우선적으로 콜렉트
    – 적은 비용, 더 빠름
    – 적은 비용의 임시 객체

코틀린

  • Nullability annotation을 갖는 새로운 API
  • null에 대해 에러대신 warning
  • 1.3.30 버전의 kapt로 증분 애노테이션 프로세싱

보안

  • TLS 1.3 이 기본값이 됨
  • 생체 인식 다이얼로그 개선

PowerManager

PowerManager를 통해 디바이스의 온도에 대한 콜백을 받아 작업량을 조절할 수 있도록 도움

Preferences

안드로이드 android.preference 라이브러리는 이제 지원이 중단되었습니다.(Deprecated)

개발자는 Jetpack의 preference 라이브러리를 사용해야합니다. 가이드를 확인해보세요

Architecture Components

아키텍처 컴포넌트가 업데이트되고 새롭게 추가된 사항이 있습니다.

정식 버전 릴리즈
WorkManager 1.0.1 & 2.0.1(Android X)
Navigation 1.0 & 2.0(Android X)

아직은 알파버전
SavedState for ViewModel 1.0
Benchmarking 1.0

코루틴과 함께하는 새로운 컴포넌트들
Lifecycles
LiveData
Room

CameraX

CameraX는 카메라 앱 개발을 쉽게 할 수 있도록 만들어진 Jetpack 지원 라이브러리입니다. Android 5.0 (API 레벨 21)과 호환되므로 대부분의 Android 기기에서 작동하는 일관되고 사용하기 쉬운 API 화면을 제공합니다.

이 솔루션은 camera2의 기능을 활용하지만 수명주기를 인식하는보다 간단한 유스케이스 기반 방식을 사용합니다. 또한 장치 호환성 문제를 해결하므로 코드 기반에 장치 별도의 코드를 포함 할 필요가 없습니다. 이러한 기능은 카메라 카메라 기능을 앱에 추가 할 때 작성해야하는 코드의 양을 줄여줍니다.

마지막으로 CameraX를 사용하면 개발자는 카메라 응용 프로그램이 사전 설치된 것과 동일한 카메라 경험과 기능을 활용할 수 있습니다. CameraX Extensions 는 지원되는 장치에서 응용 프로그램 내 Portrait, HDR, Night 및 Beauty와 같은 효과를 추가 할 수있는 선택 추가 기능입니다 .

Jetpack Compose

Jetpack Compose는 UI 개발을 단순화하도록 설계된 번들되지 않은 툴킷입니다. 반응형 프로그래밍 모델과 Kotlin 프로그래밍 언어의 간결함 및 사용 편의성을 결합합니다.

Anko Layout과 비슷한 형태입니다. XML을 인플레이팅 하는 단계가 없기 때문에 빠른 속도로 UI를 구성가능합니다.

Blend Modes

PorterDuff.Mode를 대체하는 새로운 블렌드 모드 지원

  • HARD_LIGHT
  • SOFT_LIGHT
  • 기타

자세한 내용은 공식문서를 참고해주세요

RenderNode

RenderNodes는 복잡한 장면의 렌더링 내용을보다 작은 조각으로 나눠서 개별적으로 더 저렴하게 업데이트하는 데 사용됩니다.

자세한 내용은 공식문서를 참고해주세요.

Vulkan

벌칸 1.1은 이제 64bit 디바이스 환경을 필요로 합니다.

ANGLE

ANGLE의 목표는 OpenGL ES API 호출을 해당 플랫폼에서 사용할 수있는 하드웨어 지원 API 중 하나로 변환하여 여러 운영 체제 사용자가 WebGL 및 기타 OpenGL ES 내용을 원활하게 실행하도록 허용하는 것입니다. 

Android Q의 출시로 Android 개발자와 파트너는 공급업체에서 제공하는 ES 드라이버를 사용하는 대신 Vulkan 위에 ES 레이어를 생성하는 Chrome 조직 내 프로젝트인 ANGLE을 사용하여 실행할 수 있는 옵션을 얻게 되었습니다.

넓은 영역의 색으로 콘텐츠를 렌더링(Wide color gamut)

넓은 영역의 색으로 콘텐츠를 렌더링하려면 앱에서 와이드 색상 비트맵, 즉 sRGB보다 넓은 색상 공간을 포함하는 색상 프로파일이있는 비트맵을 로드해야합니다. 일반적인 와이드 컬러 프로파일에는 Adobe RGB, DCI-P3 및 디스플레이 P3이 포함됩니다.

Audio Playback Capture

AudioPlaybackCaptureConfiguration을 사용하여 다른 앱으로 부터 오디오를 캡쳐합니다.

AudioManager를 통해 스트림을 제어하며, 메니페스트에 allowAudioPlaybackCapture가 허용된 앱만이 캡쳐가 가능합니다. Q이전에서는 이 엘리먼트가 off가 기본값이지만 targetSdk가 Q이상인 기기는 on이 기본값입니다.

 

Thank…Q…

 

Buy me a coffeeBuy me a coffee
카테고리: Android

답글 남기기

이메일은 공개되지 않습니다.