我在 android 中有一个应用程序,我想通过 url ( like=..mydata.php?lat=76867&long=87979
) 将 android 手机的纬度和经度发送到 web PHP 服务器。如果点击此 url,我将拥有将数据保存在数据库中的 php 代码。
我没有得到的是如何通过我的android手机将纬度和经度发送到PHP服务器。
我在 android 中有一个应用程序,我想通过 url ( like=..mydata.php?lat=76867&long=87979
) 将 android 手机的纬度和经度发送到 web PHP 服务器。如果点击此 url,我将拥有将数据保存在数据库中的 php 代码。
我没有得到的是如何通过我的android手机将纬度和经度发送到PHP服务器。
在@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();
}
您还需要确保您的位置变量(例如纬度或经度)是字符串,否则您会收到一些意外错误。通常位置变量将是一个双精度或浮点数。要将双精度数转换为字符串,请执行
String Longitude = Double.toString(doubleToConvertToString);
同样是浮点数到字符串
String Longitude = Float.toString(doubleToConvertToString);
清单需要包含
<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 线程中不再允许网络连接。然后你需要发出一个 HTTP get 包裹在一个AsyncTask<>
将由你的 PHP 后端解析和解释的。一个示例位于http://developer.android.com/training/basics/network-ops/connecting.html