본문 바로가기

Android

(43)
[Android: Basic] NotificationCompat.Builder의 Style 지난 글에서는 Notification의 기본적인 내용을 다루었습니다.오늘은 NotificationCompat.Builder의 setStyle메서드의 여러 스타일 들에 대해 알아보겠습니다.이번 글에서는 잡소리는 빼고, 오로지 내용 위주로만 채우겠습니다. 👀 BigPictureStyle 큰 이미지를 알림에 표시하는 경우 사용예시NotificationCompat.Builder(this, "1") .setStyle(NotificationCompat.BigPictureStyle().bigPicture(myBitmap)) 👀 InboxStyle여러 줄의 텍스트를 알림에 표시하려는 경우 사용각 줄은 개별 메시지나 항목을 나타낼 수 있음예시NotificationCompat.Builder(this, "2") .setSt..
[Android: Basic] Notification 오늘도 빡공.. 안드로이드의 알림(Notification)은 앱이 사용자에게 정보를 전달하고, 상호작용을 유도하는 중요한 부분입니다.그럼 이번 시간에는 Notification에 대해서 알아보도록 합니다. Notification?상태바에 앱의 상태를 출력하여 유저에게 알림을 보내는 기능입니다. 이를 통해 사용자는 앱 외부에서도 알림을 받을 수 있습니다.시스템에 의해 관리되기 때문에, 액티비티에서 직접적인 제어가 불가능합니다. 이렇게 상태바에 뜨는 것을 알림(Notificiation)이라고 합니다. Notification 프로세스 흐름 (flowchart) Notification의 흐름을 나타낸 Flowchart입니다. 이걸 바탕으로 간단하게 설명하겠습니다.NotificationChannel을 생성합니다.안..
Application Restart (앱 재실행) 들어가며... 앱을 만들다보면 강제로 재실행을 해야하는 순간들이 몇 있다. 본인의 경우, 다국어를 지원하는 앱에서 언어 변경사항을 모든 액티비티와 프래그먼트에 적용해, 자동으로 로드 될 수 있도록 하기 위한 조치였다. 앱을 강제로 재실행 시키기 [코드] fun restartApp(context: Context) { val intent = context.packageManager.getLaunchIntentForPackage(context.packageName) if (intent != null) { intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) context.startActivity(intent) Runt..
[Android: Basic] GPS Location Service (위치정보 서비스) 어플리케이션 개발을 하다보면, 사용자의 위치 정보가 필요해지는 경우가 있습니다. 많은 방식들이 있겠지만, 저는 무엇보다 포그라운드 서비스로 위치 정보를 받는것을 선호합니다. 일전에 Jetpack의 WorkManager로 위치정보를 받아보려고 한 적이 있는데, 막상 코드를 작성하고 돌아가는 것을 보니 왜 구글에서 위치정보 획득을 Foreground service로 권장하는지 알겠더군요. 언급한 Work Manager 부분은 따로 글을 작성해서 코드와 함께 더욱 자세히 설명하도록 하겠습니다. 아무튼, 저는 2개의 게시글에 걸쳐, 제가 작성해온 위치 정보 서비스의 코드들과 그 동작 방식을 설명하려 합니다. 이를 위해서는 Forground Service에 대한 사전지식이 필요하며, 해당 내용은 이 글에 작성해 ..
Permission Check (권한 요청) 들어가며..안드로이드 개발을 하다보면 권한 요청이 사소하게 성가시다.반드시 필요하지만, 손볼 일이 많지 않다보니 작성해야하는 순간이 오면 헷갈리기 쉽상이었다.물론 구글링으로 다른 뛰어난 분들의 코드를 쉽게 접할 수 있고, 최근에는 gpt의 도움을 받을 수도 있겠지만, 일단 내 코드 스타일과 맞는 걸 찾기는 어려웠다.그래서 나중에 내가 사용할 목적으로 기록해 둔다.검증 없이 작성된 코드이므로 문제가 발생 할 수 있다.발생한 문제는 공유해주면 같이 해결해보도록 최대한 노력하겠다. 언제든지 피드백은 환영이다. 최종 수정일: 2024.01.18Permission Check우선, Manifest에 필요한 권한들을 등록해 준다. 본인은 인터넷 접근, 알림, 카메라, 위치 정보, 저장소의 이미지 읽기 권한, 포..
Moshi Converter 최신화: 2023.10.23 ‣ Intro: Moshi? 데이터를 다른 종점으로 전송하기 전, 통신이 가능하면서 나중에 재구성이 가능한 포맷으로 변환해줘야한다. 이런 포맷 변환을 직렬화라하며, 변환 포맷중 가장 많이 사용되는 것이 JSON이다. 반대로, 직렬화된 파일을 다시 객체 형태로 변환하는 과정을 역직렬화라 한다. Moshi는 Square에서 만든 라이브러리로, JSON과 객체 사이의 직렬화(Serialization) / 역직열화(Deserialization)를 쉽고 안전하게 작업할 수 있도록 서포팅하는 라이브러리로, 리플랙션과 Codegen 방식의 변환을 모두 지원한다. 또한, Gson이 가지는 일부 한계점과 문제점을 개선하려는 목적으로 만들어진 만큼, 다음과 같은 장점들을 가진다. 성능 Mosh..
[Android: Jetpack] LiveData & Observer Pattern 💬인프런 ‘냉동코더의 알기 쉬운 Modern Android Development 입문’을 수강하며 정리한 핵심내용과 별도로 공부를 진행하며 작성한 내용입니다.LiveData값의 변경을 감지할 수 있는 데이터 홀더이다.ViewModel과 결합할 때 시너지 효과[기존]UI에 표시할 데이터를 ViewModel에 저장한다.값이 변경되면 ViewModel의 데이터를 변경한다.Activity에서 ViewModel에 접근해서 변견된 값을 다시 화면에 표시한다.→ 별도의 생명주기를 가진 ViewModel을 사용해 액티비티 재생성 시에도 ui 값 유지 가능[LiveData사용 시]데이터 홀더로 LiveData를 사용값의 변경을 감지해서 UI에 자동으로 반영 가능해진다.→ 이것이 MVVM에서 구현해야 하는 ViewMode..
[Android: Jetpack] Architecture Pattern과 Android App Architecture 구글에서는 개발자들이 더욱 안전한 앱 개발을 할 수 있도록, 구글 아키텍쳐 앱 가이드를 제시한다.가이드에 따라서 만들어진 앱은 더 견고하고 고품질의 앱이 된다는데, 왜 그럴까? MVC 패턴이 1970년대 트리그베(Trygve Reenskaug)에 의해 최초로 도입된 후, 패턴에 대한 많은 변용과 발전이 있었다.이후 1990년대 Taligent가 MVC의 개선모델인 MVP 패턴을 도입하고, 비교적 최근, 2005년에는 John Gossman이 MVVM 패턴을 도입하게 된다. 이 패턴들을 도입하는 핵심적인 목적은 관심사를 분리함으로써, 프로그램을 더 안전하면서도 확장하기 쉽게 만드는 것이다.각 패턴은 위와 같은 구조를 가진다.그렇다면, 어떤 방식으로 관심사를 분리하고, 어떻게 프로그램이 안전해진다는 것일까?..