Android onLocationChanged内容应该是什么

Android onLocationChanged内容应该是什么,android,android-studio,gps,android-pendingintent,Android,Android Studio,Gps,Android Pendingintent,我知道这个问题在SO中被问了很多次,我试着关注20个网页的内容。。 等…等…页 基本上我的代码是Androidhive.info 我的问题是-在log cat中,它显示了位置,但没有保存在我的数据库中 我在服务器上有一个php文件,我在点击按钮时通过httppost调用它。我的座右铭是 1.单击按钮时,应发送此任务已完成的位置 2.应用程序应在后台运行,并在时间间隔内发送位置详细信息任务待定 正如中所建议的,我已经扩展了服务,但我没有在这里使用任何报警管理器或作业调度程序 这使我的代码变得笨拙

我知道这个问题在SO中被问了很多次,我试着关注20个网页的内容。。 等…等…页

基本上我的代码是Androidhive.info

我的问题是-在log cat中,它显示了位置,但没有保存在我的数据库中

我在服务器上有一个php文件,我在点击按钮时通过httppost调用它。我的座右铭是

1.单击按钮时,应发送此任务已完成的位置

2.应用程序应在后台运行,并在时间间隔内发送位置详细信息任务待定

正如中所建议的,我已经扩展了服务,但我没有在这里使用任何报警管理器或作业调度程序

这使我的代码变得笨拙

所以我的问题是,应该用onLocationchanged方法编写什么代码,这样每当位置发生变化时,它就会向服务器发送数据。该程序每n分钟运行一次

代码片段::

1.GPSTracker.java

public class GPSTracker extends  Service implements LocationListener
{
statements;
} 
public void onLocationChanged(Location location)
{
    latitude = location.getLatitude();
    longitude = location.getLongitude();
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,0, this); 
    Log.e("onLocationChanged",Double.toString(latitude));
    Log.e("onLocationChanged",Double.toString(longitude));
}
2.GPSTracker.java中的某些部分

public class GPSTracker extends  Service implements LocationListener
{
statements;
} 
public void onLocationChanged(Location location)
{
    latitude = location.getLatitude();
    longitude = location.getLongitude();
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,0, this); 
    Log.e("onLocationChanged",Double.toString(latitude));
    Log.e("onLocationChanged",Double.toString(longitude));
}
3.MainActivity.java

btnShowLocation.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View arg0)
    {
        new LongOperation().execute();
    }
}
private class LongOperation  extends AsyncTask<String, Void, Void>
{
protected void onPreExecute()
{
}
 protected Void doInBackground(String... urls)
        {
            ArrayList<NameValuePair> paramss = new ArrayList<NameValuePair>();
            paramss.add(new BasicNameValuePair("latti", latti));
            paramss.add(new BasicNameValuePair("longi", longi));

            try
            {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http:///insertData.php");
                httppost.setEntity(new UrlEncodedFormEntity(paramss));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
                Log.e("pass 1", "connection success ");
            }
            catch(Exception e)
            {
                Log.e("Fail 1", e.toString());
                Toast.makeText(getApplicationContext(), "Invalid IP Address",
                        Toast.LENGTH_LONG).show();
            }

            try
            {
                BufferedReader reader = new BufferedReader
                        (new InputStreamReader(is,"iso-8859-1"),8);
                StringBuilder sb = new StringBuilder();
                while ((line = reader.readLine()) != null)
                {
                    sb.append(line + "\n");
                }
                is.close();
                result = sb.toString();
                Log.e("pass 2", "connection success ");
            }
            catch(Exception e)
            {
                Log.e("Fail 2", e.toString());
            }

            try
            {
                JSONObject json_data = new JSONObject(result);
                code=(json_data.getInt("code"));


                if(code==1)
                {
                    FLAG=1;
                }
                else
                {
                    FLAG=0;
                }
            }

            catch(Exception e)
            {
                Log.e("Fail 3", e.toString());
            }
            return null;
          }
        }
4.MainActivity.java

