DB에 위도 경도 열이 존재하고 php를 통해서 안드로이드쪽으로 json형태로 위도 경도 값을 받아옵니다. 여기까지는 별문제없이 잘되고 있습니다...
근데 받아올때 DB에서 가장 마지막값만 읽어 오더라고요. 반대로 안드로이드에서 DB로 실시간으로 위도 경도값을 넘겨주는 작업도 해야하는데 스레드 반복을 어떻게 할지 감이 안잡힙니다 ..
package org.androidtown.location;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Button;
import android.widget.EditText;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
public class ParentActivity extends AppCompatActivity {
Button button;
EditText gpsinfo;
EditText txt;
phpDown task;
ArrayList<ListItem> listItem = new ArrayList<ListItem>();
ListItem Item;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_parent);
task = new phpDown();
gpsinfo = (EditText) findViewById(R.id.gpsinfo);
txt = (EditText) findViewById(R.id.editText3);
task.execute("http://gpsserver.iptime.org/load.php");
Button button = (Button) findViewById(R.id.button6);
} //oncreate
public class ListItem {
private String[] mData;
public ListItem(String[] data) {
mData = data;
}
public ListItem(String txt1, String txt2) {
mData = new String[100];
mData[0] = txt1;
mData[1] = txt2;
}
public String[] getData() {
return mData;
}
public String getData(int index) {
return mData[index];
}
public void setData(String[] data) {
mData = data;
}
}
private class phpDown extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... urls) {
StringBuilder jsonHtml = new StringBuilder();
try {
// 연결 url 설정
URL url = new URL(urls[0]);
// 커넥션 객체 생성
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 연결되었으면.
if (conn != null) {
conn.setConnectTimeout(10000);
conn.setUseCaches(false);
// 연결되었음 코드가 리턴되면.
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
for (; ; ) {
// 웹상에 보여지는 텍스트를 라인단위로 읽어 저장.
String line = br.readLine();
if (line == null) break;
// 저장된 텍스트 라인을 jsonHtml에 붙여넣음
jsonHtml.append(line + "\n");
}
br.close();
}
conn.disconnect();
}
} catch (Exception ex) {
ex.printStackTrace();
}
return jsonHtml.toString();
}
protected void onPostExecute(final String str) {
// gpsinfo.setText(str);
String txt1;
String txt2;
try {
JSONObject root = new JSONObject(str);
JSONArray ja = root.getJSONArray("results");
for (int i = 0; i < ja.length(); i++) {
JSONObject jo = ja.getJSONObject(i);
txt1 = jo.getString("Latitude");
txt2 = jo.getString("Longitude");
listItem.add(new ListItem(txt1, txt2));
}
} catch (JSONException e) {
e.printStackTrace();
}
gpsinfo.setText(listItem.get(0).getData(0) + " " + listItem.get(0).getData(1));
} //onPostExcute
} //class main
} //Maii
doinBackground는 php에서 json형식으로 보내준 파일 읽어오는곳이고 onPostExecute 에서 레이아웃에 출력할수있게 짜진 코드인데요