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

2019.03.26


환경설정 다이얼로그 부분을 마무리지었다.

데이터 자동 저장 기능 On/Off 버튼과 데이터 저장 주기에 대한 기능을 활성화시키고 환경설정 다이얼로그 내 일부 UI를 수정하였다.

이것 이외에는 부가적인 일들로 시간을 보냈고 이번 주 기간 동안에는 조이스틱을 이용한 화면을 구성하는 데 몰두할 계획이다.

데이터 저장 주기 선택 방식을 TextView 버튼 방식으로 설정해두었고 단위를 선택할 때마다 그 숫자 혹은 글자의 색깔을 변경하여 선택하였다는 표시를 확실히 확인할 수 있게 하였다.

SetTextColor(Color.parseColor) 메소드로 색상 변경을 시도하는 도중 문제 하나가 발생했는데 font-family에 해당하는 설정 메소드 Java 클래스 파일에 따로 존재하지 않아서 폰트 스타일에 대한 xml을 새로 만들고 setTextAppearance 메소드를 이용하여 필요한 경우마다 폰트 스타일을 변경하도록 하였다.

또, 다이얼로그 생성 시 EditText에 자동으로 포커싱 되는 문제가 있었는데 그 부분은 처음에 최상위 레이아웃에 포커스를 줌으로서 문제를 해결하기도 했지만 Visibility를 이용하여 사라지고 나타나게 하는 것이 보기에 더 좋은 것 같아 그렇게 코드를 작성했다.

대부분의 화면들이 완성되면 안드로이드 SQLiteDatabase를 이용하여 설정 값들을 저장할 계획이다.



자세히 보기

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

2019.03.19


아이피 정보 변경 다이얼로그의 기능을 1차적으로 구현하였다.

메인 화면에서 MRM이 서버와 잘 연결되어 있는지 확인하기 위해 연결 상태를 표시해주는 텍스트뷰를 추가했었는데 그 위에 현재 설정한 아이피 주소와 포트번호 정보를 보여주는 텍스트뷰를 하나 더 추가하여 메인화면에서 즉각적으로 정보를 확인할 수 있도록 하였다.

또, 조이스틱부 화면을 설정하기 위해 기본적인 개념을 공부하였는데 생각보다 복잡한 내용으로 구성되어 있었다.

기존의 View는 onDraw 메소드를 이용하여 시스템에서 화면 그리기를 하게 되어 있는데 이처럼 움직임이 많을 수 있는 View 같은 경우에는 SurfaceView를 사용해야만 원하는 시점에 바로 화면에 그릴 수 있다고 해서 조이스틱을 비롯해 나중에 카메라 화면을 표시할 때도 이 기능을 연구해서 사용해보아야겠다.

우선, 오늘 아이피 정보 변경 다이얼로그의 기능을 구현하면서 EditText와 관련한 문제들을 직면했는데 아이피 주소와 포트번호를 입력하지 않은 경우 또는 아이피 주소 형식이 잘못된 경우에 대한 예외처리를 해야 했다.

입력하지 않은 경우를 제외하고는 숫자와 온점(.)만을 입력해야만 하는데 온점의 개수와 위치 등을 파악해야 하는 경우도 있어서 이 부분은 중요하다기보다는 선택적인 부분이라 나중에 많은 부분이 완료되면 그 때 추가하는 걸로 해야겠다.

또, 엔터키 방지와 int의 최대 표현 길이를 넘지 않도록 SingleLine과 MaxLength를 제한하였다.

마지막으로, 조이스틱 UI를 연구하는 부분에 있어서 직접 SurfaceView 위에 하나부터 열까지 다 그리는 방식도 있겠지만 오픈소스를 이용하는 방법도 있는 것 같아 어떤 방법을 쓰는 것이 좋을지 고려해봐야 할 것 같다.

자세히 보기

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

2019.03.12


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

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

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

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

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

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

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

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

자세히 보기

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

2019.03.05


로뎀기술에 첫 출근하여 연구하고자 하는 WebioPi를 이용한 메카넘 휠 제어 설계에 관한 기초적인 계획을 수립하였다.

라즈베리파이 핀맵, 통신규격 등 보드와 회로에 관련된 기초 개념이 부족하여 대표님께서 직접 라즈베리파이 보드를 보여주시면서 앞으로의 연구를 위해 전반적으로 흐름을 어떻게 잡아야 할 지 설명해주셨다.

하드웨어 관련 강의를 많이 듣지 않아서 처음 라즈베리파이 보드판을 접해보았는데 상당히 복잡한 구조로 이루어져 있어 이 안에 포함되어 있는 다양한 기능들과 통신규격들에 관한 개념 정립을 우선시 해야할 것 같다고 하셨다.

보드에 관한 기초적인 개념들을 정립하기 위해서 자료조사를 먼저 실시한 이후에 어느 정도 정리가 되면 만들고자 하는 제품의 설계도를 제대로 설계하고자 한다. 같이 실습을 받는 팀원들과 역할을 분담하여 조사를 하기로 했기 때문에 내일까지 보드에 연결되는 파워, 배터리와의 작동 방식들을 조사하고 의견을 나누어 볼 계획이다.



2019.03.06


어제 부족했던 라즈베리파이 보드와 전원 공급, 배터리, 컨버터 등과의 관계에 대한 개념을 조사하고 파워포인트로 정리한 내용을 실습시간 내내 추가적으로 보충해나갔다.

자세히 보기