Android 发送和获取位置数据

Android 发送和获取位置数据,android,Android,我有一个应用程序,它的当前位置显示在地图上。现在我想将该位置发送到本地主机服务器,因此我已经完成了这项工作 @Override public void onMapReady(GoogleMap googleMap) { Toast.makeText(this, "fffff", Toast.LENGTH_LONG).show(); mMap = googleMap; try { // String bp=lm.getBestProvider(new

我有一个应用程序,它的当前位置显示在地图上。现在我想将该位置发送到本地主机服务器,因此我已经完成了这项工作

@Override
public void onMapReady(GoogleMap googleMap) {
    Toast.makeText(this, "fffff", Toast.LENGTH_LONG).show();
    mMap = googleMap;

    try {


        // String bp=lm.getBestProvider(new Criteria(),true);


        String bestprovider = lm.getBestProvider(new Criteria(), true);
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            return;
        }
        Location l = lm.getLastKnownLocation(bestprovider);


        double lat = l.getLatitude();
        double lng = l.getLongitude();


        Toast.makeText(this, "" + lat + lng, Toast.LENGTH_LONG).show();
        LatLng ll = new LatLng(lat, lng);

        Geocoder gc = new Geocoder(this);
        List<Address> Al = gc.getFromLocation(lat, lng, 1);
          //send to  server

        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpGet htget = new HttpGet("http://10.0.2.2/loc.php?lat="+la+"&lng="+lo);

        try {
            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(htget);
            String resp = response.getStatusLine().toString();
            Toast.makeText(this, resp, Toast.LENGTH_LONG).show();


        } catch (ClientProtocolException e) {
            Toast.makeText(this, "Error", Toast.LENGTH_LONG).show();
        } catch (IOException e) {
            Toast.makeText(this, "Error", Toast.LENGTH_LONG).show();
        }








        String result;
        result = Al.get(0).getAddressLine(0) + ", " + Al.get(0).getAddressLine(1) + ", " + Al.get(0).getAddressLine(2) + ", " + Al.get(0).getAddressLine(3) + ", " + "lat=" + Al.get(0).getLatitude() + ", " + "lng=" + Al.get(0).getLongitude();
        Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();


        mMap.addMarker(new MarkerOptions().position(ll).draggable(true).title("Current Location"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(ll));
        mMap.animateCamera(CameraUpdateFactory.zoomTo(15));


    } catch (Exception e) {


        Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();

    }
}
@覆盖
4月1日公开作废(谷歌地图谷歌地图){
Toast.makeText(这是“fffff”,Toast.LENGTH_LONG).show();
mMap=谷歌地图;
试一试{
//字符串bp=lm.getBestProvider(新条件(),true);
字符串bestprovider=lm.getBestProvider(新条件(),true);
if(ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS\u FINE\u LOCATION)!=PackageManager.permission\u已授予和&ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS\u LOCATION)!=PackageManager.permission\u已授予){
返回;
}
位置l=lm.getLastKnownLocation(最佳提供者);
双纬度=l.getLatitude();
双lng=l.Get经度();
Toast.makeText(此“+lat+lng,Toast.LENGTH_ulong.show();
LatLng ll=新LatLng(lat,lng);
地理编码器gc=新地理编码器(本);
列表Al=gc.getFromLocation(纬度,液化天然气,1);
//发送到服务器
//创建一个新的HttpClient和Post头
HttpClient HttpClient=新的DefaultHttpClient();
HttpGet HttpGet=新的HttpGet(“http://10.0.2.2/loc.php?lat=“+la+”&lng=“+lo”);
试一试{
//执行HTTP Post请求
HttpResponse response=httpclient.execute(htget);
String resp=response.getStatusLine().toString();
Toast.makeText(this,resp,Toast.LENGTH_LONG).show();
}捕获(客户端协议例外e){
Toast.makeText(此“错误”,Toast.LENGTH_LONG).show();
}捕获(IOE异常){
Toast.makeText(此“错误”,Toast.LENGTH_LONG).show();
}
字符串结果;
结果=Al.get(0).getAddressLine(0)+“,+Al.get(0).getAddressLine(1)+”,“+Al.get(0).getAddressLine(2)+”,“+Al.get(0).getAddressLine(3)+”,“+”lat=“+Al.get(0).getLatitude(),“+”lng=“+Al.get(0).getLatitude()”;
Toast.makeText(getApplicationContext(),result,Toast.LENGTH_LONG.show();
mMap.addMarker(新的MarkerOptions().position(ll).draggable(true).title(“当前位置”));
mMap.moveCamera(CameraUpdateFactory.newLatLng(ll));
mMap.animateCamera(CameraUpdateFactory.zoomTo(15));
}捕获(例外e){
Toast.makeText(例如toString(),Toast.LENGTH_LONG).show();
}
}
我正在使用这个php文件向数据库发送数据。我正在用html测试这个php,它给了我一个无法解析的错误

<?php
$lat=$_GET['lat'];
$lng=$_GET['lng'];

$com=$_mysql("localhost","root","","images");
$sql="insert into MyLoc values('$lat','$lng');
$_mysql($com,$sql);
 <?php

您有一个
NetworkOnMainThreadException
。在IDE的LogCat中清晰显示。首先寻找它,因为如果你马上提到它,它可以为你和我们节省很多时间。您必须将http网络代码放在异步任务或线程中。

那么什么不起作用?什么有效?有错误吗?有例外吗?“fffff”吐司是否显示?还有什么?还有哪些祝酒词?你们真的在模拟器上测试这个吗?是的,我在模拟器上测试过,但它不工作。我还试着通过html文件和这个php在数据库中插入数据,但它不起作用。我猜这个php文件中有错误。是的,正在显示ffff toast。如果你需要帮助,你应该告诉更多。从回答我所有的问题开始。我不知道你为什么不回答他们。