Android でアプリケーションを使用しています。Android モバイルの緯度と経度を URL ( like=..mydata.php?lat=76867&long=87979
) を介して Web PHP サーバーに送信したいと考えています。このURLがヒットした場合、データベースにデータを保存するphpコードがあります。
私が得ていないのは、緯度と経度をAndroid携帯電話からPHPサーバーに送信する方法だけです。
Android でアプリケーションを使用しています。Android モバイルの緯度と経度を URL ( like=..mydata.php?lat=76867&long=87979
) を介して 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();
}
また、緯度や経度などの位置変数が文字列であることを確認する必要があります。そうしないと、予期しないエラーが発生します。通常、位置変数は double または float です。double を文字列に変換するには、次を実行します。
String Longitude = Double.toString(doubleToConvertToString);
同様に Float から String へ
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 スレッドでネットワーク接続が許可されなくなりました。AsyncTask<>
次に、PHP バックエンドによって解析および解釈される にラップされた HTTP get を発行する必要があります。例はhttp://developer.android.com/training/basics/network-ops/connecting.htmlにあります