본문 바로가기
반응형

Projects/It's My Waye16

[It's My Waye] 16. 프로젝트 종료 및 회고 Intro https://github.com/DevJaewoo/its-my-waye GitHub - DevJaewoo/its-my-waye Contribute to DevJaewoo/its-my-waye development by creating an account on GitHub. github.com 드디어 장장 5달에 걸친 프로젝트가 끝이 났다. 결과물을 보면 일주일 만에 만들어도 이상할 게 없는 규모인데, 안드로이드를 완전 처음 해보는 것이기도 하고, 무엇보다 혼자 프로젝트를 진행하다 보니 미루고 미뤄도 남들에게 전혀 피해가 가지 않기 때문에 마음 놓고 놀았던 게 컸다. 그래도 '하던 건 마저 마무리해야지'라는 마음가짐으로 5월 중순부터 다시 시작해 거의 2주 만에 완성시켰다. 마지막 2주 동안은.. 2022. 6. 8.
[It's My Waye] 15. 1차 버전 애플리케이션 배포 1차 버전 애플리케이션 배포 넣고자 했던 기능이 모두 들어간건 아니지만 필수 기능들을 포함된 애플리케이션이 완성됐다. 완성된 앱은 Key를 이용해 Signed Bundle로 빌드해야 플레이스토어에 배포할 수 있다. Key를 이용해 빌드하면 app-release.aab라는 파일이 생기는데, 이 파일을 플레이 콘솔 화면에 드롭하면 된다. 이전에 앱을 개발하면서 간간이 업데이트 해왔기 때문에 버전 코드가 1이 아니다. 그동안은 정식 버전이 아니라서 공개 테스트로 출시 및 업데이트 했고, 이번 1차 버전 앱은 1.08 버전이 될것 같다. 이제 플레이스토어에 마이웨이라고 검색하거나 아래의 링크를 통해 앱을 설치할 수 있다. https://play.google.com/store/apps/details?id=com... 2022. 5. 31.
[It's My Waye] 14. 진동, 전체화면 알람 기능 추가 진동 기능 구현 DB의 알람 반복 횟수, 간격 컬럼을 진동 사용 여부, 전체화면 알람 사용 여부로 변경하고 기능을 구현했다. 진동은 0.5초 간격으로 1초간 울리도록 설정했다. if(alarm.vibrate) { if(Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { vibrator?.vibrate(longArrayOf(1000, 500), 0) } else { vibrator?.vibrate( VibrationEffect.createWaveform( longArrayOf(1000, 500), intArrayOf(255, 0), 0)) } } 진동과 관련한 더 자세한 내용은 아래의 글에 따로 정리해뒀다. [Android] Vibrator 클래스로 진동 제어하기 Vib.. 2022. 5. 31.
[It's My Waye] 13. 알람음 선택, 볼륨 조절 기능 추가 알람음 선택, 볼륨 조절 [It's My Waye] 12. 알람 DB 구조 수정 알람 DB 구조 수정 개발 중 기존 알람 설정 기능의 반복 횟수와 간격이 쓸모가 없다는 생각이 들었다. 그와 반대로 진동과 전체화면 알람 설정과 같은 중요한 데이터가 DB에 빠져있었다. 이래서 devjaewoo.tistory.com 이전 글의 알람 설정 변경 UI를 보면 알람음 탭이 있다. 이 탭을 누르면 알람음을 선택하고, 볼륨을 조절할 수 있도록 UI를 구성했다. 알람음 목록은 RecyclerView, 볼륨은 SeekBar를 사용했다. 기기의 벨소리 목록을 가져오는 방법은 아래의 글에 따로 정리해뒀다. [Android] Ringtone 재생 및 목록 가져오기 Ringtone 재생 val ringtoneUri: Uri = .. 2022. 5. 31.
[It's My Waye] 12. 알람 DB 구조 수정 알람 DB 구조 수정 개발 중 기존 알람 설정 기능의 반복 횟수와 간격이 쓸모가 없다는 생각이 들었다. 그와 반대로 진동과 전체화면 알람 설정과 같은 중요한 데이터가 DB에 빠져있었다. 이래서 처음에 꼼꼼하게 설계를 해야된다고 하나보다. 기존 코드의 구조를 뜯어고쳐야 한다는 것은 그리 좋은 일이 아니지만, 운좋게도 빠져야 할 컬럼의 수와 추가되어야 할 컬럼의 수가 같아서 RENAME 해주기로 했다. 기존 컬럼을 DROP하고 새 컬럼을 ADD 하는게 가장 좋겠지만, SQLite에선 컬럼을 DROP시키는 기능을 제공하지 않기 때문에 컬럼을 DROP하려면 컬럼이 빠진 새 테이블을 만들고 데이터를 전부 복사해야 한다. 이 대작업보단 이름만 바꿔주는게 훨씬 낫다 생각해서 그냥 RENAME을 사용했다. overri.. 2022. 5. 17.
[It's My Waye] 11. 알람 기능 구현 - 알람 제어 Intro 이전엔 단순히 알람을 켜고 끄기만 하는 서비스를 작성했다. 이제 알람을 언제 켜고, 언제 끌지 결정하는 클래스를 만들어야 한다. 모든 알람은 이 클래스를 통해 제어할 예정이기 때문에 싱글톤 패턴으로 만들어야 한다. Kotlin에선 싱글톤 패턴을 대체할 수 있는 object라는 키워드를 제공한다. class 대신 object로 선언하면 static으로 사용하는것과 비슷한 효과를 낸다. 알람 켜기 다른 앱의 noti를 읽고, 그 noti의 메시지에 내가 알람을 켜둔 아이템이 포함되어 있으면 알람을 켜는것이 기본 시나리오이다. noti 내용은 결국 String으로 전달되기 때문에, String을 받아 알림을 켜주는 함수를 만들면 된다. 우선 String 안의 아이템이 있는지 확인해 index를 반환.. 2022. 4. 27.
[It's My Waye] 10. 알람 기능 구현 - 알람 켜기 개발을 미루고 미루다가 어느덧 마지막 글을 올린 날에서 3달 가량이 지나버렸다. 꾸준히 개발해왔으면 지금쯤 거의 다 완성돼있었을텐데 그렇게 하지 않고 게으름 피운 나에게 화가 난다. 이제 와서 다시 해봐야 늦었다는 생각도 늘지만 지금부터라도 다시 시작해보려 한다. 구현할 기능 기능 구현에 앞서 시나리오는 다음과 같다. 다른 앱 (Ex. 디스코드, 카카오톡) 에서 내가 알람을 켜둔 아이템의 이름이 메시지에 포함된 Notification 감지 해당 아이템의 알람 세부설정 확인 (Ex. 알림음, 볼륨, 반복 횟수, 반복 간격) 세부설정에 따라 알람 재생 이 중에서 3번의 역할을 하는 클래스를 구현했다. 알람 서비스 구현 알람 서비스는 알람을 재생/정지하고, 알람을 재생할 때 현재 음소거 모드와 볼륨을 변경하는.. 2022. 4. 27.
[It's My Waye] 9. 알람 화면 기능 구현 Intro 알람 화면의 기능을 구현했다. 구현한 기능들은 다음과 같다. 알람 전체 활성화 Off 시 아래의 항목 전부 숨김 방해금지 시간의 숫자를 24 이상으로 입력할 경우 23으로 설정 알람 전체 활성화 상태, 방해금지 시간 SharedPreference에 저장 앱 실행 시 DB에서 Item 목록을 불러와 RecyclerView에 표시 알람 비활성화 시 항목 숨김 binding.switchAlarmAll.setOnCheckedChangeListener { _, isChecked -> updateAlarmEnabled(isChecked) } private fun updateAlarmEnabled(enable: Boolean) { Log.d(TAG, "updateAlarmEnabled: $enable") .. 2022. 2. 9.
[It's My Waye] 8. 알람 UI 구현 Intro 사용자가 알람을 켜고 끌 수 있는 알람 화면을 구현했다. 놀러 다니고 게임도 하고 하다보니 이 단순한 UI 하나 구현하는데 1주일이나 써버렸다. 앞으로 더 열심히 해야겠다. 아무튼 이 화면은 아래의 기능들을 제공한다. 알람 전체 활성화 알람 금지 시간 설정 알람 개별 활성화 및 상세설정 알람 UI 화면 구현 우선 LinearLayout과 RecyclerView로 기본 화면을 구성해봤다. 맨 위에 알람 활성화 스위치가 있다. 이 스위치를 꺼놓으면 개별 알람 설정과 관계없이 모든 알람을 끄도록 설정할 것이다. 그 아래에는 알람 금지 시간대가 있는데, 24시간을 기준으로 현재 시간이 설정 시간의 범위 안에 들어갈 경우 알람을 무시하도록 해야 한다. 예를 들자면, 0 ~ 7일 경우 0, 1, 2, 3.. 2022. 2. 9.
반응형