btnShowLocation.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View arg0)
    {
        new LongOperation().execute();
    }
}
private class LongOperation  extends AsyncTask<String, Void, Void>
{
protected void onPreExecute()
{
}
 protected Void doInBackground(String... urls)
        {
            ArrayList<NameValuePair> paramss = new ArrayList<NameValuePair>();
            paramss.add(new BasicNameValuePair("latti", latti));
            paramss.add(new BasicNameValuePair("longi", longi));

            try
            {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http:///insertData.php");
                httppost.setEntity(new UrlEncodedFormEntity(paramss));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
                Log.e("pass 1", "connection success ");
            }
            catch(Exception e)
            {
                Log.e("Fail 1", e.toString());
                Toast.makeText(getApplicationContext(), "Invalid IP Address",
                        Toast.LENGTH_LONG).show();
            }

            try
            {
                BufferedReader reader = new BufferedReader
                        (new InputStreamReader(is,"iso-8859-1"),8);
                StringBuilder sb = new StringBuilder();
                while ((line = reader.readLine()) != null)
                {
                    sb.append(line + "\n");
                }
                is.close();
                result = sb.toString();
                Log.e("pass 2", "connection success ");
            }
            catch(Exception e)
            {
                Log.e("Fail 2", e.toString());
            }

            try
            {
                JSONObject json_data = new JSONObject(result);
                code=(json_data.getInt("code"));


                if(code==1)
                {
                    FLAG=1;
                }
                else
                {
                    FLAG=0;
                }
            }

            catch(Exception e)
            {
                Log.e("Fail 3", e.toString());
            }
            return null;
          }
        }
每分钟它都会在日志中给我位置更新。但这些数据不会发送到数据库

我已经在doInBackground中编写了http调用,因此控件不会传递给该方法…它再也不会被调用

编辑1

当我使用pending intent时,此屏幕是输出,即使我的GPS设置已启用

新增代码::

public Location getLocation()
    {
        try
        {
            intent = new Intent("com.example.dotweb.mylocation");
            pi = PendingIntent.getBroadcast(getApplicationContext(),0, intent, 0);

            locationManager = (LocationManager) mContext

            isGPSEnabled = locationManager
                    .isProviderEnabled(LocationManager.GPS_PROVIDER);

            isNetworkEnabled = locationManager
                    .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

            if (!isGPSEnabled && !isNetworkEnabled) {
            } else {
                this.canGetLocation = true;
                if (isNetworkEnabled)
                {
                    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,60000,0, this);
                    Log.d("Network", "Network");
                    if (locationManager != null)
                    {
                        location = locationManager
                                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                        if (location != null) {
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                        }
                    }
                }
                if (isGPSEnabled) {
                    if (location == null)
                    {
                        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,60000,0, this);
                        Log.d("GPS Enabled", "GPS Enabled");
                        if (locationManager != null) {
                            location = locationManager
                                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                            if (location != null) {
                                latitude = location.getLatitude();
                                longitude = location.getLongitude();
                            }
                        }
                    }
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        return location;
    }
都不是locationManager.requestLocationUpdatesLocationManager.GPS\U提供程序,60000,0,此; nor locationManager.requestLocationUpdatesLocationManager.GPS_提供程序,60000,0,pi;他在耍花招

onLocationChanged内容

LongOperation是一个具有http调用的AsyncTask类


每n分钟,我们就要把LongOperationdoInBackground称为LongOperationdoInBackground;怎么做@Abhishek Chaubey..我已经添加了日志,…看,我在日志中每分钟都有一次更新,但在数据库中没有更新您正在请求onLocationchanged内部的位置更新。最初你曾要求过。一旦您成功请求,无论何时根据您的配置更改位置,都只会调用onLocationChanged。还有一个建议,而不是使用Android API 1位置管理器。尝试使用新的FusedLocationProviderApi。确切地说是@Vignesh…根据提到的时间60000,一个呼叫将被更改为onLocationChanged…如果您查看日志,它每分钟都显示我的位置…但是这些数据没有被发送到数据库…这是我最头疼的问题