Android
-
[Android] ZonedDateTime, LocalDateTime, Instant의 차이Android 2025. 10. 29. 09:23
workmanager를 사용해서 안 읽은 알림이 있을 시 오전 9시에 정기적으로 알림을 주고자 했다 val now = LocalDateTime.now()val targetTime = LocalDateTime.of( LocalDate.now().plusDays(1), LocalTime.of(9, 0))val delay = Duration.between(now, targetTime).toMillis()notifyWorkRequest = PeriodicWorkRequestBuilder( 1, TimeUnit.DAYS).setInitialDelay(delay, TimeUnit.MILLISECONDS) .build() 그런데 자꾸만 오..
-
[FCM] FCM으로 notification 구현 - 5 (클라이언트쪽 구현2)Android 2025. 10. 27. 18:45
https://developer-hh.tistory.com/60이 글에 이어서... 앱 내에서 스크린 이동을 하기 위해 여러 방법을 찾아보았고 일단 내가 이해할 수 있는 방법은 이 두 가지였다- DeepLink- intent에서 추출한 주소값을 compose navigation의 navController에 사용해서 이동하지만 딥링크는 광고나 이벤트 같은 걸 할 때 쓴다고 알고 있었기 때문에 맞지 않는 거 같았다 두 번째 방법은 우리가 compose에서 아래와 같이 사용하는 navigation controller를 사용하는 것이다val navController = rememberNavController() 하지만 MainActivity에서 navController를 사용수는 없다... 왜냐하면 remem..
-
[FCM] FCM으로 notification 구현 - 4 (클라이언트쪽 구현1)Android 2025. 9. 27. 08:24
firebase functions를 사용해 앱서버를 만들었고 이제 클라이언트쪽을 구현하면 된다 일단 FCM server에서 토큰을 받아와야한다특정 기기로 알림 메세지를 보내기 위해서는 토큰이 필요하기 때문에 토큰발급이 필요하다FirebaseMessaging.getInstance().getToken()를 사용해 토큰을 요청할 수 있다 나의 경우 mainActivity가 onCteate될 때 토큰을 요청해서 preference에 저장하게 했다@AndroidEntryPointclass MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstan..
-
[FCM] FCM으로 notification 구현하기 - 3(Firebase Functions로 functions 구현)Android 2025. 9. 25. 09:30
firebase functions 초기 셋팅이 끝났다면 functions/index.js 파일에 직접 함수를 작성해주어야한다 나의 경우 두 가지 경우에 알림을 받도록 했다- 내가 작성한 글에 좋아요가 추가되었을 때- 내가 작성한 글에 새로운 댓글이 추가되었을 때 나의 경우 fireStore의 post의 document의 필드로 likes를 배열로 만들고 좋아요가 추가되거나 삭제되면 해당 필드에 아이디값이 추가되거나 삭제되게해놓았다그리고 댓글의 경우 해당 post의 하위 document로 해놓았기 때문에 접근하는 방법이 조금 달랐다 좋아요가 추가되었을 때는 onDocumentUpdated를 사용해서 업데이트되기 전의 값과 업데이트 후의 값을 비교해서 좋아요의 갯수를 비교했고, 새로운 댓글이 추가된 경우에..
-
[FCM] FCM으로 Notification 구현하기 - 1Android 2025. 9. 23. 08:27
FCM(Firebase Cloud Messaging)으로 알림을 구현해보고자 한다제일 기본적인 셋팅은 다음과 같이 하면 된다 - AndroidManifest.xml에 서비스 추가, 알림 권한 추가알림 메세지를 수신하기 위해서 FirebaseMessagingService()를 상속받은 클래스를 하나 만든다@AndroidEntryPointclass FCMService : FirebaseMessagingService() { /** * 새롭게 토큰을 받아올 때(앱을 처음 실행, 삭제 후 재설치 등) * * @param token: FCM server에서 보내주는 FCM Token * */ override fun onNewToken(token: String) { ..
-
[Jetpack Compose] 텍스트의 일부분 스타일 변경하기Android 2025. 8. 6. 18:12
컴포즈에서 텍스트의 일부분만 스타일을 변경해야할 일이 생겼다html에서는 span 태그를 사용해 변경할 일부분의 텍스트만 따로 스타일을 적용했었는데 compose에서는 어떻게 해야할지 몰랐다구글링을 해보니 AnnotatedString을 사용해서 구현하는 것을 알게 되었다 https://developer.android.com/develop/ui/compose/text/style-text?hl=ko 텍스트 스타일 지정 | Jetpack Compose | Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 텍스트 스타일 지정 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Text 컴포저블에는 콘텐츠의 스타develo..
-
[CameraX] resolution(해상도) 조절 및 fallback 설정Android 2025. 8. 5. 08:31
이미지를 외부 저장소에 저장할 때 너무 큰 사이즈로 저장이 되었다사이즈와 해상도가 크다보니 파일 크기도 높아졌다CameraX에서는 이런 해상도를 조절할 수 있는 기능이 있어서 적용해보았다 @Params boundSizeboundSize를 기준으로 최고의 해상도를 선택 -> 없으면 fallbackRule에 정한 해상도 룰을 따름 @Params fallbackRule boundSize에서 정한 사이즈에 맞는 해상도를 기기에서 지원하지 않을 때 설정해놓은 fallbackRule 적용함cameraX에서는 최적화된 fallbackRule 옵션을 지원함 나의 경우 boudnSize를 어떻게 할까 하다가 아래와 같은 글을 보게 되었다https://www.adobe.com/kr/creativecloud/video/..
-
[Compose] LazyVerticalGrid 버벅거림 현상 해결해보기Android 2025. 4. 25. 18:12
테스트 기기 : 갤럭시 s8(Android 9) tab layout과 compose의 LazyVerticalGrid를 사용해 ui를 만들었다.포스팅의 이미지가 여러 개 보이는데, 문제는 다음과 같았다 1. 이미지 로드 속도가 느리다2. 스크롤을 할 때 버벅거리는 현상이 발생한다 이미지의 경우 coil을 사용해 불러오고 있었고스크롤을 할 때 버벅거림이 생기는 것은 불러올 포스팅의 갯수가 많아지면 점점 더 심해졌다사용자들이 만약 이 앱을 사용한다면 버벅여서 불편함을 겪었을 것이다(나같으면 신고했음) 처음에는 이러한 문제들 때문에 이미지를 업로드할 때 bitmap.compress를 사용해서 이미지 파일의 크기를 70% 수준으로 압축해서 줄였으나 소용이 없었다^^... 메모리 덤프를 떠보고 네이티브 사이즈를 보..