Witam, jest to mój pierwszy wpis na forum.
Na wstępie powiem, że przerobiłem sporo tutoriali związanych z programowaniem na androida. Większość linków w google mam już na fioletowo
a nadal nie znalazłem rozwiązania.
Ogólnie chcę napisać prostą aplikację, która będzie wysyłała pozycję GPS do bazy danych MySQL co kilka sekund aktualizując rekord w bazie
po ID, który również będzie przesyłany osobnym parametrem. Numer ID będzie brany z pliku config, który znajduje się w katalogu aplikacji.
O ile umiem już tworzyć plik w Java, sprawdzać czy plik istnieje, dodawać wartość do pliku z pola tekstowego o tyle nie wiem jak te dane wysłać na serwer.
Znalazłem bardzo dużo przykładów, między innymi coś takiego:
public void http() throws Exception {
try {
URL url = new URL("http://10.0.2.2/data.php");
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setUseCaches(false);
httpCon.setRequestMethod("GET");
httpCon.setReadTimeout(5000);
httpCon.setConnectTimeout(3000);
} catch (Exception e) {
e.printStackTrace();
}
}
Powyższą klasę uruchamiam tak:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
http();
} catch (Exception e) {
e.printStackTrace();
}
}
Czytałem też, że po ustawieniu parametrów połączenia należy użyćDataOutputStream ale żeby upewnić się czy cokolwiek działa, stworzyłem plik PHP,
który po uruchomieniu tworzy plik z datą wykonania. Po wejściu na stronę (lokalny serwer WWW - 127.0.0.1) do pliku dopisywany jest nowy rekord z datą,
więc po stronie serwera WWW wszystko działa.
Po uruchomieniu aplikacji na Androidzie dzieje się coś dziwnego. Raz na jakiś czas w pliku po stronie serwera pojawi się nowy rekord z datą. Nie wiem od
czego jest to zależne. Kombinowałem z zapytaniami asynchronicznymi ale one w ogóle mi nie działają.
Proszę o pomoc, ponieważ drugi bity dzień nie mogę sobie z tym poradzić.