전체 글134 11-1 제트팩과 androidx 소개 API가 제공하는 뷰만으로는 버전호환성 때문에 한계가 있다. 구글에서는 사용자의 요구에 따라 플랫폼 API 외에 라이브러리를 따로 제공해 복잡한 화면을 편리하게 구성하도록 돕는다. 11, 12장에서는 이러한 구글 라이브러리로 화면을 구성하는 법을 공부할 것이다. 구글에서는 안드로이드 앱을 개발하는 데 필요한 다양한 라이브러리 모음을 제트팩(Jetpack)이라는 이름으로 제공한다. 제트팩은 안드로이드 플랫폼이 기본으로 제공하는 플랫폼 API 외에 따로 추가된 라이브러리이다. 플랫폼 API플랫폼 API는 ART(Android runtime)에서 제공하는 안드로이드 앱의 핵심 라이브러리이다. ART는 대부분 android나 java로 시작하는 패키지명을 사용한다. 우리가 지금껏 이 책에서 살펴본 클래스는 대부.. 2023. 6. 27. 10-5 알림 띄우기 알림 채널 상태 바는 화면 상단의 한 줄을 의미하며 이곳에 배터리, 네트워크, 시간 등 시스템의 상태 정보가 출력된다. 이 상태 바에 앱의 정보를 출력하는 것을 알림(notification)이라 한다. 원래 상태 바는 시스템에서 관리하는 곳이며 앱이 직접 제어할 수 없다. 그런데 앱에서 시스템에 의뢰하면 시스템에서 관리하는 상태 바에 앱의 알림을 출력할 수 있다. 따라서 앱의 화면을 구성하거나 사용자 이벤트를 처리하는 프로그래밍과는 구조가 다르며 알림을 위해 제공하는 API를 이용해야 한다. API Level 33 버전부터는 앱에서 알림을 띄우기 위해 사용자에게 퍼미션(허가)를 요청해야 한다. 알림은 NotificationManager의 notify() 함수로 발생한다. notify() 함수에는 Noti.. 2023. 6. 27. 10-4 소리와 진동 알림 소리알림 사용자에게 짧은 소리로 특정한 상황을 알리는 것을 알림음이라고 한다. 알림음은 카카오톡처럼 자체 녹음한 음원을 쓸 수도 있지만 안드로이드 시스템에 등록된 소리를 이용할 수도 있다. 먼저 시스템에 등록된 소리를 이용하는 방법을 살펴보자. 안드로이드 시스템은 알림(NOTIFICATION), 알람(ALARM), 벨소리(RINGTONE) 등의 소리를 제공하며 이 소리는 RingtoneManager로 얻을 수 있다. // 소리 얻기 val notification: Uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION) // 함수로 소리의 식별값 얻음 val ringtone = RingtoneManager.getRingtone(appl.. 2023. 6. 25. 10-3 다양한 다이얼로그 다이얼로그(dialog)란 사용자와 상호 작용하는 대화상자이다. 여기서는 가장 많이 사용하는 토스트, 날짜 또는 시간 입력, 알림 창 등을 알아보고 개발자가 직접 구성하는 커스텀 다이얼로그도 살펴보겠다. 토스트 메시지 띄우기 토스트(Toast)는 화면 아래쪽에 잠깐 보였다가 사라지는 문자열을 의미하며 사용자에게 간단한 메시지로 특정한 상황을 알릴 때 사용한다. 토스트를 사용하는 대표적 예로 사용자가 폰의 뒤로가기 버튼을 눌러 앱이 종료될 때 "종료하려면 한 번 더 누르세요."를 띄울 수 있다. 이 밖에 간단한 예외 메시지를 출력할 때도 토스트를 많이 사용한다. 토스트는 Toast의 makeText() 함수로 만든다. open static fun makeText(context: Context!, text:.. 2023. 6. 24. 10-2 퍼미션 설정하기 퍼미션(permission)이란 앱의 특정 기능에 부여하는 접근 권한을 말한다. 내가 개발하는 앱이 다른 앱이나 안드로이드 시스템에서 보호하는 특정 기능을 이용할 때 퍼미션 사용을 설정해야 한다. 마찬가지로 내가 만든 기능을 다른 앱에서 사용할 수 없도록 보호하고 권한을 얻은 앱에서만 허용하고 싶을 때 퍼미션을 설정한다. 퍼미션 설정과 사용 설정 퍼미션을 이해하고자 두 앱을 연동하는 상황을 가정해보자. A 앱과 B 앱이 있고 A 앱의 컴포넌트를 B앱에서 사용하는 상황을 예로 들겠다. B 앱에서 A 앱의 컴포넌트와 연동하는 코드만 잘 구현했다면 A앱의 컴포넌트를 B앱에서 얼마든지 사용할 수 있다. 그런데 만약 A앱의 컴포넌트에 퍼미션을 설정하면 B앱에서 연동할 때 문제가 발생한다.(B가 A에 접근할 때 문.. 2023. 6. 24. 10-1 API 레벨 호환성 고려하기 06~10장까지 앱의 기본 기능을 구현하는 방법을 공부하고 있다. 10장에서는 사용자 알림과 API 레벨 호환성, 퍼미션을 살펴볼 것이다. 오늘도 열심히 해봅시다~ 02장에서 build.gradle 파일을 설명하면서 SDK 버전을 설정하는 targetSdk와 minSdk에 관해 살펴봤다. 두 항목에 설정하는 값은 API 레벨을 의미하며 앱 개발에 큰 영향을 주는 중요한 정보이다. // API 레벨 설정 minSdk 21 targetSdk 31 만약 위와 같이 설정했다면 targetSdk에 설정한 31 버전의 API로 앱을 개발한다는 의미이다. 그런데 minSdk를 21로 지정했으므로 이 앱은 21버전(안드로이드 5.0 롤리팝) 기기부터 설치할 수 있다. 결국 이 앱은 31버전의 API로 개발하지만 21 .. 2023. 6. 24. 이전 1 ··· 12 13 14 15 16 17 18 ··· 23 다음