Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

집요정 도비의 일기

Step 1. 음악 스트리밍 서버(Spring boot), 앱(Android)을 만들어보자. 본문

개발 일기

Step 1. 음악 스트리밍 서버(Spring boot), 앱(Android)을 만들어보자.

집요정_도비 2016. 3. 2. 12:38

0. 왜 이걸 하는가.


(1) 버스 타고 가다가 급 듣고 싶은 음악이 있는데 폰에는 없고 pc에만 있다는 것을 깨닫고 화가난 경험이 있으므로.


1. 기능 구상

*서버 :

(1) 지정된 디렉토리와 하위 디렉토리의 .mp3 파일의 리스트를 보여줄 수 있다.

(2) 지정된 디렉토리와 하위 디렉토리의 .mp3 파일의 다운로드 요청을 처리해줄 수 있다.


*안드로이드 (클라이언트) :

(1) 지정된 서버로부터 탐색 가능한 디렉토리와 .mp3 파일을 http 리퀘스트로 받아올 수 있다.

(2) 지정된 서버로부터 해당 파일을 다운로드 받거나, 스트리밍 할 수 있다.


2. 도구 및 필수 사항

*서버 : Spring Boot Application을 통해 간단하게 구현한다. 반드시 Tomcat이 깔려 있어야하고 함. IDE : STS



*클라이언트 : IDE : Android Studio


3. Http 통신 구현

*이번 편에는 간단하게 테스트만 한다. 안드로이드와 서버가 Http 리퀘스트와 리스폰스를 주고 받을 수 있는지 테스트한다.


3-1. 서버

*먼저 서버부터 구현한다. 원숭이도 쓸 수 있게 간편해진 Spring Boot을 사용한다.


Spring Starter Projects 를 만든다.



적절하게 폼을 체워준다.


Web만 골라주면 됨. DB 안쓸 계획.


컨트롤러를 집어널 패키지를 하나 만들어줌. 귀찮으면 안만들어도 됨. 어짜피 하나 이상 쓸 계획 없음.

그 후, 컨트롤러 클래스를 만들어줌. 이름은 RequestController로 함. 컨트롤러에 er이 붙을 때  l이 하난지 두갠지 기억 안나서 두개로 함.

디렉토리 구조는 이렇게 될 것임.



이제 컨트롤러를 구현함. /test 리퀘스트를 받으면 뭐든 잘 받았다고 string을 돌려주는 메소드를 짜봄.



서버 끝.


3-2. 안드로이드

*위의 서버에 리퀘스트를 보내서 받는 기능을 구현함.

*아직 ui는 만들지 않고, 단순 앱이 켜지자마자 위의 /test 리퀘스트를 하여 로그에 응답을 찍어봄.

 

먼저 안드로이드 매니페스트에 INTERNET 사용 퍼미션을 추가.



Http 통신을 주고 받기 위해 OkHttp 라이브러리를 쓰도록 함.  

File - Project Structure - 맨 밑의 app에서 가장 우측 탭의 Dependencies 선택

초록색 + 버튼을 눌러서 Library Dependencies에서 OkHttp 검색 or 밑에 리스트에 찾은 후 추가. ok누르고 잠시 기다리면 알아서 프로젝트에 추가되고 빌드됨.



Http통신을 위한 패키지 밑 추상 클래스인 HttpSender 클래스를 생성.

패키지 만들기는 본인의 취향으로 귀찮으면 안만들어도 무방. 

앞으로 모든 http 통신은 이 추상 클래스를 상속 받아서 구현될 것임.


ip는 본인의 ip를 기입하면 됨.

*서버에서 받은 값을 ui에 돌려주려면 Handler 하나를 받아서 넘겨줘야하지만, 단순 로그만 찍고 말 것이므로 아직은 생략함.

*send() 메소드에서 익명으로 AsyncTask를 쓰는 이유는 메인 쓰레드에서 네트워킹을 하면 안되기 때문.


이제 위의 추상 클래스를 상속받아서 /test 리퀘스트를 보낼 클래스를 작성함.



메인 액티비티에서 위의 클래스를 이용하여 리퀘스트를 보내는 소스 작성.



패키지는 대충 이런 느낌으로 되있을 것임.


안드로이드도 끝.


4. 테스트

4-1. (3-1)에서 작성한 스프링 서버를 구동시킴. 프로젝트 우클릭 -> run as -> Spring Boot App


대충 이런 느낌으로 시작됨.


서버가 구동되었으므로 안드로이드도 구동. 위에도 언급되었듯이, 단순한 테스트이므로 안드로이드는 기본ui에 켜지자 마자 이 서버로 리퀘스트를 보냄.


로그캣에 위와 같이 서버에서 보내온 string이 잘 찍히는 것이 확인됨.



서버에서도 request가 잘 받아졌음을 찍음.


테스트 끝


5. To Do..

다음편에선 이번편의 소스를 기반으로 서버에서 특정 디렉토리의 파일 리스트를 받아오도록 만듬.

서버는 컨트롤러에서 메소드 하나만 추가하면 되지만, 안드로이드는 본격적으로 ui에 통신에서 받아온 데이터를 반영해야하므로 핸들러의 추가 등이 있을 것.

 







 


 

Comments