주간 진행 보고서 (3월 2주차)

2019.03.12


애플리케이션 초안을 설계했다.

초반이라 팀원들과 하드웨어 부분을 같이 연구하는 것이 맞지 않나 싶었지만 나중에 소프트웨어 부분이 차지하는 비율이 조금 더 크기 때문에 먼저 해 놓으면 좋을 것 같아 미리 앱 디자인을 시작하였다.

현재시간, 동작 버튼, 작동시간, 온/습도 표시, 이동거리, 기울기, 카메라 화면 등 다양한 부분들이 필요했고 임시적으로 메인부를 만들기 전에 버튼 방식의 실행부 부분을 메인 화면에 만들어 테스트 해보았다.

각 기능들이 포함될 레이아웃 부분을 나누는 것이 최우선이기 때문에 그 부분을 먼저 시작했고 다른 부분들은 순차적으로 만들어나갈 계획이다.

손으로 그려본 초안과 실제로 스마트폰에서 보이는 화면 간의 공간 차이로 인해 1차 초안에서 디자인을 약간 수정하였다.

버튼 방식의 실행부를 테스트하는데, 화면을 구성하는데 있어 자동으로 화면 전환이 되지 않도록 강제로 가로모드로 설정해두었고 맨 위에 상단바가 보이지 않도록 전체화면을 적용시켰다.

다만 전체화면을 적용하는데 있어 illegalStateException이 발생했는데 메인 클래스에 AppCompatActivity를 import한 상태로는 setContentView가 제대로 적용되지 않아 Activity를 import시켜 이 문제를 해결하였다.

화면을 나누고 아이콘 등 기본 UI만 배치하고 WebioPi와의 서버 연동부터 연구할 계획이다.



2019.03.13


어제 만들었던 부분에 이어서 버튼부 실행화면의 우측과 하단 화면을 구성했다.

1차 초안과 달리 이동거리 표시의 필요성을 느끼지 못해 해당 내용을 지웠고 MRM을 작동시키는 이동 버튼을 더 큰 공간으로 넓혔다.

화면 분할을 모두 마치고 기본적인 버튼과 아이콘 등을 배치하였으며 버튼 중에 둥근 모서리의 형태를 만들어야 하는 경우도 있었는데 자료를 참고하여 drawable 파일에 해당 모양을 표현할 수 있는 xml 코드를 만들어 추가하였다.

또, 커스텀 폰트를 적용하기 위하여 font 폴더를 구성하여 해당 폰트를 추가하였고 텍스트별로 사용하기 위해 font-family xml 파일 또한 구성하였다.

커스텀 폰트를 적용하는 과정에서 font-family를 표현하는 하나의 xml에 쓰고자 하는 모든 폰트 정보를 집어넣었는데 텍스트 스타일을 설정하더라도 텍스트 뷰에 적용이 되지 않아 font-family를 각각 만들어 해결하였다.

오늘은 어플의 일부를 구성하는 작업을 했는데 중간에 프로젝트의 개발 방향에 관해 뚜렷한 흐름도가 정해지지 않아 3시간 가량 하드웨어와 소프트웨어의 개발 흐름도에 관해 회의를 진행했다.

오늘 회의한 모든 내용은 정리해서 내일 추가적으로 발표할 예정이다.



2019.03.14


안드로이드 앱 아이콘을 제작하였다.

일러스트 파일을 구해서 임시 아이콘을 제작하였는데 차후에 다시 수정을 할 수도 있고, 아니면 앱 아이콘은 크게 중요하지 않을 것 같아 이대로 적용시킬 수도 있을 것 같다.

이 외에 버튼부 실행화면에 들어가는 날짜 및 시간 표시를 위해 System 클래스의 currentTimeMills() 메소드와 Date 클래스를 이용하여 현재 시간 정보를 표시하도록 하였다.

또, 동작 버튼의 공간을 위아래로 조금 더 넓히고 오른쪽 하단부에 종료 버튼을 추가하였으며, 왼쪽/오른쪽 화면의 동작 버튼 사이사이에 회전 기능용 버튼도 추가하였다.

마지막으로, 카메라 화면이 나올 부분에 테두리를 표시하고 정보를 보여줄 하단부 부분에도 둥근 테두리 라인을 그려 최대한 균형있는 형태로 보여주도록 구성하였다.

시간 개념을 도입하는 부분에서는 오류가 있었다.

날짜와 시간 자체를 보여주는 부분에서는 문제가 없었지만 고정된 시간을 보여주기 때문에 차후에 쓰레드 개념을 도입하여 1분마다 혹은 주기적으로 갱신할 수 있는 기능을 넣어줘야 할 것 같다.

또, 시간과 날짜를 표시하는 부분의 레이아웃 적용에 난해한 부분이 있었는데 서로 다른 텍스트 간에 공백 공간이 너무 커서 화면에 출력할 때 보기가 불편한 점이 있었다.

이는 IncludeFontPadding을 false 처리해서 조금이나마 해결하였다.

내일은 메인부 화면 구성을 할 계획이다.



2019.03.15


앱 메인 실행화면을 구성했다.

작동시작, 아이피 정보 변경, 환경설정, 제작정보, 앱 종료 버튼 및 연결된 아이피 주소/포트와 현재 연결 상태를 보여주는 텍스트뷰를 추가하였다.

또, 뒤로가기를 눌렀을 때 앱이 한번에 종료되는 것을 방지하기 위해 뒤로가기를 2번 눌렀을 때 앱이 종료되도록 설정하였고 기존에 구현해 놓았던 버튼부 실행화면과 Intent를 이용하여 연결하였다.

버튼부 실행화면에서는 이전에 해결하지 못한 실시간 시간 표시 기능을 스레드를 이용하여 1초에 한 번씩 시간을 갱신하도록 하였다.

메인화면에서 버튼부 실행화면과 연결하는 과정에서 NullPointerException 오류가 발생하였는데, 기존에 작성한 Button 클래스의 setContentView 타깃 레이아웃을 제대로 표기하지 않아 생긴 것으로 확인하고 수정 후 해결하였다.

또, 아이피 정보 변경 버튼을 눌렀을 때 다이얼로그가 표시되도록 하였는데, 화면을 둥글게 구성해서 그런지 뒷 배경이 나오는 현상이 있어 Dialog 클래스의 getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)) 메소드를 이용하여 해결하였다.

앞으로 WebioPi의 카메라 기능을 연결하였을 때 시간 갱신 메소드와 충돌은 없을 지를 최우선적으로 확인해야 할 것 같다.

Author

Alec J

Posted on

2019-05-04

Updated on

2021-02-09

Licensed under