private void doPost(MKPoiInfo signpoi2) {
String name = signpoi2.name;
GeoPoint p = signpoi2.pt;
int x = p.getLatitudeE6();
int y = p.getLongitudeE6();
if (mPostTask != null
&& mPostTask.getStatus() == GenericTask.Status.RUNNING) {
return;
} else {
mPostTask = new PostTask();
mPostTask.setListener(mPostTaskListener);
TaskParams params = new TaskParams();
params.put("name", name);
params.put("x", String.valueOf(x));
params.put("y", String.valueOf(y));
mPostTask.execute(params);
}
}
private void onPostBegin() {
// disablePost();
dialog = ProgressDialog.show(this, "", "正在提交,请稍候!", true);
dialog.setCancelable(true);
}
private void onPostSuccess() {
dialog.dismiss();
// updateProgress("");
// shout_poto_imageview.setImageBitmap(null);
Toast.makeText(this, "签到成功!", Toast.LENGTH_SHORT).show();
}
private void onPostFailure(String reason) {
Toast.makeText(this, reason, Toast.LENGTH_SHORT).show();
if (dialog != null) {
dialog.dismiss();
}
// enablePost();
}
private class PostTask extends GenericTask {
private String msg = "发送失败,可能遇到网络故障!";
public String getMsg() {
return msg;
}
@Override
protected TaskResult _doInBackground(TaskParams... params) {
TaskParams param = params[0];
publishProgress("正在提交,请稍候...");
try {
String x = param.getString("x");
String y = param.getString("y");
String name = param.getString("name");
String res = GalaApplication.mApi.post(name, x, y);
} catch (HttpException e) {
Log.e(TAG, e.getMessage(), e);
Throwable cause = e.getCause(); // Maybe null
if (cause == null) {
if (e instanceof HttpRefusedException) {
msg = e.getMessage();
}else if(e instanceof HttpServerException){
msg=e.getMessage();
}
} else if (cause instanceof HttpAuthException) {
// Invalid userName/password
msg = ((HttpRefusedException) cause).getError()
.getMessage();
} else {
msg = getString(R.string.login_status_network_or_connection_error);
}
publishProgress(msg);
return TaskResult.FAILED;
}
return TaskResult.OK;
}
}
private TaskListener mPostTaskListener = new TaskAdapter() {
@Override
public void onPreExecute(GenericTask task) {
onPostBegin();
}
@Override
public void onProgressUpdate(GenericTask task, Object param) {
// updateProgress((String) param);
}
@Override
public void onPostExecute(GenericTask task, TaskResult result) {
if (result == TaskResult.OK) {
onPostSuccess();
} else {
onPostFailure(((PostTask) task).getMsg());
}
}
@Override
public String getName() {
// TODO Auto-generated method stub
return "Login";
}
};
private GenericTask mPostTask;
private ProgressDialog dialog;