Notice
Recent Posts
Recent Comments
Today
Total
05-02 00:04
Archives
관리 메뉴

Jeongchul Kim

Google Map API 이용 라이딩(거리,속도)정보 SharedPreferences 저장 웹서버의 MySQL DB 전송 - 3. DB.class 본문

Android

Google Map API 이용 라이딩(거리,속도)정보 SharedPreferences 저장 웹서버의 MySQL DB 전송 - 3. DB.class

김 정출 2016. 3. 17. 13:25


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_Manager.java

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에서 호출해봅시다.


map2Fragment.java


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을 디자인하겠습니다.





Comments