2012-07-20 87 views
3

我在android中有一個應用程序,我想通過一個url(like=..mydata.php?lat=76867&long=87979)將android手機的緯度和經度發送到網絡PHP服務器。我有PHP代碼保存數據庫中的數據,如果此網址被擊中。從Android發送數據到PHP服務器

我沒有得到的是如何通過我的android手機發送經緯度到PHP服務器。

回答

0

清單需要包含

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.INTERNET" />` 

更新: 網絡連接在UI線程不再允許。然後你需要發送一個包含在AsyncTask<>中的HTTP get,它將被你的PHP後端解析和解釋。 一個例子是在http://developer.android.com/training/basics/network-ops/connecting.html

+0

我已經有緯度和經度,但在第二個答案「在單獨的線程上運行」是非常重要的??並在哪裏寫我的網址? – 2012-07-20 08:59:54

+0

查看編輯答案。如果您不希望HTTP請求和響應阻止主線程,則需要在其他線程上運行它。 – 2012-07-20 09:03:52

+0

對不起,但我沒有得到我的數據庫中的值。 – 2012-07-20 09:54:04

2

建立在@DarkXphenomenon答案,確保你有正確的權限。

// to retrieve location 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
// to retrieve location 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
// to send data 
<uses-permission android:name="android.permission.INTERNET"/> 

然後在您的java類中,您可以使用此代碼將數據發送到php文件。確保捕捉到任何異常。

String and = "&"; 

        HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://my site.com/gpsdata.php?imei="+imei+and+"lat="+lat+and+"lng="+lng+and+"alt="+alt+and+"spd="+speed); 

     try { 

      httpclient.execute(httppost); 
      Log.d(TAG, "Data sent!"); 
     } catch (ClientProtocolException e) { 
      Toast.makeText(this, 
        "Client protokol exception ", Toast.LENGTH_LONG).show(); 
     } catch (IOException e) { 
      Toast.makeText(this, 
        "IO exception " + e.getMessage(), Toast.LENGTH_LONG) 
        .show(); 
     } 

你還需要確保你的位置的變量,如經緯度是字符串,否則你會得到一些意外的錯誤。通常情況下,位置變量將是雙精度或浮點數。向雙轉換爲字符串,excecute

String Longitude = Double.toString(doubleToConvertToString); 

而且同樣是浮動的字符串

String Longitude = Float.toString(doubleToConvertToString);