728x90
반응형

Android/Kotlin 23

<정리> SelfCheckout & BoxReading

산업용 PDA 회사에 들어가서 앱 만들 일은 없겠다 했는데 생각외로 수습기간 중에 외부 전시회 시연 앱을 맡게 되었다.혼자 만들거나 학교나 학원 팀플이 아닌 회사에서 진행하는 것이다보니 긴장이 많이 되었지만 생각보다 진행에 큰 문제가 없었다. 내가 맡은 앱의 역할은 다른 단말기에 받은 데이터를 서버를 통해 받아와서 화면에 보여주고 버튼을 클릭 시 포맷에 맞는 데이터를 서버로 넘겨주는 것이었다.세부적으로 들어가면 여러 제한사항이나 요구사항들이 있었지만 간단하게는 저렇게 말할 수 있다. 두 앱 모두 비슷한 로직을 사용했고 UI도 비슷했다.그렇기에 짧은 시간에 두 개의 앱을 완성할 수 있었다.데이터 통신에 사용된 것은 MQTT였다.*MQTT : 낮은 대역폭과 리소스가 제한된 환경에서 안정적으로 통신을 할 수 ..

Android/Kotlin 2025.01.31

<정리> 명함 앱 만들기 5일차

이력서랑 포트폴리오, 지원서, 자소서 준비하다보니 이걸 건드릴 시간이 없었다... ✔ 요약RoomDatabase 생성 및 Hilt 적용데이터 불러올 때 Paging3와 StateFlow 사용 1. RoomDatabase 생성plugins { ... id("kotlin-kapt")}dependencies { ... implementation("androidx.room:room-runtime:2.6.1") implementation("androidx.room:room-paging:2.6.1") kapt("androidx.room:room-compiler:2.6.1")} 시작은 Data 모듈에서 Entity를 만드는 걸로 시작했다.@Entity 어노테이션과 @PrimaryKey..

Android/Kotlin 2024.07.09

<정리> 명함 앱 만들기 4일차

✔ 요약Hilt 적용 성공클린 아키텍처에 맞는 로그인 기능 흐름 구현파이어베이스를 통한 로그인/회원가입 기능 구현 1. 힘들었던 Hilt 적용기...왜 그리 적용이 쉽지 않은지...참 여러가지 에러를 만났고 어떻게든 뚫어냈다.먼저 Hilt는 DI, 의존성 주입 시에 사용하는 Google의 Dagger 기반의 라이브러리다.(의존성 주입은 함수에 필요한 클래스 또는 참조변수나 객체에 의존하는 것이라고 한다.)이걸 적용하려고 애를 썼던 것은 코드의 재사용성 향상, 수월한 리팩토링, 의존성 감소, 유연한 코드 등 유지보수에 좋은 영향을 주고 요즘 회사들에서 많이 사용하는 기술이기 때문이다..!! 가장 먼저 한 것은 build.gradle.kts 세팅이다.프로젝트 단의 build.gradle.kts에서는 hilt..

Android/Kotlin 2024.06.17

<정리> 명함 앱 만들기 3일차

✔ 요약실제 스마트폰과 안드로이드 스튜디오를 와이파이로 사이에 두고 연결해서 무선으로 프로젝트를 실행하고 디버깅 해볼 수 있는 세팅 완료레이아웃 수정 및 클린 아키텍처를 적용하기 위한 모듈 추가 생성 1. adb 무선 연결처음에 할 때는 다음과 같이 하면 된다.가장 먼저 스마트폰에서 내부 IP를 알 수 있는 앱을 다운받아 내부 IP를 확인한다.스마트폰을 컴퓨터와 USB선으로 연결한다.C:\Users\(사용자)\AppData\Local\Android\Sdk\platform-tools 이 위치에서 git bash를 열어 다음 명령어들을 친다../adb tcpip 5555포트번호 설정하는 명령어 ./adb connect (앱에서 확인한 내부 IP):5555연결하는 명령어 이렇게 하고 나면 안드로이드 스튜디오에..

Android/Kotlin 2024.06.12

<정리> 명함 앱 만들기 2일차

✔ 요약명함집 화면의 RecycerView를 ListAdapter와 연결하고, 홈 화면의 ViewPager2도 ListAdapter와 연결함이때 추상 클래스를 적극 활용하여 확장성을 미리 대비함 1. 명함집 화면명함집에 들어갈 하나하나 아이템의 정보를 data class에 넣어놨다.businessCard만 nullable한 변수인데 이는 명함 QR 코드 스캔이 없이 수기 작성하는 경우를 생각해서 그렇게 해놨다.// StorageItem.ktimport android.net.Uridata class StorageItem( val name: String, val rank: String, val company: String, val businessCard: Uri?, val badg..

