我是Android应用程序开发的新手,我想通过互联网将三个参数Latitude,Longitude和Bimari(我在下面的代码中提到)发送到phpMyAdmin服务器。问题是这两个参数被错误地发送到服务器端,即Latitude = 0.0 Longitude = 0.0并且只有正确显示Bimari。任何人都可以告诉我为什么在服务器上发送的纬度和经度不正确?我已经搜索了很多并且发现了AsyncTask但是在我的情况下无法理解如何实现它。谢谢很多阅读!
MainActivity.java如下: -
public final static String EXTRA_MESSAGE = "com.example.sushma.myfirstapp.MESSAGE";
String nn, nn1, nn2, nn3, nn4, nn5, nnf;
String sss1, sss2;
String s;
double lat, lng;
LocationManager lm;
TextView lt, ln;
String provider;
Location l;
private View view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
Criteria c = new Criteria();
provider = lm.getBestProvider(c, false);
l = lm.getLastKnownLocation(provider);
if (l != null) {
lng = l.getLongitude();
lat = l.getLatitude();
} else {
System.out.println("No lat/long");
}
{
LinearLayout l1 = new LinearLayout(this);
l1.setBackgroundResource(R.drawable.ambulance);
setContentView(R.layout.activity_main);
}
}
public void ongobuttonclick(View view) {
this.view = view;
Spinner sp = (Spinner) findViewById(R.id.problems);
s = sp.getSelectedItem().toString();
sss1 = String.valueOf(lng);
sss2 = String.valueOf(lat);
nn = "http://192.168.2.8/tech/new_predict.php?Latitude=";
nn1 = sss2;
nn2 = "&Longitude=";
nn3 = sss1;
nn4 = "&Bimari=";
nn5 = s;
nnf = nn + nn1 + nn2 + nn3 + nn4 + nn5;
HttpClient httpclient = new DefaultHttpClient();
HttpPost httPost = new HttpPost(nnf);
try
{
httpclient.execute(httPost);
} catch (IOException e)
{
e.printStackTrace();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
我服务器上的输出: -
纬度经度Bimari 0.0 0.0肺(按照旋转器选择的bimari)
手机上的Android版本是2.3.6。
如果你想我也可以添加我的logcat。
答案 0 :(得分:0)
您的代码有两个问题:
检查是否实际设置了lat和lng。仅当您的设备检测到gps信号时才会设置这些值,这在室内自然会出现问题。否则,它们将保持初始化状态 - 使用0.0。
确保使用适当的HTTP方法。您的代码建议使用httpget,您应该将参数放在帖子中,如下所示:
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("latitude", lat);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
希望这有帮助。