하루에 0.01%라도 성장하자
반응형

Develop 130

Compose Camp!

이번에 컴포즈 캠프를 한다고 해서 신청했고, 이제 시작하게 되었다 원래는 11월 1일 시작이었는데 국가 애도기간에 따라 11월 7일부터 하는 것으로 되었다.. ( 삼가 고인의 명복을 빕니다.. ) 아마 작년이었을거 같은데.. 컴포즈 오픈에 맞춰서 컴포즈를 미리 배울 수 있도록 GDG에서 했었는데 나는 결국 완주하지 못했다 ㅠ ( 변명이지만 하필 그 때 프로젝트가 미쳤었다.. ) 이번에는 꼭 완주하길 바라면서 신청했고...히히 신청하면 초급코스, 중급코스가 있다고 하는데.. 난 중급코스로 배정(?) 되었다.. 초급이 더 재밋을거 같은데 후 이전과는 다르게 이렇게 멋진 홈화면을 제공하고 있어서 그런가 한번이라도 더 사이트를 들어가게 되는 것 같다. 현 회사에서 컴포즈를 도입하기에는 아직 너무나도 먼 일이지만..

Develop/Android 2022.11.08

Android - Toast가 중첩되어 보여질 때

앱을 개발하다 보면 Toast를 많이 사용하곤 한다. 이때 Toast를 띄우는 버튼을 여러번 누를 경우 Toast가 최근것만 보이지 않고 밀렸던 Toast가 뜨게된다. 사실 사용자 경험상 가장 최근에 발생한 안내문구만 Toast 형태로 제공하는 것이 좋다. Flow Flow를 확인해보면 생각보다 간단한 로직이다. Code // 전역변수 private var toast: Toast? = null fun showToast(msg: String) { toast?.cancel() toast = Toast.makeText(GlobalApplication.getContext(), msg, Toast.LENGTH_SHORT) toast?.show() } // 사용법 showToast("안녕하세요") 이렇게 작성하면 ..

Develop/Android 2022.10.19

Android - java.lang.IllegalArgumentException: No suitable parent found from the given view. Please provide a valid view

이번에 안드로이드 스낵바를 만들다가 Activity 에서 노출되는 것을 Fragment로 옮겼다. 그런데, Activity에서는 문제가 없었는데 Fragment에서는 장애가 발생 했다. java.lang.IllegalArgumentException: No suitable parent found from the given view. Please provide a valid view 이유는 무엇인가 확인해 보았더니 기존에 Activity에서는 onResume에서 showSnackbar를 실행했는데, 똑같이 Fragment에서도 onResume에서 실행했는데 발생했고, 해당 에러의 메세지는 showSnackbar를 하려고 하는데, 어디다 해야하는지 모르겠어!!! View가 없는데? 라는 에러다. 따라서 Fra..

Develop/Android 2022.09.28

Android 이메일 보내기

Android Intent를 통해서 쉽게 이메일 앱을 실행할 수 있다. val intent = Intent(Intent.ACTION_SEND) val toEmailArray = arrayOf("test@gmail.com") intent.apply { type = "text/plain" type = "message/rfc822" putExtra(Intent.EXTRA_EMAIL, toEmailArray) putExtra(Intent.EXTRA_SUBJECT, "메일제목") putExtra(Intent.EXTRA_TEXT, "메일 내용") } startActivity(intent) Intent를 ACTION_SEND 형태로 생성하고 타입을 설정한다. 여기서 EXTRA_EMAIL 의 경우 단순히 String ..

Develop/Android 2022.08.03

FCM Topic 구독 구현하기

Firebase 는 안드로이드 앱 개발하면서 제일 많이 연관되어 있는 플랫폼이다. 이중에 FCM은 사용자에게 알람을 보내기 위해 많이 사용하는데, 알람을 보내는 것도 크게 두가지 방식이 있다. 1. 사용자 Token 으로 보내기 2. 사용자 그룹으로 보내기 Token으로 보낼경우 특정한 사람을 지정해 보낼 수 있지만 그룹으로 보낼 경우 그 그룹에 속해 있는 모든 사람에게 보낼 수 있다. 여기서 편하게 그룹이라고 썼는데, Firebase 에서는 Topic 이라고 한다. 원리 1. 사용자가 앱을 통하여 topic을 구독함 2. 구독한 topic으로 서버에서 or firebase console 에서 FCM을 전송함 3. topic을 구독한 사용자는 firebase push를 받을 수 있음. 아래는 코드 // ..