Android/Kotlin 2024.06.10

<정리> 명함 앱 만들기 1일차

✔ 요약앱 전체적인 구조(BottomNavigationView + FrameLayout)를 설정하고 각각 페이지의 요소들을 미리 정해놓았던 위치에 크게크게 배치시켜놓음 1. 앱 전체적인 구조 설정// activity_main.xml 상단은 Toolbar, 하단은 BottomNavigationView가 차지하고 그 외의 공간은 각각의 페이지가 나타날 FrameLayout이 차지함 메뉴는 다음과 같이 3개로 만들어둠(변경 예정)// bottom_nav_menu.xml  이에 맞는 액티비티는 다음과 같이 만들었다.// MainActivity.ktimport androidx.appcompat.app.AppCompatActivityimpo..

Android/Kotlin 2024.06.05

<정리> WorkManager를 이용한 주기적인 UI 업데이트2

생각보다 빠르게 어제의 마지막 고민이 해결되어서 이렇게 글을 남긴다.물론 완벽한 방법은 아닌 것 같지만 이렇게도 할 수 있다는 걸 남겨놓는게 좋을 거 같다. 1. 가장 처음 방식그냥 뷰모델에서 코루틴을 이용해 데이터를 가져와 조건을 체크하고 그 결과를 라이브데이터에 넘겨줌그냥 함수이기 때문에 호출할 때 딱 한번 실행됨더 실행되게 하고 싶다면 원하는 위치마다 호출 코드를 넣어줘야함fun updateNotificationSign() { if (savedPrefRepository.getFlag().not()) { savedPrefRepository.setFlag(true) viewModelScope.launch(Dispatchers.IO) { val dateP..

Android/Kotlin 2024.04.26

<정리> WorkManager를 이용한 주기적인 UI 업데이트

내배캠 최종 팀플 때는 성공하지 못 했지만 계속 붙잡고 있던 WorkManager가 드디어 뚫렸다...!어디서 쓰는 것이었냐면 저장된 공공서비스의 예약 관련 날짜에 대해 체크를 해서 메인 페이지의 알림 페이지 이동 버튼 UI를 업데이트하는 데 사용하는 것이었다.팀플 당시에는 이걸 할 수 없었기 때문에 앱 실행시 한번 로직을 돌려 체크를 하는 방식으로 마무리를 지었었다.껐다가 다시 키지 않는 한 해당 로직은 다시 실행되지 않았기 때문에 1분 뒤에는 조건에 맞아 UI가 업데이트되어야함에도 불구하고 1분 전에 실행되면 UI가 업데이트 되지 않는다. 해결할 수 있는 방법이 WorkManager인 것을 알고 있지만 그 때는 시간에 쫓겨 할 수 없었다.그래도 이번에 시간을 들여 WorkManager를 알아가고 적용..

Android/Kotlin 2024.04.25

<정리> 메모 앱 만들기 9일차

오늘은 뭔가 많이 한 거 같은데 아직 해야할 게 많고 그것들이 대부분 쉽지 않다는 걸 알게 되었다... 지금까지가 가장 쉬운 부분이었고 이제 앞으로 할 것들이 쉽지 않아보여서 일단 오늘은 여기서 마무리하려고 한다. 오늘은 순서가 약간 뒤죽박죽이다. 이것저것 다 만지다보니 그렇게 됐고 그래서 구현한 것과 트러블 슈팅이 섞여있다. 1. 저장소 생성 object class로 저장소를 만들었다. ArrayList로 작성된 메모를 저장했고 관련 함수도 다 만들었다. 지금 만들지 않은 건 삭제 함수다. ID를 랜덤으로 부여하기 위한 함수도 존재한다. 이 ID로 메모를 식별하여 업데이트를 해준다. object MemoDatabase { private val database: ArrayList = arrayListOf..

Android/Kotlin 2024.01.11

<정리> 메모 앱 만들기 8일차

드디어 메모장 어플의 핵심인 메모에 들어가는 날이었다. 물론 그 전에 여러가지 애니메이션 적용하는 것이 너무 내 머리를 아프게 해서 진도는 많이 못 나갔지만... 오늘 한 것들 중에 간단하게 말할 수 있는 건 LinearLayout이던 걸 ConstraintLayout으로 변경한 것, 레이아웃 xml 파일에 주석 추가한 것이 있다. 1. MemoAdapter 변경사항 기존에는 뷰홀더에서 리사이클러의 아이템뷰를 받는 방식이었는데 최근에 배운 방법으로 리사이클러뷰 아이템의 뷰바인딩 값을 받는 방식으로 바꿨다. inner class MemoViewHolder(private val binding: RecyclerViewItemLayoutBinding): RecyclerView.ViewHolder(binding...

Android/Kotlin 2024.01.10
반응형