박종회: Contact(Tab1), Crypto-currency Trading Simulation(Tab3), EasterEgg
송재현: Photos(Tab2)
2021 몰입캠프의 1주차 과제로 앱을 개발했다. 주어진 과제로는 세개의 탭, 연락처 기능, 갤러리 기능이 있었다. 우리는 위의 내용에 전화, 사진촬영과 더불어 자유 주제로 비트코인 시세를 보며 모의투자를 할 수 있는 기능을 추가해 앱을 더 발전시켜 보았다.
최소로 요구되는 API 버전은 API16(Jelly Bean)이고, 타겟 API는 API30이다. Android Studio emulator로 앱 실행 시, 앱에서 사용되는 두개의 local DB로 인해 성능이 저하될 수 있다.
시작 시, 크게 세개의 권한을 받아야 한다. 앱을 처음 실행할 때에 권한을 요청하는데, 이 과정에서 앱이 한번 종료된다. 권한을 다 받고 재실행하면 정상적으로 작동한다.
- 사용자 휴대전화에서 연락처를 로드하여 리사이클 뷰로 보여줌.
- 사진 선택
사진 선택 버튼을 누르고 구글 포토 앱으로 넘어가면, 로컬에 있는 갤러리의 사진들에서 원하는 만큼 선택해 올 수 있다. 최대 사진 수가 20개이기 때문에, 총 갯수가 넘어갈 시 불러와지지 않는다. - 카메라를 이용한 사진 촬영
나만의 갤러리에 담고 싶은 순간이 있다면 카메라를 이용해 사진을 촬영할 수 있다. 사진 촬영 시 화면에 띄워지고, 저장버튼을 통해 휴대전화에 저장된다. 그 다음 메인의 사진 선택을 통해 그 사진을 선택할 수 있다.
- 사진 전체 삭제
만약 갤러리에 담아둔 사진들을 새로 바꾸고 싶다면 전체 삭제를 클릭하고, 화면을 한번 쓸어내리면 새로고침이 된다.
- 사진 확대 및 메모
사진을 클릭하게되면, 사진을 한 화면에 크게 볼 수 있다. 만약 작성하고 싶은 글이 있다면 확대된 사진 아래에 있는 메모란을 활용한다.
- 갤러리에 선택된 사진들은 앱을 재시작하여도 유지된다.
암호화폐 실시간 시세를 이용한 거래 시뮬레이션
- 스크롤을 위로 올리면(?), 1분 단위로 현재 시세 확인 가능.(무료 API라서 하루에 333번 확인 가능)
- 상단의 “Search Crypto Currency”에서 원하는 암호화폐 이름 검색
- 암호화폐 아이템을 클릭하면 주문창으로 넘어감. 랜덤하게 조언 Toast 메세지 발생.
- 주문창에서 수량 선택 후, 매수 매도 가능. + 뒤로가기로 원래 창으로 돌아옴.
- 주문창에서 코인 아이템 클릭 시, 관련 뉴스 웹으로 넘어감.
- 우측 하단의 플로팅 버튼 클릭 시, wallet 창으로 넘어감.
- 투자 현황과 수익률 계산. (전체 투자 수익률을 수학적으로 정확하지 않을 수 있음.)
- 휴대전화를 껐다켜도 투자 정보 보존됨.
- 다른 개발자가 공유한 라이브러리를 통해 연락처를 가져옴. 이 과정에서 자바와 코틀린 코드를 병행하는 법을 배움.
- onClick과 onLongClick을 구분하여 구현함.
- 특정 상황에서 VideoView와 MediaController를 이용해 전체화면으로 영상을 재생함.
- Uri를 clipdata로 받아 내부저장소에 비트맵으로 변환 후 저장. recyclerView에 adapt할 uri 추가.
- ImageAdapter에서 uri를 imageview에 glide를 사용해 표시,
- SharedPreference를 통해 앱 내부에 사진 갯수 저장.
- 캐시에서 비트맵을 가져와 다시 uri로 변환해 adapter에 추가. 이 과정에서 로컬에 사진이 재저장되는 문제 발생.
- gallery_camera 액티비티 전환으로 카메라에서 찍은 사진을 bitmap으로 받고, 그 후 로컬에 저장.
- adapter onBindViewHolder에서 itemView에 setOnClickListener을 사용해 사진 uri를 intent로 Image_show 액티비티로 전달해 사진을 확대.
- Room을 이용한 DB로 각 사진에 대한 메모를 저장.
- swipe view를 통해 사진 전체 삭제 시 새로고침
- API를 통해 실시간 시세 데이터를 가져옴.
- 가져온 JSON Object을 Parse하여 원하는 데이터를 뽑아냄.
- Adapter의 ArrayList 변수명을 바꾸는 방법으로 검색 기능을 구현함. (filterlist)
- 해당 fragment와 WalletActivity, OrderActivity 간의 activity 전환을 하며, intent 로 정보를 주고 받음.
- NewsWebActivity: 코인의 이름을 통해 구글 검색 URL을 만들어내고, 웹뷰를 통해 뉴스 검색 기능을 추가함.
- Room을 통해 local DB를 관리함. 이를 통해 코인 구매 내역을 저장하고 수익률을 계산함. 이를 통해 휴대폰을 종료하고 재실행해도 데이터를 보관할 수 있음.
- swipe view를 통해 새로고침으로 코인 시세를 api에서 리로딩함.
- 특정 버튼을 클릭하면, soundPool을 이용하여 음성이 재생되도록 구현함.
- CONTACTS에서 연락처에 “최준”을 만들고 전화를 걸어본다면?
- GAZZZA에서 “DOGE”를 사고 팔아 본다면?