Google Map API 이용 라이딩(거리,속도)정보 SharedPreferences 저장 웹서버의 MySQL DB 전송 - 3. DB.class http://jungchul.tistory.com/310 Google Map Fragment 만들기 Google Map API 이용 라이딩(거리,속도)정보 SharedPreferences 저장 웹서버의 MySQL DB 전송 - 1. XML Google Map API 이용 라이딩(거리,속도)정보 SharedPreferences 저장 웹서버의 MySQL DB 전송 - 2. java.class 7. DB 클래스 수정 db로 전송할 변수를 채택해봅시다. 사용자 아이디( 키 값 으로) 거리 > 시작 지점(위도,경도), 종료 지점(위도,경도), 총 라이딩 거리 -> 5 시간 > 시작 시간, 종료 시간, 총 라이딩 시간 -> 3 속력 >평균 속도 -> 1 총 개수가 10 개 입니다. /** DB 전송 부분 * 전송할 것 : 유저아이디, 총 라이딩거리, 총 라이딩 시간, 시작 시간, 종료시간, * 시작 위도, 시작 경도, 종료 위도, 종료 경도, 평균 속도*/ /* -- DB 라이딩에 저장할 데이터 */ private String user_id; // 유저 아이디 private String r_total_distance; // 총 라이딩 거리 private String r_total_time; // 총 라이딩 시간 private String r_start_time; // 시작 시간 private String r_finish_time; // 종료 시간 private String r_start_lat; // 시작 위도 private String r_start_long; // 시작 경도 private String r_finish_lat; // 종료 위도 private String r_finish_long; // 종료 경도 위의 선언된 순서대로 명령문에 넣고 php 파일로 보낼 것입니다. 웹 서버와 통신을 위해 php 파일의 주소를 입력합니다. private final String riding_user_information_UrlPath = "http://smartwheel.kr/user_riding/riding_user_information.php"; map2Fragment에서 직접적으로 호출할 메소드 입니다. /* Google Map 라이딩 서버 전송 부분 */ /** DB 전송 부분 * 전송할 것 : 총 라이딩거리, 총 라이딩 시간, 시작 시간, 종료시간, * 시작 위도, 시작 경도, 종료 위도, 종료 경도, 평균 속도 */ public ArrayList<String> riding_user_information(String user_id, String r_total_distance, String r_total_time, String r_start_time, String r_finish_time, String r_start_lat, String r_start_long, String r_finish_lat, String r_finish_long) { urlPath = riding_user_information_UrlPath; this.user_id = user_id; this.r_total_distance = r_total_distance; this.r_total_time = r_total_time; this.r_start_time = r_start_time; this.r_finish_time = r_finish_time; this.r_start_lat = r_start_lat; this.r_start_long = r_start_long; this.r_finish_lat = r_finish_lat; this.r_finish_long = r_finish_long; try { results = new RidingPostUser().execute().get(); } catch ( InterruptedException e ) { e.printStackTrace(); } catch ( ExecutionException e ) { e.printStackTrace(); } return results; } 위에서 RidingPostUser() 클래스를 호출합니다. 다음은 웹 서버와 POST로 통신을 가진 RidingPostUser() 클래스 입니다. /* -- 라이딩 정보를 서버에 전송한다 */ class RidingPostUser extends AsyncTask<Void, Void, ArrayList<String>> { @Override protected ArrayList<String> doInBackground(Void... voids) { // TODO Auto-generated method try { URL url = new URL(urlPath); // Set url HttpURLConnection con = (HttpURLConnection) url.openConnection(); // Conncetcion Open con.setDoInput(true); // Available Write con.setDoOutput(true); // Available Read con.setUseCaches(false); // No cash con.setRequestMethod("POST"); // Post /** DB 전송 부분 * 전송할 것 : 총 라이딩거리, 총 라이딩 시간, 시작 시간, 종료시간, * 시작 위도, 시작 경도, 종료 위도, 종료 경도, 평균 속도 * 구분자는 & 순서대로 전송*/ String param="user_id="+user_id+"&r_total_distance="+r_total_distance+"&r_total_time="+r_total_time+ "&r_start_time="+r_start_time+"&r_finish_time="+r_finish_time+"&r_start_lat="+r_start_lat+ "&r_start_long="+r_start_long+"&r_finish_lat="+r_finish_lat+"&r_finish_long="+r_finish_long; OutputStream outputStream = con.getOutputStream(); outputStream.write(param.getBytes()); outputStream.flush(); outputStream.close(); BufferedReader rd = null; ArrayList<String> qResults = new ArrayList<String>(); rd = new BufferedReader(new InputStreamReader(con.getInputStream(),"UTF-8")); String line = ""; while((line = rd.readLine()) != null) { Log.d("BufferedReader:", line); if(line != null) { qResults.add(line); } } return qResults; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } protected void onPostExecute(ArrayList<String> qResults) { super.onPostExecute(qResults); } } 자 이제 DB매니저를 손을 봤으니, map2Framgent에서 호출해봅시다. btn_timer_finish.setOnClickListener 리스너 부분에서 SharedPreferences로 TOTAL 데이터 저장한 이후, ProgressDialog 실행 전으로 하면 되겠습니다. /* SharedPreferences의 TOTAL 데이터를 저정한다.*/ editor.putFloat("TOTAL_DIST", (float) sum_dist + total_dist); editor.putInt("TOTAL_TIME", timer + total_time); editor.putInt("TOTAL_POINT",(int)Math.round(sum_dist)+total_point); editor.commit(); /** DB 전송 부분 * 전송할 것 : 총 라이딩거리, 총 라이딩 시간, 시작 시간, 종료시간, * 시작 위도, 시작 경도, 종료 위도, 종료 경도, 평균 속도*/ dbmanger.riding_user_information(str_user_id,String.valueOf(sum_dist), String.valueOf(timer),s_time,f_time,s_lat,s_long, f_lat,f_long); /**/ /* ProgressDialog 실행 */ mProgressDialog.setMessage("주행 종료 ..."); handler = new Handler(); mProgressDialog.setCancelable(false); mProgressDialog.show(); handler.postDelayed(new Runnable() { @Override public void run() { if (mProgressDialog != null && mProgressDialog.isShowing()) { mProgressDialog.dismiss(); } } }, 1500); 자 안드로이드에서의 작업은 끝났습니다. 다음 포스트에서는 php문 밑 phpMyAdmin에서 MySQL을 디자인하겠습니다.이전 포스트 필히 참고!
DB_Manager.java
map2Fragment.java
Jeongchul Kim