Я отправляю несколько параметров, используя AsyncTask, параметры состоят из данных GPS и текста редактирования (пользовательский ввод) по электронной почте.
public class Camera extends Activity implements OnClickListener {
ImageButton ib;
Button savebutton;
static final int REQUEST_IMAGE_CAPTURE = 1;
private static final String TAG= "PostActivity";EditText email;
LocationManager locationmanager;
Location location;
private String latlng = "";
Double lat;
Double lng;
private String longitude;
private String latitude;
private String gemail = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.photo_layout);
String context = Context.LOCATION_SERVICE;
locationmanager = (LocationManager) getSystemService(context);
String provider = LocationManager.GPS_PROVIDER;
location = locationmanager.getLastKnownLocation(provider);
giveMeNewLocation(location);
TakePic();
// TakePic (), который вызывается, как только местоположение будет собрано
}
// giveMeNewLocation — метод, который дает нам значения lat и long из объекта Location
private void giveMeNewLocation(Location location) {
if (location != null) {
lat = location.getLatitude();
lng = location.getLongitude();
latitude= String.valueOf(lat);
longitude= String.valueOf(lng);
latlng = "Latitude:" + lat + "Longitude:" + lng;
Toast.makeText(this, latlng, Toast.LENGTH_LONG).show();
Log.i(TAG,"Post Locations to a Server..." +latlng);
}
}
private void TakePic() {
email = (EditText)findViewById(R.id.eText);
ib = (ImageButton) findViewById(R.id.ibTakePic);
savebutton = (Button) findViewById(R.id.bProceed);
ib.setOnClickListener(this);}
}
public class MyTask extends AsyncTask<String,Void,String>{@Override
protected String doInBackground(String... params) {
String alatlng = params[0];
String bgemail = params[1];
// TODO Auto-generated method stub
List<NameValuePair> p= new ArrayList<NameValuePair>();
p.add(new BasicNameValuePair("Locations", alatlng));
p.add(new BasicNameValuePair("Email", bgemail));// HTTP Object to send Data
HttpClient client= new DefaultHttpClient();
HttpPost post= new HttpPost("http://myipadd/Examples/LatLng.php");
try {
//Put data in the object
post.setEntity(new UrlEncodedFormEntity(p));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Execute post Which provide a response
HttpResponse responcee = null;
try {
responcee = client.execute(post);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int status=responcee.getStatusLine().getStatusCode();
String nstatus=String.valueOf(status);
Log.i("Response From Server:", nstatus);
return nstatus;
}protected void onPostExecute(String nstatus){
super.onPostExecute(nstatus);
Toast.makeText(getBaseContext(),"Post Response:" +nstatus, Toast.LENGTH_SHORT).show();
}
}/*Explicit Intent to start Data Activity,
This is just another method of using a button without setting onClickListener,//
Instead we use the Method name in the Layout Xml file by adding android:onClick="CollectData"*/
public void CollectData(View v) {gemail= email.getText().toString();new MyTask().execute(latlng,gemail);
}
}
И скрипт Php, который я использовал:
<?php$db_host = "localhost";
$db_uid = "xxxx";
$db_pass = "xxxx";$db_name = "xxxx";$db_con = mysql_connect($db_host,$db_uid,$db_pass) or die('could not connect');mysql_select_db($db_name);
$latlngdata= $_POST['Locations'];$emaildata= $_POST['Email'];
mysql_query("INSERT INTO locations(email, latlng) VALUES ('$emaildata','$latlngdata')");
?>
Задача ещё не решена.
Других решений пока нет …