집요정 도비의 일기
1. Intro 일하다보면 참 통신 구현할 곳이 많음. 요즘 만드는 앱들 보면 뭘 하든 통신이 안들어가는 경우가 없기 때문임. 기존 레거시 방식 같은 경우 직관적이긴 하나 코드가 너무 길어지고 단순 노가다를 하는 감이 없지 않아 있음. 이걸 좀 어떻게 줄이는 법이 없을까하고 석달즘 전에 열심히 찾아본 결과 Retrofit2님을 영접했음. 기존 레거시 방식의 httpClient와 비교했을 때의 장단점은 아래와 같음. *장점1. REST 뿐만 아니라 파일 업로드, 다운로드 등 모든 서버콜에 대해 짧고 간결한 코드로 대응이 가능하다.2. okhttp 기반이라 심지어 더 빨라짐.3. JSON파싱을 gson파서가 알아서 해줘서 코드가 더욱 더 줄어듬.4. 콜백은 메인 쓰레드에서 돌고 통신부는 알아서 쓰레드에서 돌..
일하다보니 selector쓸 일이 은근히(사실 졸라) 많음. 디자이너가 모든 버튼류 이미지를 두 가지를 주기 때문임. 이게 버튼을 단순히 눌렀다 땟을 때를 위한 경우도 있고, 탭 버튼 아이콘 같은 경우는 계속 버튼이 눌려 있어야해서 그럼. ex) btn_send.png, btn_send_dw.png 이걸 일일히 코드로 할 수는 없는 노릇이어서 selector를 만들어야하는데 이게 또 보통 귀찮은게 아님. 여기서 그림 이름 바꾸고, 단순히 state_selected(계속 눌려있어야 하는 경우)냐 혹은 state_pressed(단순 클릭 시 이벤트)냐만 정해주면 됨. 문제는 이런게 화면당 3~4개씩 들어가고 9패치까지 들어가면 그냥 selector만드는 것도 보통 노가다가 아님. 그래서 c#으로 select..
15. 목적- 음악 스트리밍이 가능하게 한다. * How?두 가지 방법 정도를 생각하였다. 1. 파일을 전부 다운로드 한 후, 안드로이드의 파일 시스템에서 파일을 찾아서 재생한다.2. MediaPlayer 객체를 활용하여 서버의 url로 파일을 재생한다. 처음에는 조사가 부족하여 1의 방법으로 구현하였으나, 보다 클라이언트 소스가 간결한 2번을 찾게되었다. 본 포스트에서는 2번의 방법으로 구현한다. 16-1. 서버(Spring boot) 구현- 서버가 음악 파일에 대한 적절한 url을 제공할 필요가 있다. - 따라서 기존의 RequestController에 아래와 같은 메소드를 추가한다.* RequestController.java - 동작 원리는 무척 단순하다. 요청 받은 파일이 존재하면 파일을 스트림에..