2011301011_길준영(141007)

Report
캡스톤설계2
버스 환승 Application
2011301011 길준영
2014. 10. 7
CONTENTS
1. 개발 목적
2. 변경 & 추가 기능
3. 향후 계획
1. 개발 목적
버스 환승을 할 때, 환승하는 정류장에서
타고있는 버스와 환승해야 할 버스의 도착시간에
대한 정보를 한눈에 볼 수 있도록 구현하고자 함
2. 변경 & 추가 기능

DB 재구축

정류장 이름 표시

자체적인 검색 구현
- 버스 검색 : 지역, 기점과 종점 이름과 번호, 버스 회사 및 전화번호
- 정류장 검색 : 정류장 이름과 번호, 지역, 정류장 위치 표시

경로명 설정

DB 재구축
기존에는 정류장번호, ID와 버스번호, ID로만 이루어진 CSV파일을 읽어 App내에서 DB 생성
-> 문제점 : 파일을 읽어 DB로 생성하는 과정이 10분 이상 걸림
정류장 이름이 아닌 번호를 알아야 하며, 버스 및 정류장 검색을 할 수 없음
타 지역에 같은 버스 번호 또는 정류장이 존재할 가능성
-> 여러 문제점을 해결하기 위해 DB를 재구축
1. API 인증키를 이용하여 텍스트파일로 제공되는 버스기반정보를 다운받아 활용
API 인증을 통해 텍스트파일 다운경로 제공
- 지역정보, 버스노선, 버스경로 등 5개 파일
다운 받은 텍스트 파일 일부
2. 다운받은 텍스트파일을 엑셀의 데이터 나누기를 통해 CSV파일로 변환
행 구분기호(^)를 분리한 형태
열 구분기호(|)를 분리한 형태
분리 후 CSV파일로 변환
3. 변환된 CSV파일을 SQLite Manager를 통해 DB구축
AREA
ROUTE
ROUTE
STATION
STATION
AREA : 경기도 시,군 이름과 지역 ID(33행)
ROUTE : 버스노선의 이름, ID, 기점 및 종점 정류장 운수회사명 등(약 2300행)
ROUTESTATION : 버스노선이 지나가는 정류장들의 정보(약 15만 3천행)
STATION : 정류장이름, x,y좌표 지역명 등(약 3만행)
4. 구축된 DB를 프로젝트에 넣은 후 App 최초 실행시 DB복사 후 사용
public void setDB() {
File folder = new File(ROOT_DIR);
if (folder.exists()) {
} else {
folder.mkdirs(); //폴더생성
}
AssetManager assetManager = getResources().getAssets();
File outfile = new File(ROOT_DIR + DB_NAME); //위치할 경로
InputStream is = null;
FileOutputStream fo = null;
long filesize = 0;
try {
is = assetManager.open(DB_NAME, AssetManager.ACCESS_BUFFER); //asset 폴더에서 복사할 DB 지정
filesize = is.available();
// 파일이 없거나 패키지 폴더에 설치된 DB파일이 포함된 DB파일 보다 크기가 같지않을 경우 DB파일을 덮어 씀.
if (outfile.length() <= 0) { //db이동
byte[] tempdata = new byte[(int) filesize];
is.read(tempdata);
is.close();
outfile.createNewFile();
fo = new FileOutputStream(outfile);
fo.write(tempdata);
fo.close();
} else {
} catch (IOException e) {
}
}

정류장 이름 표시
시작화면인 MainActivity에서 정류장번호, ID와 버스번호, ID로만 이루어진 DB로
인해 정류장이름을 확인 할 수 없었음
-> DB를 재구축함으로써 정류장이름 표시 가능

자체적인 검색 구현
버스노선 또는 정류장을 검색하는 SearchActivity를 App내에서 자체적으로 검색
할 수 있도록 구현
정류장이름을 입력한 후 검색하면 웹 페
이지로 이동
버스번호 또는 정류장이름을 검색하면 App내에서 검색
결과를 볼 수 있음
검색 기능 구현을 위해 SearchActivity 변경 및 새로운 Activity 추가
 추가된 Activity
•
•
BusActivity : SearchActivity에서 버스 검색 결과를 보인 리
스트뷰에서 선택된 아이템을 보이는 Activity.
ROUTE테이블의 _id를 받은 후 _id를 통해 버스정보 표시
StationActivity : BusActivity와 같은 기능
SATATION테이블의 _id를 받음
 STationActivity에서 위치를 표시하기 위해 사용하는 파
일 <- NAVER 지도 API활용
•
•
•
•
NMapCalloutBasicOverlay
NMapCalloutCustomOldOverlay
NMapPOIflagType
NMapViewerResourceProvider
• 버스검색
‘130’이 포함된 버스의 검색 결
과가 리스트뷰를 통해 버스이름과
지역을 표시하여 제공
1303버스가 통과하는 지역, 기점 및 종점
정류장 이름과 번호, 버스회사명과 번호
를 확인할 수 있음
• 정류장검색
‘삼성아파트’가 포함된 정류장의 검색
결과가 리스트뷰를 통해 정류장이름과
해당지역을 표시하여 제공
한가람삼성아파트 정류장의 정류장번호
와 지역 표시 및 정류장 위치를 지도로
표시
SearchActivity에서 StationActivity로 이동할 때 받은 STATION테이블의 _id를 통
해 X,Y 좌표를 알 수 있음. 지도API를 활용하여 해당 정류장을 지도에 표시
126.9564333, 37.4000333

경로명 설정
기존에는 경로목록에서 각 리스트 아이템은 출발정류장의 번호로 표시되었다. 따라서 어
떠한 경로로 가는지 알 수가 없었다. 따라서 경로명을 설정할 수 있도록 변경하였다.
3. 향후 계획
•
버스 실시간 위치 검색
버스 검색을 했을 때 해당 버스의 정보 뿐만 아니라 어느 정류장에 위치
하고 있는지 확인할 수 있도록 함
•
버스회사 전화걸기 기능
버스 검색결과를 보는 Activity에서 버스회사 전화번호를 터치하면 전화걸
기 화면으로 이동하도록 함
•
경로추가 Activity 보완
경로를 추가할 때, 현재까지는 버스정류장번호와 버스번호를 알아야 한
다. DB가 재구축 되었으므로 해당 Activity에서도 검색하여 설정할 수 있
도록 할 예정
Q
&
A
감사합니다.

similar documents