Php 手机进入睡眠状态后,gps服务进入睡眠状态

Php 手机进入睡眠状态后,gps服务进入睡眠状态,php,android,gps,Php,Android,Gps,我有一个android应用程序,它由活动、接收器和服务组成。 “活动”仅在安装后启动一次,以设置用户名和密码并启动服务。接收器在手机启动后呼叫该服务。发生的情况是,该服务在手机进入睡眠状态后的一段时间进入睡眠状态,我需要它一直工作。我已经把对网站的呼叫放在一个线程中。这是服务 public class MyService extends Service { public int indikator=0; public String mojsadrzaj=new String(); public

我有一个android应用程序,它由活动、接收器和服务组成。 “活动”仅在安装后启动一次,以设置用户名和密码并启动服务。接收器在手机启动后呼叫该服务。发生的情况是,该服务在手机进入睡眠状态后的一段时间进入睡眠状态,我需要它一直工作。我已经把对网站的呼叫放在一个线程中。这是服务

public class MyService extends Service {
public int indikator=0;
public String mojsadrzaj=new String();
public String pib=new String();
public String username=new String();
public String password=new String();
public String url=new String();
public URL myURL;

@Override
public IBinder onBind(Intent intent) {

    return null;
}

@Override
public void onCreate() {
super.onCreate();


Toast.makeText(this,"Service created ...",Toast.LENGTH_LONG).show();



    final SQLiteDatabase db=openOrCreateDatabase("TruckMe", MODE_PRIVATE, null);



    String idvozaca=new String();
    db.execSQL("create table if not exists vozac (id INTEGER  PRIMARY KEY AUTOINCREMENT NOT NULL, idvozaca VARCHAR(15));");
    Cursor d=db.rawQuery("select idvozaca from vozac", null);


    if(d.getCount() > 0)
    {
        d.moveToLast();
        idvozaca=d.getString(d.getColumnIndex("idvozaca"));
        mojsadrzaj=idvozaca;

    }







    final Time t=new Time();



     final Handler handler = new Handler();
        final Runnable runnable = new Runnable() {
            public void run() {

                if(indikator != 0)
                {   


                try {

                    URL myURL = new URL(url);

                    URLConnection myURLConnection = myURL.openConnection();
                    myURLConnection.connect();


                    BufferedReader in = new BufferedReader(new InputStreamReader(myURLConnection.getInputStream()));
                    String inputLine;
while ((inputLine = in.readLine()) != null) 
    System.out.println(inputLine);
    in.close();

                } 
                catch (MalformedURLException e) { 
                    // new URL() failed
                    // ...
                } 
                catch (IOException e) {   
                    // openConnection() failed
                    // ...
                }





                }
                indikator=1;
                handler.postDelayed(this, 180000);

            }
        };






    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    criteria.setPowerRequirement(Criteria.POWER_LOW);





final   LocationManager m=(LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

String locationprovider =m.getBestProvider(criteria,true);


        LocationListener l=new LocationListener() {


                @Override
                public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onProviderEnabled(String arg0) {


                }

                @Override
                public void onProviderDisabled(String arg0) {


                }

                @Override
                public void onLocationChanged(Location arg0) {


                    String zauzetost=new String();
                     zauzetost="ZAUZET";

                    String format="MM/dd/yyyy";
                    SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.US);
                    String date= sdf.format(new Date());


                t.setToNow();   


                String longitude=new String();
                String latitude=new String();
                String speed=new String();

                if((int)arg0.getSpeed()==0)
                {
                    speed="0";
                }
                else
                {
                speed=""+(((int)arg0.getSpeed()*3600)/1000);
                }
                longitude=""+  arg0.getLongitude();
                latitude=""+ arg0.getLatitude();



                String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
                mydate=mydate.replaceAll("\\s","");

                url="http://www.compensatemeonline.com/truckmeonline/TruckMeOnline/S.php?id="+mojsadrzaj+"&a="+longitude+"&b="+latitude+"&c="+speed+"&d="+mydate+"&e="+date+"&f="+zauzetost;    
            Log.e("Poruka", url);

                    // TODO Auto-generated method stub

                }

            };




             runnable.run();

            m.requestLocationUpdates(locationprovider, 180000, 0, l);


        }











@Override
public int onStartCommand(Intent intent, int flags, int startId) {






   return START_STICKY;

}

@Override
public void onStart(Intent intent, int startId) {
    //Toast.makeText(this, "Service started onstart...",Toast.LENGTH_LONG).show();

}


@Override
public void onDestroy() {
super.onDestroy();
final SQLiteDatabase db=openOrCreateDatabase("TruckMe", MODE_PRIVATE, null);
db.execSQL("drop table vozac;");


}
}


由于我不想让我的服务永远处于休眠状态,如果我将m.RequestLocationUpdate(locationprovider,180000,0,l)减少到60000,请将从oncreate调用gps到onstartcommant的所有内容或我应该做的其他事情都放在一起。

持续打开gps和CPU将导致电池寿命极短。为什么这对用户有好处呢?因为它是一个应用程序,可以在用户未经通知的情况下跟踪用户。如果手机进入睡眠状态,我们不会一直呆在他不在的地方,不是吗。