Develop/Android 2022.08.02

Android API로 STT, TTS 구현하기

STT ( Speach To Text ) TTS ( Text To Speach ) 즉 사용자의 음성을 인식해서 텍스트로 표기하거나 텍스트를 인식해서 음성으로 말해주는 기술을 뜻한다. 놀랍게도 안드로이드에서 기본 API로 이 기술을 지원하고 있다. ( 더 놀랍게도 기본 제공이라는 것에 비해 안정적이다. - 개인적인 생각 - ) 거두 절미 하고 작성해 보자 STT 버튼을 누르거나 특정 이벤트가 발생한 시점에 해당 Function을 실행하면 음성 인식을 시작한다. private fun startVoiceRecording() { val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply { putExtra(RecognizerIntent.EXTRA_C..

Develop/Android 2022.07.21

Android Image Multi Select in Gallery 갤러리에서 사진 여러개 선택

안드로이드 앱을 사용하다 보면 intent를 이용해서 사진을 가져오는 경우가 많다. 사진을 가져올때는 하나만 가져올 수도 있고, 여러 사진을 셀렉트 해서 가져올 수 있다. Intent.ACTION_GET_CONTENT 를 사용하면 최근 사용한 이미지를 선택 할 수 있다. 이때 갤러리를 들어가지 않고 바로 데이터를 선택할 수 있고, 갤러리에 들어가서 하나만 선택해서 나올 수 있다. 우선 먼저 코드를 볼까 private fun bindingAddImageButton() { binding.addImageButton.setOnClickListener { when { ContextCompat.checkSelfPermission( this, android.Manifest.permission.READ_EXTERNAL..

Develop/Android 2022.07.20

Room @PrimaryKey autoGenerate

Android room 을 사용하게 되면 기본적으로 PrimaryKey를 지정하게 되어 있다. 매번은 아니지만 간혹 autuIncrement 속성이 필요할 때가 있는데, 이때 Room에서는 아래와 같이 설정한다. @Entity(tableName = "picktime") data class PickTime( @ColumnInfo(name = "id") val id: Int, @ColumnInfo(name = "dayOfWeek") val dayOfWeek: String, @ColumnInfo(name = "startTime") val startTime: String, @ColumnInfo(name = "endTime") val endTime: String, @ColumnInfo(name = "open") ..

Develop/Android 2022.07.13

Kotlin 을 이용한 동적 setBackgroundColor

이번에 별로 어렵지도 않은 걸로 혼자 삽질한 케이스가 발생해서 기록 차원에서 남겨두려고 한다. ( 이러지 말자 ㅠㅠ ) 기본적인 앱 구조는 healder를 공통으로 만들어 놓고 이 header를 각 레이아웃에 include 해서 사용하려고 한다. 이때 include하는 activity 별로 header의 backgroundColor 값을 변경해줘야 하는 상황이었다. ( 어렵지 않은데 ?) 평소처럼 진행하였다. 대충 바인딩 하는 코드 .... binding.headerLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.white)) 그런데 변경이 안되는것이다!! 아무리 해도 변경이 안돼... 바인딩이 잘못되었나 해서 findViewById로도 별..

Develop/Android 2022.07.06

Duplicate Class Found in Android

앱 실행 도중 갑자기 위 에러가 발생하였다. 말 그대로 앱내 선언된 Class Name이 중복된다는 것인데... ( 난 그런적 없는데..? ) 확인 해보니 iresultreceiver 라는 클래스가 겹치는 것을 확인했다. Logcat 을 보면 이러한 경우 어떻게 트러블 슈팅 하면 좋을지 가이드 사이트를 제공한다. https://developer.android.com/studio/build/dependencies#resolution_errors 빌드 종속 항목 추가 | Android 개발자 | Android Developers Android 스튜디오에서 Gradle 빌드 시스템을 이용하여 빌드 종속성을 추가하는 방법에 관해 알아보세요. developer.android.com 우선 확인해 보니 실제로 두개의..

Develop/Android 2022.06.24
반응형