잉여력 측정기 -개발(2/2)

사이드 프로젝트 2017. 3. 30. 22:31 Posted by 아는 개발자

잉여력 측정기 개발 두 번째 이야기다. 핵심적인 기능들은 첫번째 포스트에서 만들어 뒀고 이번 포스트에서 설명할 내용들은 필요한 기능들이나 많이 어렵지는 않았던 내용들이다. 현재 구현한 사항들은 안드로이드 버전이 올라가면서 없어지던 기능이 없었다(아주 당연한 일이지만). 스택 오버플로우와 옛날 학교에서 프로젝트 했던 경험을 살려서 빠르게 구현 할 수 있었다.


1. App 실행 횟수 저장할 데이터베이스 구축


데이터베이스를 구축 해보는 것이 너무 오랜만이라 스키마의 기본적인 개념도 까먹었다(튜플이랑 key가 왜이렇게 생소하게 느껴지는 건지) 사실 여기서 구현할 데이터베이스 형태는 정말 단순한 것인데도 허둥 지둥 했다. 기억력 복원 작업을 한 두 시간정도 하고 나서 스키마를 짜고 Android SQLite Tutorial을 따라가면서 DB를 만들었다. 다행히 한방에 깔끔하게 구현 된 것 같다. 만든 DB 테이블은 이렇다.



ID값은 primary key이다. Auto Increment로 생성되도록 했다. 애플리케이션들마다 'Package Name'이란게 존재하는데 프로세스들은 이 이름으로 안드로이드내에서 실행되고있다. 애플리케이션 이름은 한글 일수도 있는데 반해 Package Name은 영어로 통일되어 있고 혹시나 이름이 동일한 애플리케이션이 있더라도 Package이름으로 구분 할 수 있을 것 같아서 DB에 넣기로 했다. Count값은 실행 횟수고 Date는 Count 하는 날짜다. Reason Code는 이 앱이 카운팅 된 이유를 기록한 값이다.


아직 구현은 안됐는데 일별 총 카운팅 횟수를 기록할 테이블도 만들 생각이다. 만든다면 아마 테이블은 요렇게 간단히 만들 수 있을 것이다.



별일 아닌데 막상 만들려고 하니 보람을 내일로 미루고 싶은 욕구가 강렬해졌다.


2. 달력으로 앱 실행 횟수 가져오기


날짜 별로 나의 앱 실행 횟수 기록을 카운팅 할 수 있어야하는 요구 사항이 있었다. 다행히 요건 안드로이드에서 DatePickerDialog라는 것을 이용해 쉽게 날짜를 선택 할 수 있게 해줬고(UI도 이쁘게!) 내가 할 일은 캘린더에서 리턴한 날짜 기록에 맞춰서 DB에서 값들을 읽어오는 일 뿐이었다. 날짜에 맞춰서 읽어오는 일은 기존에 있던 SQL 명령어를 조금 수정해서 구현 할 수 있었다.


         


(캘린더 토글로 3/27 기록에 맞춰서 기록을 가져온 결과)


3. 사용량 그래프 그리기


애플리케이션마다 날짜별 사용량을 그래프로 보여 줄 수 있어야 했는데 안드로이드 API 형태로 제공되는 그래프 UI는 없었다. 다행히 오픈 소스에서 여러가지 프로젝트가 있었고 구글 검색 결과 제일 많이 사용하는 프로젝트를 골라서 구현했다. 요즘 깃허브는 그냥 소스만 제공하는게 아니라 가이드도 아주 아주 상세한 것 같다. 다른 오픈소스 프로젝트 가이드 뺨치는 수준. 대충 훑어 보긴 했지만 그래프 축 최대/최소값 조절 뿐만 아니라 스타일링까지 함수 하나로 해결 할 수 있었고 원한다면 추가로 기능을 구현해 애니메이션을 넣을 수 있는 효과도 있었다. 이건 디자인 스펙이 결정되면 코드레벨까지 내려가서 세세히 볼 계획이다.


(카카오톡 사용량을 그래프로 찍어본 모습. 정말 데모 수준의 UI이고 손 볼 곳이 많지만 시작이 반이니까!)


이 정도면 대강 구현은 완료된 것 같다. 이제는 앱을 이쁘게 꾸미는 작업을 해야겠다.

728x90

'사이드 프로젝트' 카테고리의 다른 글

잉여력측정기 -개발 중단  (0) 2017.04.24
잉여력 측정기 -개발(2/2)  (0) 2017.03.30
잉여력 측정기 -개발(1/2)  (0) 2017.03.26
잉여력 측정기 -기획  (0) 2017.03.26